Skip to content

Commit 204a775

Browse files
committed
fixed tests to be consistent in different env timezones
1 parent 7c8934a commit 204a775

File tree

2 files changed

+60
-10
lines changed

2 files changed

+60
-10
lines changed

jdbc-v2/src/test/java/com/clickhouse/jdbc/DataTypeTests.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import java.time.OffsetDateTime;
2929
import java.time.ZoneId;
3030
import java.time.ZonedDateTime;
31+
import java.time.format.DateTimeFormatter;
3132
import java.util.GregorianCalendar;
3233
import java.util.HashMap;
3334
import java.util.Map;
@@ -336,19 +337,20 @@ public void testDateTypes() throws SQLException {
336337
"'2106-02-07 06:28:15', '2106-02-07 06:28:15', " +
337338
"'2261-12-31 23:59:59.999', '2261-12-31 23:59:59.999999', '2261-12-31 23:59:59.999999999' )");
338339

339-
// Insert random (valid) values
340-
long now = System.currentTimeMillis();
341-
log.info("Random seed was: {}", now);
342340

343-
Date date = new Date(now);
344-
Date date32 = new Date(now);
345-
java.sql.Timestamp dateTime = new java.sql.Timestamp(now);
341+
final LocalDateTime now = LocalDateTime.now(ZoneId.of("America/Los_Angeles"));
342+
final Date date = Date.valueOf(now.toLocalDate());
343+
final Date date32 = Date.valueOf(now.toLocalDate());
344+
final java.sql.Timestamp dateTime = Timestamp.valueOf(now);
346345
dateTime.setNanos(0);
347-
java.sql.Timestamp dateTime32 = new java.sql.Timestamp(now);
346+
final java.sql.Timestamp dateTime32 = Timestamp.valueOf(now);
348347
dateTime32.setNanos(0);
349-
java.sql.Timestamp dateTime643 = new java.sql.Timestamp(now);
350-
java.sql.Timestamp dateTime646 = new java.sql.Timestamp(now);
351-
java.sql.Timestamp dateTime649 = new java.sql.Timestamp(now);
348+
final java.sql.Timestamp dateTime643 = Timestamp.valueOf(LocalDateTime.now(ZoneId.of("America/Los_Angeles")));
349+
dateTime643.setNanos(333000000);
350+
final java.sql.Timestamp dateTime646 = Timestamp.valueOf(LocalDateTime.now(ZoneId.of("America/Los_Angeles")));
351+
dateTime646.setNanos(333333000);
352+
final java.sql.Timestamp dateTime649 = Timestamp.valueOf(LocalDateTime.now(ZoneId.of("America/Los_Angeles")));
353+
dateTime649.setNanos(333333333);
352354

353355
try (Connection conn = getConnection()) {
354356
try (PreparedStatement stmt = conn.prepareStatement("INSERT INTO test_dates VALUES ( 4, ?, ?, ?, ?, ?, ?, ?)")) {

jdbc-v2/src/test/java/com/clickhouse/jdbc/PreparedStatementTest.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.clickhouse.jdbc;
22

3+
import com.clickhouse.data.ClickHouseVersion;
34
import com.clickhouse.jdbc.internal.DriverProperties;
45
import org.apache.commons.lang3.RandomStringUtils;
56
import org.testng.Assert;
@@ -9,13 +10,15 @@
910

1011
import java.sql.Array;
1112
import java.sql.Connection;
13+
import java.sql.Date;
1214
import java.sql.PreparedStatement;
1315
import java.sql.ResultSet;
1416
import java.sql.ResultSetMetaData;
1517
import java.sql.SQLException;
1618
import java.sql.Statement;
1719
import java.sql.Timestamp;
1820
import java.sql.Types;
21+
import java.time.LocalDate;
1922
import java.time.LocalDateTime;
2023
import java.util.ArrayList;
2124
import java.util.Arrays;
@@ -30,6 +33,7 @@
3033
import static org.testng.Assert.assertFalse;
3134
import static org.testng.Assert.assertNotNull;
3235
import static org.testng.Assert.assertNull;
36+
import static org.testng.Assert.assertThrows;
3337
import static org.testng.Assert.assertTrue;
3438

3539
public class PreparedStatementTest extends JdbcIntegrationTest {
@@ -825,4 +829,48 @@ public static Object[][] testReplaceQuestionMark_dataProvider() {
825829
{"INSERT INTO \"t2?\" VALUES (?, ?, 'some_?', ?)", "INSERT INTO \"t2?\" VALUES (NULL, NULL, 'some_?', NULL)"}
826830
};
827831
}
832+
833+
@Test(groups = { "integration" })
834+
public void testJdbcEscapeSyntax() throws Exception {
835+
if (ClickHouseVersion.of(getServerVersion()).check("(,23.8]")) {
836+
return; // there is no `timestamp` function TODO: fix in JDBC
837+
}
838+
try (Connection conn = getJdbcConnection()) {
839+
try (PreparedStatement stmt = conn.prepareStatement("SELECT {d '2021-11-01'} AS D, {ts '2021-08-01 12:34:56'} AS TS, " +
840+
"toInt32({fn ABS(-1)}) AS FNABS, {fn CONCAT('Hello', 'World')} AS FNCONCAT, {fn UCASE('hello')} AS FNUPPER, " +
841+
"{fn LCASE('HELLO')} AS FNLOWER, {fn LTRIM(' Hello ')} AS FNLTRIM, {fn RTRIM(' Hello ')} AS FNRTRIM, " +
842+
"toInt32({fn LENGTH('Hello')}) AS FNLENGTH, toInt32({fn POSITION('Hello', 'l')}) AS FNPOSITION, toInt32({fn MOD(10, 3)}) AS FNMOD, " +
843+
"{fn SQRT(9)} AS FNSQRT, {fn SUBSTRING('Hello', 3, 2)} AS FNSUBSTRING")) {
844+
try (ResultSet rs = stmt.executeQuery()) {
845+
assertTrue(rs.next());
846+
assertEquals(rs.getDate(1), Date.valueOf(LocalDate.of(2021, 11, 1)));
847+
//assertEquals(rs.getTimestamp(2), java.sql.Timestamp.valueOf(LocalDateTime.of(2021, 11, 1, 12, 34, 56)));
848+
assertEquals(rs.getInt(3), 1);
849+
assertEquals(rs.getInt("FNABS"), 1);
850+
assertEquals(rs.getString(4), "HelloWorld");
851+
assertEquals(rs.getString("FNCONCAT"), "HelloWorld");
852+
assertEquals(rs.getString(5), "HELLO");
853+
assertEquals(rs.getString("FNUPPER"), "HELLO");
854+
assertEquals(rs.getString(6), "hello");
855+
assertEquals(rs.getString("FNLOWER"), "hello");
856+
assertEquals(rs.getString(7), "Hello ");
857+
assertEquals(rs.getString("FNLTRIM"), "Hello ");
858+
assertEquals(rs.getString(8), " Hello");
859+
assertEquals(rs.getString("FNRTRIM"), " Hello");
860+
assertEquals(rs.getInt(9), 5);
861+
assertEquals(rs.getInt("FNLENGTH"), 5);
862+
assertEquals(rs.getInt(10), 3);
863+
assertEquals(rs.getInt("FNPOSITION"), 3);
864+
assertEquals(rs.getInt(11), 1);
865+
assertEquals(rs.getInt("FNMOD"), 1);
866+
assertEquals(rs.getDouble(12), 3);
867+
assertEquals(rs.getDouble("FNSQRT"), 3);
868+
assertEquals(rs.getString(13), "ll");
869+
assertEquals(rs.getString("FNSUBSTRING"), "ll");
870+
assertThrows(SQLException.class, () -> rs.getString(14));
871+
assertFalse(rs.next());
872+
}
873+
}
874+
}
875+
}
828876
}

0 commit comments

Comments
 (0)