Skip to content

Commit 370c230

Browse files
authored
fix(integ): align DateTimeComparisonIT today's date to UTC (opensearch-project#5543)
The TIME/DATE/TIMESTAMP comparison test parameters compute `today` via `LocalDate.now().toString()` (JVM-local zone), but the analytics-engine route lowers `CURRENT_DATE` through DataFusion using UTC. When a run starts after 17:00 PDT (= 00:00 UTC of the next day), the JVM date and the engine date disagree by one day, so TIME-to-TIMESTAMP coercion produces tomorrow's timestamp and 24 parameterized cases fail with expected=true got=false (and the inverse). Switch to `LocalDate.now(ZoneOffset.UTC)` so the test parameters use the same date the engine uses, regardless of when or where the run starts. Before/after (CalciteDateTimeComparisonIT, analytics-engine route, running at 18:43 PDT 2026-06-10): before: tests=191 failures=24 errors=0 after: tests=191 failures=0 errors=0 Signed-off-by: Kai Huang <ahkcs@amazon.com>
1 parent d08df37 commit 370c230

1 file changed

Lines changed: 15 additions & 14 deletions

File tree

integ-test/src/test/java/org/opensearch/sql/ppl/DateTimeComparisonIT.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
1818
import java.io.IOException;
1919
import java.time.LocalDate;
20+
import java.time.ZoneOffset;
2021
import java.util.Arrays;
2122
import java.util.TimeZone;
2223
import org.junit.After;
@@ -133,7 +134,7 @@ public static Iterable<Object[]> compareTwoTimestamps() {
133134

134135
@ParametersFactory(argumentFormatting = "%1$s => %3$s")
135136
public static Iterable<Object[]> compareEqTimestampWithOtherTypes() {
136-
var today = LocalDate.now().toString();
137+
var today = LocalDate.now(ZoneOffset.UTC).toString();
137138
return Arrays.asList(
138139
$$(
139140
$("TIMESTAMP('2020-09-16 00:00:00') = DATE('2020-09-16')", "ts_d_t", true),
@@ -148,7 +149,7 @@ public static Iterable<Object[]> compareEqTimestampWithOtherTypes() {
148149

149150
@ParametersFactory(argumentFormatting = "%1$s => %3$s")
150151
public static Iterable<Object[]> compareEqDateWithOtherTypes() {
151-
var today = LocalDate.now().toString();
152+
var today = LocalDate.now(ZoneOffset.UTC).toString();
152153
return Arrays.asList(
153154
$$(
154155
$("DATE('2020-09-16') = TIMESTAMP('2020-09-16 00:00:00')", "d_ts_t", true),
@@ -163,7 +164,7 @@ public static Iterable<Object[]> compareEqDateWithOtherTypes() {
163164

164165
@ParametersFactory(argumentFormatting = "%1$s => %3$s")
165166
public static Iterable<Object[]> compareEqTimeWithOtherTypes() {
166-
var today = LocalDate.now().toString();
167+
var today = LocalDate.now(ZoneOffset.UTC).toString();
167168
return Arrays.asList(
168169
$$(
169170
$("TIME('10:20:30') = TIMESTAMP('" + today + " 10:20:30')", "t_ts_t", true),
@@ -178,7 +179,7 @@ public static Iterable<Object[]> compareEqTimeWithOtherTypes() {
178179

179180
@ParametersFactory(argumentFormatting = "%1$s => %3$s")
180181
public static Iterable<Object[]> compareNeqTimestampWithOtherTypes() {
181-
var today = LocalDate.now().toString();
182+
var today = LocalDate.now(ZoneOffset.UTC).toString();
182183
return Arrays.asList(
183184
$$(
184185
$("TIMESTAMP('2020-09-16 10:20:30') != DATE('1961-04-12')", "ts_d_t", true),
@@ -193,7 +194,7 @@ public static Iterable<Object[]> compareNeqTimestampWithOtherTypes() {
193194

194195
@ParametersFactory(argumentFormatting = "%1$s => %3$s")
195196
public static Iterable<Object[]> compareNeqDateWithOtherTypes() {
196-
var today = LocalDate.now().toString();
197+
var today = LocalDate.now(ZoneOffset.UTC).toString();
197198
return Arrays.asList(
198199
$$(
199200
$("DATE('2020-09-16') != TIMESTAMP('1961-04-12 09:07:00')", "d_ts_t", true),
@@ -208,7 +209,7 @@ public static Iterable<Object[]> compareNeqDateWithOtherTypes() {
208209

209210
@ParametersFactory(argumentFormatting = "%1$s => %3$s")
210211
public static Iterable<Object[]> compareNeqTimeWithOtherTypes() {
211-
var today = LocalDate.now().toString();
212+
var today = LocalDate.now(ZoneOffset.UTC).toString();
212213
return Arrays.asList(
213214
$$(
214215
$("TIME('22:15:07') != TIMESTAMP('1984-12-15 22:15:07')", "t_ts_t", true),
@@ -223,7 +224,7 @@ public static Iterable<Object[]> compareNeqTimeWithOtherTypes() {
223224

224225
@ParametersFactory(argumentFormatting = "%1$s => %3$s")
225226
public static Iterable<Object[]> compareLtTimestampWithOtherTypes() {
226-
var today = LocalDate.now().toString();
227+
var today = LocalDate.now(ZoneOffset.UTC).toString();
227228
return Arrays.asList(
228229
$$(
229230
$("TIMESTAMP('2020-09-16 10:20:30') < DATE('2077-04-12')", "ts_d_t", true),
@@ -252,7 +253,7 @@ public static Iterable<Object[]> compareLtDateWithOtherTypes() {
252253

253254
@ParametersFactory(argumentFormatting = "%1$s => %3$s")
254255
public static Iterable<Object[]> compareLtTimeWithOtherTypes() {
255-
var today = LocalDate.now().toString();
256+
var today = LocalDate.now(ZoneOffset.UTC).toString();
256257
return Arrays.asList(
257258
$$(
258259
$("TIME('22:15:07') < TIMESTAMP('2242-12-15 22:15:07')", "t_ts_t", true),
@@ -267,7 +268,7 @@ public static Iterable<Object[]> compareLtTimeWithOtherTypes() {
267268

268269
@ParametersFactory(argumentFormatting = "%1$s => %3$s")
269270
public static Iterable<Object[]> compareGtTimestampWithOtherTypes() {
270-
var today = LocalDate.now().toString();
271+
var today = LocalDate.now(ZoneOffset.UTC).toString();
271272
return Arrays.asList(
272273
$$(
273274
$("TIMESTAMP('2020-09-16 10:20:30') > DATE('1961-04-12')", "ts_d_t", true),
@@ -296,7 +297,7 @@ public static Iterable<Object[]> compareGtDateWithOtherTypes() {
296297

297298
@ParametersFactory(argumentFormatting = "%1$s => %3$s")
298299
public static Iterable<Object[]> compareGtTimeWithOtherTypes() {
299-
var today = LocalDate.now().toString();
300+
var today = LocalDate.now(ZoneOffset.UTC).toString();
300301
return Arrays.asList(
301302
$$(
302303
$("TIME('22:15:07') > TIMESTAMP('1984-12-15 22:15:07')", "t_ts_t", true),
@@ -311,7 +312,7 @@ public static Iterable<Object[]> compareGtTimeWithOtherTypes() {
311312

312313
@ParametersFactory(argumentFormatting = "%1$s => %3$s")
313314
public static Iterable<Object[]> compareLteTimestampWithOtherTypes() {
314-
var today = LocalDate.now().toString();
315+
var today = LocalDate.now(ZoneOffset.UTC).toString();
315316
return Arrays.asList(
316317
$$(
317318
$("TIMESTAMP('2020-09-16 10:20:30') <= DATE('2077-04-12')", "ts_d_t", true),
@@ -340,7 +341,7 @@ public static Iterable<Object[]> compareLteDateWithOtherTypes() {
340341

341342
@ParametersFactory(argumentFormatting = "%1$s => %3$s")
342343
public static Iterable<Object[]> compareLteTimeWithOtherTypes() {
343-
var today = LocalDate.now().toString();
344+
var today = LocalDate.now(ZoneOffset.UTC).toString();
344345
return Arrays.asList(
345346
$$(
346347
$("TIME('10:20:30') <= TIMESTAMP('" + today + " 10:20:30')", "t_ts_t", true),
@@ -355,7 +356,7 @@ public static Iterable<Object[]> compareLteTimeWithOtherTypes() {
355356

356357
@ParametersFactory(argumentFormatting = "%1$s => %3$s")
357358
public static Iterable<Object[]> compareGteTimestampWithOtherTypes() {
358-
var today = LocalDate.now().toString();
359+
var today = LocalDate.now(ZoneOffset.UTC).toString();
359360
return Arrays.asList(
360361
$$(
361362
$("TIMESTAMP('2020-09-16 10:20:30') >= DATE('1961-04-12')", "ts_d_t", true),
@@ -384,7 +385,7 @@ public static Iterable<Object[]> compareGteDateWithOtherTypes() {
384385

385386
@ParametersFactory(argumentFormatting = "%1$s => %3$s")
386387
public static Iterable<Object[]> compareGteTimeWithOtherTypes() {
387-
var today = LocalDate.now().toString();
388+
var today = LocalDate.now(ZoneOffset.UTC).toString();
388389
return Arrays.asList(
389390
$$(
390391
$("TIME('10:20:30') >= TIMESTAMP('" + today + " 10:20:30')", "t_ts_t", true),

0 commit comments

Comments
 (0)