From ada98be3d7d212c1327f00bf3fd2ed1832a4483d Mon Sep 17 00:00:00 2001 From: Simon Cooper Date: Fri, 7 Nov 2025 15:42:43 +0000 Subject: [PATCH 1/2] Catch DateTimeException in EsqlDataTypeConverter --- .../esql/type/EsqlDataTypeConverter.java | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/type/EsqlDataTypeConverter.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/type/EsqlDataTypeConverter.java index a10094dd93997..87cfe68921c14 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/type/EsqlDataTypeConverter.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/type/EsqlDataTypeConverter.java @@ -73,6 +73,7 @@ import java.io.IOException; import java.math.BigInteger; +import java.time.DateTimeException; import java.time.Duration; import java.time.Instant; import java.time.Period; @@ -616,20 +617,36 @@ public static BytesRef stringToSpatial(String field) { } public static long dateTimeToLong(String dateTime) { - return DEFAULT_DATE_TIME_FORMATTER.parseMillis(dateTime); + try { + return DEFAULT_DATE_TIME_FORMATTER.parseMillis(dateTime); + } catch (DateTimeException e) { + throw new IllegalArgumentException(e); + } } public static long dateTimeToLong(String dateTime, DateFormatter formatter) { - return formatter == null ? dateTimeToLong(dateTime) : formatter.parseMillis(dateTime); + try { + return formatter == null ? dateTimeToLong(dateTime) : formatter.parseMillis(dateTime); + } catch (DateTimeException e) { + throw new IllegalArgumentException(e); + } } public static long dateNanosToLong(String dateNano) { - return dateNanosToLong(dateNano, DEFAULT_DATE_NANOS_FORMATTER); + try { + return dateNanosToLong(dateNano, DEFAULT_DATE_NANOS_FORMATTER); + } catch (DateTimeException e) { + throw new IllegalArgumentException(e); + } } public static long dateNanosToLong(String dateNano, DateFormatter formatter) { - Instant parsed = DateFormatters.from(formatter.parse(dateNano)).toInstant(); - return DateUtils.toLong(parsed); + try { + Instant parsed = DateFormatters.from(formatter.parse(dateNano)).toInstant(); + return DateUtils.toLong(parsed); + } catch (DateTimeException e) { + throw new IllegalArgumentException(e); + } } public static String dateWithTypeToString(long dateTime, DataType type) { From ade207b55c8e7820496d934c2b7a4f2809c0ac96 Mon Sep 17 00:00:00 2001 From: Simon Cooper Date: Fri, 7 Nov 2025 15:45:24 +0000 Subject: [PATCH 2/2] Update docs/changelog/137744.yaml --- docs/changelog/137744.yaml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 docs/changelog/137744.yaml diff --git a/docs/changelog/137744.yaml b/docs/changelog/137744.yaml new file mode 100644 index 0000000000000..07785a1247004 --- /dev/null +++ b/docs/changelog/137744.yaml @@ -0,0 +1,6 @@ +pr: 137744 +summary: Catch `DateTimeException` in `EsqlDataTypeConverter` +area: ES|QL +type: bug +issues: + - 137741