Repository: calcite
Updated Branches:
refs/heads/master c8462e1ac -> f22a9965a
[CALCITE-1807] Upgrade to Avatica 1.10.0
Includes fix to [CALCITE-1664] CAST('<string>' as TIMESTAMP) adds part of
sub-second fraction to the value
Replace uses of DateTimeUtils.GMT_Zone with UTC_ZONE.
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/915c218b
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/915c218b
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/915c218b
Branch: refs/heads/master
Commit: 915c218b0fcbff26652071d267903d97875c7b9e
Parents: c8462e1
Author: Julian Hyde <[email protected]>
Authored: Tue May 30 11:18:38 2017 -0700
Committer: Julian Hyde <[email protected]>
Committed: Wed May 31 08:17:27 2017 -0700
----------------------------------------------------------------------
core/src/main/codegen/templates/Parser.jj | 6 +++---
core/src/main/java/org/apache/calcite/rex/RexLiteral.java | 4 ++--
core/src/main/java/org/apache/calcite/sql/SqlDialect.java | 4 ++--
core/src/main/java/org/apache/calcite/util/Util.java | 2 +-
.../java/org/apache/calcite/sql/parser/SqlParserTest.java | 9 ++++++---
.../test/java/org/apache/calcite/test/CalciteAssert.java | 2 +-
core/src/test/java/org/apache/calcite/test/JdbcTest.java | 2 +-
.../test/java/org/apache/calcite/test/SqlLimitsTest.java | 2 +-
core/src/test/resources/sql/misc.iq | 4 +---
.../apache/calcite/adapter/druid/DruidConnectionImpl.java | 2 +-
.../org/apache/calcite/adapter/file/FileRowConverter.java | 2 +-
pom.xml | 2 +-
12 files changed, 21 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/915c218b/core/src/main/codegen/templates/Parser.jj
----------------------------------------------------------------------
diff --git a/core/src/main/codegen/templates/Parser.jj
b/core/src/main/codegen/templates/Parser.jj
index c84ebe6..b776e92 100644
--- a/core/src/main/codegen/templates/Parser.jj
+++ b/core/src/main/codegen/templates/Parser.jj
@@ -418,7 +418,7 @@ JAVACODE void checkNonQueryExpression(ExprContext
exprContext)
JAVACODE SqlDateLiteral parseDateLiteral(String s, SqlParserPos pos) {
String dateStr = SqlParserUtil.parseString(s);
Calendar cal = DateTimeUtils.parseDateFormat(
- dateStr, DateTimeUtils.DATE_FORMAT_STRING, DateTimeUtils.GMT_ZONE);
+ dateStr, DateTimeUtils.DATE_FORMAT_STRING, DateTimeUtils.UTC_ZONE);
if (null == cal) {
throw SqlUtil.newContextException(pos,
RESOURCE.illegalLiteral("DATE", s,
@@ -431,7 +431,7 @@ JAVACODE SqlTimeLiteral parseTimeLiteral(String s,
SqlParserPos pos) {
String dateStr = SqlParserUtil.parseString(s);
DateTimeUtils.PrecisionTime pt =
DateTimeUtils.parsePrecisionDateTimeLiteral(
- dateStr, DateTimeUtils.TIME_FORMAT_STRING, DateTimeUtils.GMT_ZONE);
+ dateStr, DateTimeUtils.TIME_FORMAT_STRING, DateTimeUtils.UTC_ZONE);
if (null == pt) {
throw SqlUtil.newContextException(pos,
RESOURCE.illegalLiteral("TIME", s,
@@ -444,7 +444,7 @@ JAVACODE SqlTimestampLiteral parseTimestampLiteral(String
s, SqlParserPos pos) {
String dateStr = SqlParserUtil.parseString(s);
DateTimeUtils.PrecisionTime pt =
DateTimeUtils.parsePrecisionDateTimeLiteral(
- dateStr, DateTimeUtils.TIMESTAMP_FORMAT_STRING,
DateTimeUtils.GMT_ZONE);
+ dateStr, DateTimeUtils.TIMESTAMP_FORMAT_STRING,
DateTimeUtils.UTC_ZONE);
if (null == pt) {
throw SqlUtil.newContextException(pos,
RESOURCE.illegalLiteral("TIMESTAMP", s,
http://git-wip-us.apache.org/repos/asf/calcite/blob/915c218b/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
b/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
index 5bfd08e..f9be2bb 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexLiteral.java
@@ -216,7 +216,7 @@ public class RexLiteral extends RexNode {
case TIME:
case TIMESTAMP:
return value instanceof Calendar
- && ((Calendar) value).getTimeZone().equals(DateTimeUtils.GMT_ZONE);
+ && ((Calendar) value).getTimeZone().equals(DateTimeUtils.UTC_ZONE);
case INTERVAL_YEAR:
case INTERVAL_YEAR_MONTH:
case INTERVAL_MONTH:
@@ -520,7 +520,7 @@ public class RexLiteral extends RexNode {
case TIME:
case TIMESTAMP:
String format = getCalendarFormat(typeName);
- TimeZone tz = DateTimeUtils.GMT_ZONE;
+ TimeZone tz = DateTimeUtils.UTC_ZONE;
Calendar cal = null;
if (typeName == SqlTypeName.DATE) {
cal =
http://git-wip-us.apache.org/repos/asf/calcite/blob/915c218b/core/src/main/java/org/apache/calcite/sql/SqlDialect.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/sql/SqlDialect.java
b/core/src/main/java/org/apache/calcite/sql/SqlDialect.java
index 3f9e6b0..27691fb 100644
--- a/core/src/main/java/org/apache/calcite/sql/SqlDialect.java
+++ b/core/src/main/java/org/apache/calcite/sql/SqlDialect.java
@@ -463,7 +463,7 @@ public class SqlDialect {
* <blockquote><code>quoteTimestampLiteral(new Timestamp(0));</code>
* </blockquote>
*
- * returns {@code TIMESTAMP '1970-01-01 00:00:00'}, regardless of the JVM's
+ * <p>returns {@code TIMESTAMP '1970-01-01 00:00:00'}, regardless of the
JVM's
* time zone.
*
* @param timestamp Timestamp
@@ -474,7 +474,7 @@ public class SqlDialect {
new SimpleDateFormat(
"'TIMESTAMP' ''yyyy-MM-DD HH:mm:SS''",
Locale.ROOT);
- format.setTimeZone(DateTimeUtils.GMT_ZONE);
+ format.setTimeZone(DateTimeUtils.UTC_ZONE);
return format.format(timestamp);
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/915c218b/core/src/main/java/org/apache/calcite/util/Util.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/Util.java
b/core/src/main/java/org/apache/calcite/util/Util.java
index 24d9ab5..5e26fd7 100644
--- a/core/src/main/java/org/apache/calcite/util/Util.java
+++ b/core/src/main/java/org/apache/calcite/util/Util.java
@@ -2417,7 +2417,7 @@ public class Util {
/** Creates a {@link Calendar} in the GMT time zone and root locale.
* Does not use the time zone or locale. */
public static Calendar calendar() {
- return Calendar.getInstance(DateTimeUtils.GMT_ZONE, Locale.ROOT);
+ return Calendar.getInstance(DateTimeUtils.UTC_ZONE, Locale.ROOT);
}
//~ Inner Classes ----------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/915c218b/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java
----------------------------------------------------------------------
diff --git
a/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java
b/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java
index bb74daa..f4baa86 100644
--- a/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java
+++ b/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java
@@ -2233,10 +2233,10 @@ public class SqlParserTest {
"TIMESTAMP '2004-06-01 15:55:55.123'");
checkExp(
"TIMESTAMP '2004-06-01 15:55:55.1236'",
- "TIMESTAMP '2004-06-01 15:55:55.124'");
+ "TIMESTAMP '2004-06-01 15:55:55.123'");
checkExp(
"TIMESTAMP '2004-06-01 15:55:55.9999'",
- "TIMESTAMP '2004-06-01 15:55:56.000'");
+ "TIMESTAMP '2004-06-01 15:55:55.999'");
checkExpSame("NULL");
}
@@ -3684,10 +3684,14 @@ public class SqlParserTest {
// Date literals
checkExp("DATE '2004-12-01'", "DATE '2004-12-01'");
+
+ // Time literals
checkExp("TIME '12:01:01'", "TIME '12:01:01'");
checkExp("TIME '12:01:01.'", "TIME '12:01:01'");
checkExp("TIME '12:01:01.000'", "TIME '12:01:01.000'");
checkExp("TIME '12:01:01.001'", "TIME '12:01:01.001'");
+
+ // Timestamp literals
checkExp(
"TIMESTAMP '2004-12-01 12:01:01'",
"TIMESTAMP '2004-12-01 12:01:01'");
@@ -3697,7 +3701,6 @@ public class SqlParserTest {
checkExp(
"TIMESTAMP '2004-12-01 12:01:01.'",
"TIMESTAMP '2004-12-01 12:01:01'");
- checkExpSame("TIMESTAMP '2004-12-01 12:01:01.1'");
// Failures.
checkFails("^DATE '12/21/99'^", "(?s).*Illegal DATE literal.*");
http://git-wip-us.apache.org/repos/asf/calcite/blob/915c218b/core/src/test/java/org/apache/calcite/test/CalciteAssert.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/CalciteAssert.java
b/core/src/test/java/org/apache/calcite/test/CalciteAssert.java
index 370ba99..9829997 100644
--- a/core/src/test/java/org/apache/calcite/test/CalciteAssert.java
+++ b/core/src/test/java/org/apache/calcite/test/CalciteAssert.java
@@ -131,7 +131,7 @@ public class CalciteAssert {
private static final DateFormat UTC_TIME_FORMAT;
private static final DateFormat UTC_TIMESTAMP_FORMAT;
static {
- final TimeZone utc = DateTimeUtils.GMT_ZONE;
+ final TimeZone utc = DateTimeUtils.UTC_ZONE;
UTC_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd", Locale.ROOT);
UTC_DATE_FORMAT.setTimeZone(utc);
UTC_TIME_FORMAT = new SimpleDateFormat("HH:mm:ss", Locale.ROOT);
http://git-wip-us.apache.org/repos/asf/calcite/blob/915c218b/core/src/test/java/org/apache/calcite/test/JdbcTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/JdbcTest.java
b/core/src/test/java/org/apache/calcite/test/JdbcTest.java
index d97035d..825babe 100644
--- a/core/src/test/java/org/apache/calcite/test/JdbcTest.java
+++ b/core/src/test/java/org/apache/calcite/test/JdbcTest.java
@@ -5017,7 +5017,7 @@ public class JdbcTest {
fail("expected error, got " + resultSet);
} catch (SQLException e) {
assertThat(e.getMessage(),
- equalTo(
+ containsString(
"exception while executing query: unbound
parameter"));
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/915c218b/core/src/test/java/org/apache/calcite/test/SqlLimitsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/SqlLimitsTest.java
b/core/src/test/java/org/apache/calcite/test/SqlLimitsTest.java
index 298830b..86c55f0 100644
--- a/core/src/test/java/org/apache/calcite/test/SqlLimitsTest.java
+++ b/core/src/test/java/org/apache/calcite/test/SqlLimitsTest.java
@@ -195,7 +195,7 @@ public class SqlLimitsTest {
} else if (o instanceof Calendar) {
Calendar calendar = (Calendar) o;
DateFormat dateFormat = getDateFormat(type.getSqlTypeName());
- dateFormat.setTimeZone(DateTimeUtils.GMT_ZONE);
+ dateFormat.setTimeZone(DateTimeUtils.UTC_ZONE);
s = dateFormat.format(calendar.getTime());
} else {
s = o.toString();
http://git-wip-us.apache.org/repos/asf/calcite/blob/915c218b/core/src/test/resources/sql/misc.iq
----------------------------------------------------------------------
diff --git a/core/src/test/resources/sql/misc.iq
b/core/src/test/resources/sql/misc.iq
index 0ba3335..cbf12fe 100644
--- a/core/src/test/resources/sql/misc.iq
+++ b/core/src/test/resources/sql/misc.iq
@@ -1915,8 +1915,6 @@ EnumerableCalc(expr#0=[{inputs}], expr#1=[2016-02-26
19:06:00.123], expr#2=[2016
!plan
# [CALCITE-1664] CAST('<string>' as TIMESTAMP) adds part of sub-second
fraction to the value
-# The following output is incorrect (i.e. demonstrates the bug), but will
become
-# correct when we upgrade to Avatica-1.10 (where the bug is fixed).
select
TIMESTAMP '2016-02-26 19:06:00.12345678',
CAST('2016-02-26 19:06:00.12345678' as TIMESTAMP),
@@ -1926,7 +1924,7 @@ select
+---------------------+---------------------+--------+
| EXPR$0 | EXPR$1 | EXPR$2 |
+---------------------+---------------------+--------+
-| 2016-02-26 19:06:00 | 2016-02-26 22:31:46 | 123456 |
+| 2016-02-26 19:06:00 | 2016-02-26 19:06:00 | 0 |
+---------------------+---------------------+--------+
(1 row)
http://git-wip-us.apache.org/repos/asf/calcite/blob/915c218b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java
----------------------------------------------------------------------
diff --git
a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java
b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java
index a1975eb..2e278e8 100644
---
a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java
+++
b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidConnectionImpl.java
@@ -72,7 +72,7 @@ class DruidConnectionImpl implements DruidConnection {
private static final SimpleDateFormat UTC_TIMESTAMP_FORMAT;
static {
- final TimeZone utc = DateTimeUtils.GMT_ZONE;
+ final TimeZone utc = DateTimeUtils.UTC_ZONE;
UTC_TIMESTAMP_FORMAT =
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ROOT);
UTC_TIMESTAMP_FORMAT.setTimeZone(utc);
http://git-wip-us.apache.org/repos/asf/calcite/blob/915c218b/file/src/main/java/org/apache/calcite/adapter/file/FileRowConverter.java
----------------------------------------------------------------------
diff --git
a/file/src/main/java/org/apache/calcite/adapter/file/FileRowConverter.java
b/file/src/main/java/org/apache/calcite/adapter/file/FileRowConverter.java
index 827bf59..3a635e4 100644
--- a/file/src/main/java/org/apache/calcite/adapter/file/FileRowConverter.java
+++ b/file/src/main/java/org/apache/calcite/adapter/file/FileRowConverter.java
@@ -324,7 +324,7 @@ class FileRowConverter {
}
private java.util.Date parseDate(String string) {
- Parser parser = new Parser(DateTimeUtils.GMT_ZONE);
+ Parser parser = new Parser(DateTimeUtils.UTC_ZONE);
List<DateGroup> groups = parser.parse(string);
DateGroup group = groups.get(0);
return group.getDates().get(0);
http://git-wip-us.apache.org/repos/asf/calcite/blob/915c218b/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ff04980..1a9d420 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,7 +53,7 @@ limitations under the License.
<!-- This list is in alphabetical order. -->
<airlift-tpch.version>0.1</airlift-tpch.version>
- <avatica.version>1.9.0</avatica.version>
+ <avatica.version>1.10.0</avatica.version>
<build-helper-maven-plugin.version>1.9</build-helper-maven-plugin.version>
<cassandra-driver-core.version>3.1.4</cassandra-driver-core.version>
<checksum-maven-plugin.version>1.2</checksum-maven-plugin.version>