Skip to content

Commit 4b119dc

Browse files
committed
Fix issue with assertion of DATE types
1 parent eabbe2e commit 4b119dc

File tree

4 files changed

+35
-23
lines changed

4 files changed

+35
-23
lines changed

x-pack/plugin/sql/qa/src/main/java/org/elasticsearch/xpack/sql/qa/jdbc/JdbcAssert.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@
3737
import static java.sql.Types.REAL;
3838
import static java.sql.Types.SMALLINT;
3939
import static java.sql.Types.TINYINT;
40+
import static org.elasticsearch.xpack.sql.qa.jdbc.JdbcTestUtils.convertDateToSystemTimezone;
41+
import static org.elasticsearch.xpack.sql.qa.jdbc.JdbcTestUtils.logResultSetMetadata;
42+
import static org.elasticsearch.xpack.sql.qa.jdbc.JdbcTestUtils.resultSetCurrentData;
4043
import static org.hamcrest.MatcherAssert.assertThat;
4144
import static org.hamcrest.Matchers.instanceOf;
4245
import static org.junit.Assert.assertEquals;
@@ -107,7 +110,7 @@ public static void assertResultSetMetadata(ResultSet expected, ResultSet actual,
107110
ResultSetMetaData actualMeta = actual.getMetaData();
108111

109112
if (logger != null) {
110-
JdbcTestUtils.logResultSetMetadata(actual, logger);
113+
logResultSetMetadata(actual, logger);
111114
}
112115

113116
if (expectedMeta.getColumnCount() != actualMeta.getColumnCount()) {
@@ -210,7 +213,7 @@ private static void doAssertResultSetData(ResultSet expected, ResultSet actual,
210213
assertTrue("Expected more data but no more entries found after [" + count + "]", actual.next());
211214

212215
if (logger != null) {
213-
logger.info(JdbcTestUtils.resultSetCurrentData(actual));
216+
logger.info(resultSetCurrentData(actual));
214217
}
215218

216219
for (int column = 1; column <= columns; column++) {
@@ -264,6 +267,10 @@ private static void doAssertResultSetData(ResultSet expected, ResultSet actual,
264267
else if (type == Types.TIMESTAMP || type == Types.TIMESTAMP_WITH_TIMEZONE) {
265268
assertEquals(msg, expected.getTimestamp(column), actual.getTimestamp(column));
266269
}
270+
// then date
271+
else if (type == Types.DATE) {
272+
assertEquals(msg, convertDateToSystemTimezone(expected.getDate(column)), actual.getDate(column));
273+
}
267274
// and floats/doubles
268275
else if (type == Types.DOUBLE) {
269276
assertEquals(msg, (double) expectedObject, (double) actualObject, lenientFloatingNumbers ? 1d : 0.0d);
@@ -301,14 +308,14 @@ else if (type == Types.VARCHAR && actualObject instanceof TemporalAmount) {
301308
} catch (AssertionError ae) {
302309
if (logger != null && actual.next()) {
303310
logger.info("^^^ Assertion failure ^^^");
304-
logger.info(JdbcTestUtils.resultSetCurrentData(actual));
311+
logger.info(resultSetCurrentData(actual));
305312
}
306313
throw ae;
307314
}
308315

309316
if (actual.next()) {
310317
fail("Elasticsearch [" + actual + "] still has data after [" + count + "] entries:\n"
311-
+ JdbcTestUtils.resultSetCurrentData(actual));
318+
+ resultSetCurrentData(actual));
312319
}
313320
}
314321

x-pack/plugin/sql/qa/src/main/java/org/elasticsearch/xpack/sql/qa/jdbc/JdbcTestUtils.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import java.util.jar.JarInputStream;
3939
import java.util.zip.ZipEntry;
4040

41+
import static java.time.ZoneOffset.UTC;
4142
import static org.elasticsearch.xpack.sql.action.BasicFormatter.FormatOption.CLI;
4243

4344
final class JdbcTestUtils {
@@ -240,4 +241,8 @@ static Time asTime(long millis, ZoneId zoneId) {
240241
return new Time(ZonedDateTime.ofInstant(Instant.ofEpochMilli(millis), zoneId)
241242
.toLocalTime().atDate(JdbcTestUtils.EPOCH).atZone(zoneId).toInstant().toEpochMilli());
242243
}
244+
245+
static Date convertDateToSystemTimezone(Date date) {
246+
return new Date(date.toLocalDate().atStartOfDay(UTC).toInstant().toEpochMilli());
247+
}
243248
}

x-pack/plugin/sql/qa/src/main/resources/datetime.csv-spec

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -133,15 +133,15 @@ DATE_TRUNC('mcs', '2019-09-04T11:22:33.123Z'::datetime)::string as dt_micro, DAT
133133
;
134134

135135
selectDateTruncWithDate
136-
schema::dt_mil:s|dt_cent:s|dt_dec:s|dt_year:s|dt_quarter:s|dt_month:s|dt_week:s|dt_day:s
137-
SELECT DATE_TRUNC('millennia', '2019-09-04'::date)::string as dt_mil, DATE_TRUNC('century', '2019-09-04'::date)::string as dt_cent,
138-
DATE_TRUNC('decades', '2019-09-04'::date)::string as dt_dec, DATE_TRUNC('year', '2019-09-04'::date)::string as dt_year,
139-
DATE_TRUNC('quarter', '2019-09-04'::date)::string as dt_quarter, DATE_TRUNC('month', '2019-09-04'::date)::string as dt_month,
140-
DATE_TRUNC('week', '2019-09-04'::date)::string as dt_week, DATE_TRUNC('day', '2019-09-04'::date)::string as dt_day;
141-
142-
dt_mil | dt_cent | dt_dec | dt_year | dt_quarter | dt_month | dt_week | dt_day
143-
-------------------------+--------------------------+--------------------------+--------------------------+--------------------------+--------------------------+--------------------------+-------------------------
144-
2000-01-01T00:00:00.000Z | 2000-01-01T00:00:00.000Z | 2010-01-01T00:00:00.000Z | 2019-01-01T00:00:00.000Z | 2019-07-01T00:00:00.000Z | 2019-09-01T00:00:00.000Z | 2019-09-02T00:00:00.000Z | 2019-09-04T00:00:00.000Z
136+
schema::dt_mil:date|dt_cent:date|dt_dec:date|dt_year:date|dt_quarter:date|dt_month:date|dt_week:date|dt_day:date
137+
SELECT DATE_TRUNC('millennia', '2019-09-04'::date) as dt_mil, DATE_TRUNC('century', '2019-09-04'::date) as dt_cent,
138+
DATE_TRUNC('decades', '2019-09-04'::date) as dt_dec, DATE_TRUNC('year', '2019-09-04'::date) as dt_year,
139+
DATE_TRUNC('quarter', '2019-09-04'::date) as dt_quarter, DATE_TRUNC('month', '2019-09-04'::date) as dt_month,
140+
DATE_TRUNC('week', '2019-09-04'::date) as dt_week, DATE_TRUNC('day', '2019-09-04'::date) as dt_day;
141+
142+
dt_mil | dt_cent | dt_dec | dt_year | dt_quarter | dt_month | dt_week | dt_day
143+
-----------+------------+------------+------------+-------------+------------+------------+-----------
144+
2000-01-01 | 2000-01-01 | 2010-01-01 | 2019-01-01 | 2019-07-01 | 2019-09-01 | 2019-09-02 | 2019-09-04
145145
;
146146

147147
selectDateTruncWithField

x-pack/plugin/sql/qa/src/main/resources/docs/docs.csv-spec

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2444,24 +2444,24 @@ SELECT DATE_TRUNC('mi', '2019-09-04T11:22:33.123Z'::datetime) AS mins;
24442444
;
24452445

24462446
truncateDateDecades
2447-
schema::decades:s
2447+
schema::decades:date
24482448
// tag::truncateDateDecades
2449-
SELECT DATE_TRUNC('decade', CAST('2019-09-04' AS DATE))::string AS decades;
2449+
SELECT DATE_TRUNC('decade', CAST('2019-09-04' AS DATE)) AS decades;
24502450

2451-
decades
2452-
------------------------
2453-
2010-01-01T00:00:00.000Z
2451+
decades
2452+
----------
2453+
2010-01-01
24542454
// end::truncateDateDecades
24552455
;
24562456

24572457
truncateDateQuarter
2458-
schema::quarter:s
2458+
schema::quarter:date
24592459
// tag::truncateDateQuarter
2460-
SELECT DATE_TRUNC('quarters', CAST('2019-09-04' AS DATE))::string AS quarter;
2460+
SELECT DATE_TRUNC('quarters', CAST('2019-09-04' AS DATE)) AS quarter;
24612461

2462-
quarter
2463-
------------------------
2464-
2019-07-01T00:00:00.000Z
2462+
quarter
2463+
----------
2464+
2019-07-01
24652465
// end::truncateDateQuarter
24662466
;
24672467

0 commit comments

Comments
 (0)