This is an automated email from the ASF dual-hosted git repository.

rubenql pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git


The following commit(s) were added to refs/heads/main by this push:
     new 345961a9d2 [CALCITE-5921] SqlOperatorFixture.checkFails and 
checkAggFails don't check runtime failure (follow-up)
345961a9d2 is described below

commit 345961a9d21f1f669a452571fe70520185cbb424
Author: rubenada <rube...@gmail.com>
AuthorDate: Wed Oct 25 13:19:03 2023 +0100

    [CALCITE-5921] SqlOperatorFixture.checkFails and checkAggFails don't check 
runtime failure (follow-up)
---
 .../calcite/test/SqlOperatorUnparseTest.java       |  5 +++
 .../org/apache/calcite/test/SqlOperatorTest.java   | 43 +++++++++++++++++-----
 2 files changed, 38 insertions(+), 10 deletions(-)

diff --git 
a/core/src/test/java/org/apache/calcite/test/SqlOperatorUnparseTest.java 
b/core/src/test/java/org/apache/calcite/test/SqlOperatorUnparseTest.java
index 13512d1aa4..49872ef988 100644
--- a/core/src/test/java/org/apache/calcite/test/SqlOperatorUnparseTest.java
+++ b/core/src/test/java/org/apache/calcite/test/SqlOperatorUnparseTest.java
@@ -99,6 +99,11 @@ public class SqlOperatorUnparseTest extends 
CalciteSqlOperatorTest {
     }
   }
 
+  @Override @Disabled("Runtime error message differs after parsing and 
unparsing")
+  void testBitAndFuncRuntimeFails() {
+    super.testContainsSubstrFunc();
+  }
+
   // Every test that is Disabled below corresponds to a bug.
   // These tests should just be deleted when the corresponding bugs are fixed.
 
diff --git a/testkit/src/main/java/org/apache/calcite/test/SqlOperatorTest.java 
b/testkit/src/main/java/org/apache/calcite/test/SqlOperatorTest.java
index a9a24cfe92..891df133c3 100644
--- a/testkit/src/main/java/org/apache/calcite/test/SqlOperatorTest.java
+++ b/testkit/src/main/java/org/apache/calcite/test/SqlOperatorTest.java
@@ -919,8 +919,8 @@ public class SqlOperatorTest {
   void testCastWithRoundingToScalar(CastType castType, SqlOperatorFixture f) {
     f.setFor(SqlStdOperatorTable.CAST, VmName.EXPAND);
 
-    f.checkFails("cast(1.25 as int)", "INTEGER", true);
-    f.checkFails("cast(1.25E0 as int)", "INTEGER", true);
+    f.checkScalar("cast(1.25 as int)", 1, "INTEGER NOT NULL");
+    f.checkScalar("cast(1.25E0 as int)", 1, "INTEGER NOT NULL");
     if (!f.brokenTestsEnabled()) {
       return;
     }
@@ -960,8 +960,8 @@ public class SqlOperatorTest {
   void testCastDecimalToDoubleToInteger(CastType castType, SqlOperatorFixture 
f) {
     f.setFor(SqlStdOperatorTable.CAST, VmName.EXPAND);
 
-    f.checkFails("cast( cast(1.25 as double) as integer)", 
OUT_OF_RANGE_MESSAGE, true);
-    f.checkFails("cast( cast(-1.25 as double) as integer)", 
OUT_OF_RANGE_MESSAGE, true);
+    f.checkScalar("cast( cast(1.25 as double) as integer)", 1, "INTEGER NOT 
NULL");
+    f.checkScalar("cast( cast(-1.25 as double) as integer)", -1, "INTEGER NOT 
NULL");
     if (!f.brokenTestsEnabled()) {
       return;
     }
@@ -1222,7 +1222,11 @@ public class SqlOperatorTest {
           "12:42:25.34", "TIME(2) NOT NULL");
     }
 
-    f.checkFails("cast('nottime' as TIME)", BAD_DATETIME_MESSAGE, true);
+    if (castType == CastType.CAST) {
+      f.checkFails("cast('nottime' as TIME)", BAD_DATETIME_MESSAGE, true);
+    } else {
+      f.checkNull("cast('nottime' as TIME)");
+    }
     f.checkScalar("cast('1241241' as TIME)", "72:40:12", "TIME(0) NOT NULL");
     f.checkScalar("cast('12:54:78' as TIME)", "12:55:18", "TIME(0) NOT NULL");
     f.checkScalar("cast('12:34:5' as TIME)", "12:34:05", "TIME(0) NOT NULL");
@@ -1287,7 +1291,11 @@ public class SqlOperatorTest {
       f.checkScalar("cast('1945-1-24 12:23:34.454' as TIMESTAMP)",
           "1945-01-24 12:23:34", "TIMESTAMP(0) NOT NULL");
     }
-    f.checkFails("cast('nottime' as TIMESTAMP)", BAD_DATETIME_MESSAGE, true);
+    if (castType == CastType.CAST) {
+      f.checkFails("cast('nottime' as TIMESTAMP)", BAD_DATETIME_MESSAGE, true);
+    } else {
+      f.checkNull("cast('nottime' as TIMESTAMP)");
+    }
 
     // date <-> string
     f.checkCastToString("DATE '1945-02-24'", null, "1945-02-24", castType);
@@ -1297,7 +1305,11 @@ public class SqlOperatorTest {
     f.checkScalar("cast(' 1945-2-4 ' as DATE)", "1945-02-04", "DATE NOT NULL");
     f.checkScalar("cast('  1945-02-24  ' as DATE)",
         "1945-02-24", "DATE NOT NULL");
-    f.checkFails("cast('notdate' as DATE)", BAD_DATETIME_MESSAGE, true);
+    if (castType == CastType.CAST) {
+      f.checkFails("cast('notdate' as DATE)", BAD_DATETIME_MESSAGE, true);
+    } else {
+      f.checkNull("cast('notdate' as DATE)");
+    }
 
     f.checkScalar("cast('52534253' as DATE)", "7368-10-13", "DATE NOT NULL");
     f.checkScalar("cast('1945-30-24' as DATE)", "1947-06-26", "DATE NOT NULL");
@@ -1407,12 +1419,20 @@ public class SqlOperatorTest {
     f.checkBoolean("cast('  trUe' as boolean)", true);
     f.checkBoolean("cast('  tr' || 'Ue' as boolean)", true);
     f.checkBoolean("cast('  fALse' as boolean)", false);
-    f.checkFails("cast('unknown' as boolean)", INVALID_CHAR_MESSAGE, true);
+    if (castType == CastType.CAST) {
+      f.checkFails("cast('unknown' as boolean)", INVALID_CHAR_MESSAGE, true);
+    } else {
+      f.checkNull("cast('unknown' as boolean)");
+    }
 
     f.checkBoolean("cast(cast('true' as varchar(10))  as boolean)", true);
     f.checkBoolean("cast(cast('false' as varchar(10)) as boolean)", false);
-    f.checkFails("cast(cast('blah' as varchar(10)) as boolean)",
-        INVALID_CHAR_MESSAGE, true);
+    if (castType == CastType.CAST) {
+      f.checkFails("cast(cast('blah' as varchar(10)) as boolean)",
+          INVALID_CHAR_MESSAGE, true);
+    } else {
+      f.checkNull("cast(cast('blah' as varchar(10)) as boolean)");
+    }
   }
 
   @Test void testCastRowType() {
@@ -12913,7 +12933,10 @@ public class SqlOperatorTest {
         "cast(null AS BINARY)"};
     f.checkAgg("bit_and(x)", binaryValues, isSingle("02"));
     f.checkAgg("bit_and(x)", new String[]{"CAST(x'02' AS BINARY)"}, 
isSingle("02"));
+  }
 
+  @Test void testBitAndFuncRuntimeFails() {
+    final SqlOperatorFixture f = fixture();
     f.checkAggFails("bit_and(x)",
         new String[]{"CAST(x'0201' AS VARBINARY)", "CAST(x'02' AS VARBINARY)"},
         "Error while executing SQL"

Reply via email to