[CALCITE-6356] Upgrade Calcite to Avatica 1.25.0
Test cleanup as mentioned at CALCITE-6053
diff --git a/core/src/main/java/org/apache/calcite/util/Bug.java b/core/src/main/java/org/apache/calcite/util/Bug.java
index 84c1642..9343558 100644
--- a/core/src/main/java/org/apache/calcite/util/Bug.java
+++ b/core/src/main/java/org/apache/calcite/util/Bug.java
@@ -200,31 +200,11 @@
* Fix to be available with Avatica 1.24.0 [CALCITE-6053] */
public static final boolean CALCITE_6092_FIXED = false;
- /** Whether
- * <a href="https://issues.apache.org/jira/browse/CALCITE-6053">[CALCITE-6053]
- * Upgrade Calcite to Avatica 1.24.0</a> is fixed.
- */
- public static final boolean CALCITE_6053_FIXED = false;
-
- /** Whether
- * <a href="https://issues.apache.org/jira/browse/CALCITE-6248">[CALCITE-6248]
- * Illegal dates are accepted by casts</a> is fixed.
- * Fix to be available with Avatica 1.25.0 */
- public static final boolean CALCITE_6248_FIXED = false;
-
/**
* Use this to flag temporary code.
*/
public static final boolean TODO_FIXED = false;
- /** Whether
- * <a href="https://issues.apache.org/jira/browse/CALCITE-6282">[CALCITE-6282]
- * Avatica ignores time precision when returning TIME results</a> is fixed.
- * This should be removed once the bug is fixed in Avatica, and
- * Calcite switches to the most recent version of Avatica.
- * This is expected to be fixed in Avatica 1.25.0. */
- public static final boolean CALCITE_6282_FIXED = false;
-
/**
* Use this method to flag temporary code.
*
diff --git a/gradle.properties b/gradle.properties
index 1bf19c1..d63809f 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -29,7 +29,7 @@
# Release version can be generated by using -Prelease or -Prc=<int> arguments
calcite.version=1.37.0
# This is a version to be used from Maven repository. It can be overridden by localAvatica below
-calcite.avatica.version=1.23.0
+calcite.avatica.version=1.25.0
# The options below configures the use of local clone (e.g. testing development versions)
# You can pass un-comment it, or pass option -PlocalReleasePlugins, or -PlocalReleasePlugins=<path>
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 675ab85..9c5535e 100644
--- a/testkit/src/main/java/org/apache/calcite/test/SqlOperatorTest.java
+++ b/testkit/src/main/java/org/apache/calcite/test/SqlOperatorTest.java
@@ -1167,11 +1167,9 @@
"12:42:26", "TIME(0) NOT NULL");
}
- if (Bug.CALCITE_6282_FIXED) {
- // test precision
- f.checkScalar("cast(TIME '12:42:25.34' as TIME(2))",
- "12:42:25.34", "TIME(2) NOT NULL");
- }
+ // test precision
+ f.checkScalar("cast(TIME '12:42:25.34' as TIME(2))",
+ "12:42:25.34", "TIME(2) NOT NULL");
f.checkScalar("cast(DATE '1945-02-24' as DATE)",
"1945-02-24", "DATE NOT NULL");
@@ -1230,10 +1228,8 @@
f.checkScalar("cast('12:42:25.34' as TIME)",
"12:42:25", "TIME(0) NOT NULL");
- if (Bug.CALCITE_6282_FIXED) {
- f.checkScalar("cast('12:42:25.34' as TIME(2))",
- "12:42:25.34", "TIME(2) NOT NULL");
- }
+ f.checkScalar("cast('12:42:25.34' as TIME(2))",
+ "12:42:25.34", "TIME(2) NOT NULL");
if (castType == CastType.CAST) {
f.checkFails("cast('nottime' as TIME)", BAD_DATETIME_MESSAGE, true);
@@ -1270,28 +1266,26 @@
f.checkScalar("cast('2004-02-29' as TIMESTAMP)",
"2004-02-29 00:00:00", "TIMESTAMP(0) NOT NULL");
- if (Bug.CALCITE_6282_FIXED) {
- f.checkScalar("cast('1945-02-24 12:42:25.34' as TIMESTAMP(2))",
- "1945-02-24 12:42:25.34", "TIMESTAMP(2) NOT NULL");
- if (castType == CastType.CAST) {
- f.checkFails("cast('1945-2-2 12:2:5' as TIMESTAMP)",
- "Invalid DATE value, '1945-2-2 12:2:5'", true);
- f.checkFails("cast('1241241' as TIMESTAMP)",
- "Invalid DATE value, '1241241'", true);
- f.checkFails("cast('1945-20-24 12:42:25.34' as TIMESTAMP)",
- "Invalid DATE value, '1945-20-24 12:42:25.34'", true);
- f.checkFails("cast('1945-01-24 25:42:25.34' as TIMESTAMP)",
- "Value of HOUR field is out of range in '1945-01-24 25:42:25.34'", true);
- f.checkFails("cast('1945-1-24 12:23:34.454' as TIMESTAMP)",
- "Invalid DATE value, '1945-1-24 12:23:34.454'", true);
- } else {
- // test cases for 'SAFE_CAST' and 'TRY_CAST'
- f.checkNull("cast('1945-2-2 12:2:5' as TIMESTAMP)");
- f.checkNull("cast('1241241' as TIMESTAMP)");
- f.checkNull("cast('1945-20-24 12:42:25.34' as TIMESTAMP)");
- f.checkNull("cast('1945-01-24 25:42:25.34' as TIMESTAMP)");
- f.checkNull("cast('1945-1-24 12:23:34.454' as TIMESTAMP)");
- }
+ f.checkScalar("cast('1945-02-24 12:42:25.34' as TIMESTAMP(2))",
+ "1945-02-24 12:42:25.34", "TIMESTAMP(2) NOT NULL");
+ if (castType == CastType.CAST) {
+ f.checkFails("cast('1945-2-2 12:2:5' as TIMESTAMP)",
+ "Invalid DATE value, '1945-2-2 12:2:5'", true);
+ f.checkFails("cast('1241241' as TIMESTAMP)",
+ "Invalid DATE value, '1241241'", true);
+ f.checkFails("cast('1945-20-24 12:42:25.34' as TIMESTAMP)",
+ "Invalid DATE value, '1945-20-24 12:42:25.34'", true);
+ f.checkFails("cast('1945-01-24 25:42:25.34' as TIMESTAMP)",
+ "Value of HOUR field is out of range in '1945-01-24 25:42:25.34'", true);
+ f.checkFails("cast('1945-1-24 12:23:34.454' as TIMESTAMP)",
+ "Invalid DATE value, '1945-1-24 12:23:34.454'", true);
+ } else {
+ // test cases for 'SAFE_CAST' and 'TRY_CAST'
+ f.checkNull("cast('1945-2-2 12:2:5' as TIMESTAMP)");
+ f.checkNull("cast('1241241' as TIMESTAMP)");
+ f.checkNull("cast('1945-20-24 12:42:25.34' as TIMESTAMP)");
+ f.checkNull("cast('1945-01-24 25:42:25.34' as TIMESTAMP)");
+ f.checkNull("cast('1945-1-24 12:23:34.454' as TIMESTAMP)");
}
if (castType == CastType.CAST) {
f.checkFails("cast('nottime' as TIMESTAMP)", BAD_DATETIME_MESSAGE, true);
@@ -1313,14 +1307,12 @@
f.checkNull("cast('notdate' as DATE)");
}
- if (Bug.CALCITE_6248_FIXED) {
- if (castType == CastType.CAST) {
- f.checkFails("cast('52534253' as DATE)", BAD_DATETIME_MESSAGE, true);
- f.checkFails("cast('1945-30-24' as DATE)", BAD_DATETIME_MESSAGE, true);
- } else {
- f.checkNull("cast('52534253' as DATE)");
- f.checkNull("cast('1945-30-24' as DATE)");
- }
+ if (castType == CastType.CAST) {
+ f.checkFails("cast('52534253' as DATE)", BAD_DATETIME_MESSAGE, true);
+ f.checkFails("cast('1945-30-24' as DATE)", BAD_DATETIME_MESSAGE, true);
+ } else {
+ f.checkNull("cast('52534253' as DATE)");
+ f.checkNull("cast('1945-30-24' as DATE)");
}
// cast null
@@ -11545,16 +11537,14 @@
"(?s)Cannot apply 'FLOOR' to arguments .*", false);
f.checkScalar("floor(time '12:34:56' to minute)",
"12:34:00", "TIME(0) NOT NULL");
- if (Bug.CALCITE_6282_FIXED) {
- f.checkScalar("floor(timestamp '2015-02-19 12:34:56.78' to second)",
- "2015-02-19 12:34:56.00", "TIMESTAMP(2) NOT NULL");
- f.checkScalar("floor(timestamp '2015-02-19 12:34:56.78' to millisecond)",
- "2015-02-19 12:34:56.78", "TIMESTAMP(2) NOT NULL");
- f.checkScalar("floor(timestamp '2015-02-19 12:34:56.78' to microsecond)",
- "2015-02-19 12:34:56.78", "TIMESTAMP(2) NOT NULL");
- f.checkScalar("floor(timestamp '2015-02-19 12:34:56.78' to nanosecond)",
- "2015-02-19 12:34:56.78", "TIMESTAMP(2) NOT NULL");
- }
+ f.checkScalar("floor(timestamp '2015-02-19 12:34:56.78' to second)",
+ "2015-02-19 12:34:56.00", "TIMESTAMP(2) NOT NULL");
+ f.checkScalar("floor(timestamp '2015-02-19 12:34:56.78' to millisecond)",
+ "2015-02-19 12:34:56.78", "TIMESTAMP(2) NOT NULL");
+ f.checkScalar("floor(timestamp '2015-02-19 12:34:56.78' to microsecond)",
+ "2015-02-19 12:34:56.78", "TIMESTAMP(2) NOT NULL");
+ f.checkScalar("floor(timestamp '2015-02-19 12:34:56.78' to nanosecond)",
+ "2015-02-19 12:34:56.78", "TIMESTAMP(2) NOT NULL");
f.checkScalar("floor(timestamp '2015-02-19 12:34:56' to minute)",
"2015-02-19 12:34:00", "TIMESTAMP(0) NOT NULL");
f.checkScalar("floor(timestamp '2015-02-19 12:34:56' to year)",
@@ -11592,18 +11582,16 @@
"12:35:00", "TIME(0) NOT NULL");
f.checkScalar("ceil(time '12:59:56' to minute)",
"13:00:00", "TIME(0) NOT NULL");
- if (Bug.CALCITE_6282_FIXED) {
- f.checkScalar("ceil(timestamp '2015-02-19 12:34:56.78' to second)",
- "2015-02-19 12:34:57.00", "TIMESTAMP(2) NOT NULL");
- f.checkScalar("ceil(timestamp '2015-02-19 12:34:56.78' to millisecond)",
- "2015-02-19 12:34:56.78", "TIMESTAMP(2) NOT NULL");
- f.checkScalar("ceil(timestamp '2015-02-19 12:34:56.78' to microsecond)",
- "2015-02-19 12:34:56.78", "TIMESTAMP(2) NOT NULL");
- f.checkScalar("ceil(timestamp '2015-02-19 12:34:56.78' to nanosecond)",
- "2015-02-19 12:34:56.78", "TIMESTAMP(2) NOT NULL");
- f.checkScalar("ceil(timestamp '2015-02-19 12:34:56.00' to second)",
- "2015-02-19 12:34:56.00", "TIMESTAMP(2) NOT NULL");
- }
+ f.checkScalar("ceil(timestamp '2015-02-19 12:34:56.78' to second)",
+ "2015-02-19 12:34:57.00", "TIMESTAMP(2) NOT NULL");
+ f.checkScalar("ceil(timestamp '2015-02-19 12:34:56.78' to millisecond)",
+ "2015-02-19 12:34:56.78", "TIMESTAMP(2) NOT NULL");
+ f.checkScalar("ceil(timestamp '2015-02-19 12:34:56.78' to microsecond)",
+ "2015-02-19 12:34:56.78", "TIMESTAMP(2) NOT NULL");
+ f.checkScalar("ceil(timestamp '2015-02-19 12:34:56.78' to nanosecond)",
+ "2015-02-19 12:34:56.78", "TIMESTAMP(2) NOT NULL");
+ f.checkScalar("ceil(timestamp '2015-02-19 12:34:56.00' to second)",
+ "2015-02-19 12:34:56.00", "TIMESTAMP(2) NOT NULL");
f.checkScalar("ceil(timestamp '2015-02-19 12:34:56' to minute)",
"2015-02-19 12:35:00", "TIMESTAMP(0) NOT NULL");
f.checkScalar("ceil(timestamp '2015-02-19 12:34:56' to year)",
@@ -11736,30 +11724,26 @@
@Test void testTimestampAdd() {
final SqlOperatorFixture f = fixture();
f.setFor(SqlStdOperatorTable.TIMESTAMP_ADD, VmName.EXPAND);
- if (Bug.CALCITE_6282_FIXED) {
- MICROSECOND_VARIANTS.forEach(s ->
- f.checkScalar("timestampadd(" + s
- + ", 2000000, timestamp '2016-02-24 12:42:25')",
- "2016-02-24 12:42:27.000",
- "TIMESTAMP(3) NOT NULL"));
- }
+ MICROSECOND_VARIANTS.forEach(s ->
+ f.checkScalar("timestampadd(" + s
+ + ", 2000000, timestamp '2016-02-24 12:42:25')",
+ "2016-02-24 12:42:27.000",
+ "TIMESTAMP(3) NOT NULL"));
SECOND_VARIANTS.forEach(s ->
f.checkScalar("timestampadd(" + s
+ ", 2, timestamp '2016-02-24 12:42:25')",
"2016-02-24 12:42:27",
"TIMESTAMP(0) NOT NULL"));
- if (Bug.CALCITE_6282_FIXED) {
- NANOSECOND_VARIANTS.forEach(s ->
- f.checkScalar("timestampadd(" + s
- + ", 3000000000, timestamp '2016-02-24 12:42:25')",
- "2016-02-24 12:42:28.000",
- "TIMESTAMP(3) NOT NULL"));
- NANOSECOND_VARIANTS.forEach(s ->
- f.checkScalar("timestampadd(" + s
- + ", 2000000000, timestamp '2016-02-24 12:42:25')",
- "2016-02-24 12:42:27.000",
- "TIMESTAMP(3) NOT NULL"));
- }
+ NANOSECOND_VARIANTS.forEach(s ->
+ f.checkScalar("timestampadd(" + s
+ + ", 3000000000, timestamp '2016-02-24 12:42:25')",
+ "2016-02-24 12:42:28.000",
+ "TIMESTAMP(3) NOT NULL"));
+ NANOSECOND_VARIANTS.forEach(s ->
+ f.checkScalar("timestampadd(" + s
+ + ", 2000000000, timestamp '2016-02-24 12:42:25')",
+ "2016-02-24 12:42:27.000",
+ "TIMESTAMP(3) NOT NULL"));
MINUTE_VARIANTS.forEach(s ->
f.checkScalar("timestampadd(" + s
+ ", 2, timestamp '2016-02-24 12:42:25')",