From 2c75b474db029d5e3e27856a897cf6f0ee43f3cc Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Thu, 6 Jul 2023 11:47:19 -0700 Subject: [PATCH 1/2] Fix ColumnSignature error message and jdk17 test issue. On jdk17, the "problem" part of the error message could change from NullPointerException to: Cannot invoke "String.length()" because "s" is null Due to the new more-helpful NPEs in Java 17. This broke the expectation and led to test failures on this case. This patch fixes the problem by improving the error message so it isn't a generic NullPointerException. --- .../java/org/apache/druid/segment/column/ColumnSignature.java | 2 +- .../java/org/apache/druid/sql/calcite/CalciteInsertDmlTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/segment/column/ColumnSignature.java b/processing/src/main/java/org/apache/druid/segment/column/ColumnSignature.java index 62553ddaf4e9..2ecd4b9ab439 100644 --- a/processing/src/main/java/org/apache/druid/segment/column/ColumnSignature.java +++ b/processing/src/main/java/org/apache/druid/segment/column/ColumnSignature.java @@ -50,7 +50,7 @@ class ColumnSignature // Name must be nonnull, but type can be null (if the type is unknown) if (name == null || name.isEmpty()) { - throw new IAE(name, "Column name must be non-empty"); + throw new IAE("Column name must be provided and non-empty", name); } } diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteInsertDmlTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteInsertDmlTest.java index 71672ae8d510..10d0f4096d8f 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteInsertDmlTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteInsertDmlTest.java @@ -1435,7 +1435,7 @@ public void testErrorWithUnableToConstructColumnSignatureWithExtern() "general" ) .expectMessageContains( - "Cannot construct instance of `org.apache.druid.segment.column.ColumnSignature`, problem: `java.lang.NullPointerException`\n" + "Cannot construct instance of `org.apache.druid.segment.column.ColumnSignature`, problem: Column name must be provided and non-empty" ) ) .verify(); From 0eb0f0c531469c859636c8a44c3afefc0cc5b493 Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Thu, 6 Jul 2023 11:57:22 -0700 Subject: [PATCH 2/2] Fix format. --- .../java/org/apache/druid/segment/column/ColumnSignature.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/processing/src/main/java/org/apache/druid/segment/column/ColumnSignature.java b/processing/src/main/java/org/apache/druid/segment/column/ColumnSignature.java index 2ecd4b9ab439..2ea9f9606062 100644 --- a/processing/src/main/java/org/apache/druid/segment/column/ColumnSignature.java +++ b/processing/src/main/java/org/apache/druid/segment/column/ColumnSignature.java @@ -50,7 +50,7 @@ class ColumnSignature // Name must be nonnull, but type can be null (if the type is unknown) if (name == null || name.isEmpty()) { - throw new IAE("Column name must be provided and non-empty", name); + throw new IAE("Column name must be provided and non-empty"); } }