You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by cg...@apache.org on 2023/02/08 12:33:16 UTC

[drill] branch master updated: DRILL-8379: Update Calcite to 1.33.0 (#2749)

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

cgivre pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/drill.git


The following commit(s) were added to refs/heads/master by this push:
     new 3bc0c988ef DRILL-8379: Update Calcite to 1.33.0 (#2749)
3bc0c988ef is described below

commit 3bc0c988efe732e0b20f0f589b80406a21630b5d
Author: Volodymyr Vysotskyi <vv...@gmail.com>
AuthorDate: Wed Feb 8 14:33:11 2023 +0200

    DRILL-8379: Update Calcite to 1.33.0 (#2749)
---
 .../src/main/codegen/data/DateIntervalFunc.tdd     |    2 +-
 exec/java-exec/src/main/codegen/data/Parser.tdd    | 1583 ++++++++++----------
 .../TimestampDiffFunction.java                     |    6 +-
 .../drill/exec/planner/logical/DrillOptiq.java     |    1 +
 .../exec/planner/logical/DrillRelFactories.java    |    2 +-
 .../drill/exec/planner/physical/PrelFactories.java |    5 +-
 .../exec/planner/sql/DrillConvertletTable.java     |    5 +-
 .../drill/exec/planner/sql/TypeInferenceUtils.java |    2 +-
 .../fn/impl/TestTimestampAddDiffFunctions.java     |   20 +-
 .../org/apache/drill/exec/sql/TestAnalyze.java     |    6 +-
 exec/jdbc-all/pom.xml                              |    4 +-
 pom.xml                                            |    6 +-
 12 files changed, 841 insertions(+), 801 deletions(-)

diff --git a/exec/java-exec/src/main/codegen/data/DateIntervalFunc.tdd b/exec/java-exec/src/main/codegen/data/DateIntervalFunc.tdd
index 190ae1ef9a..12d66b284b 100644
--- a/exec/java-exec/src/main/codegen/data/DateIntervalFunc.tdd
+++ b/exec/java-exec/src/main/codegen/data/DateIntervalFunc.tdd
@@ -21,7 +21,7 @@
     {intervals: ["Interval", "IntervalDay", "IntervalYear", "Int", "BigInt"] },
     {truncInputTypes: ["Date", "TimeStamp", "Time", "Interval", "IntervalDay", "IntervalYear"] },
     {truncUnits : ["Second", "Minute", "Hour", "Day", "Month", "Year", "Week", "Quarter", "Decade", "Century", "Millennium" ] },
-    {timestampDiffUnits : ["Nanosecond", "Microsecond", "Second", "Minute", "Hour", "Day", "Month", "Year", "Week", "Quarter"] },
+    {timestampDiffUnits : ["Nanosecond", "Microsecond", "Millisecond", "Second", "Minute", "Hour", "Day", "Month", "Year", "Week", "Quarter"] },
 
     {
         varCharToDate: [
diff --git a/exec/java-exec/src/main/codegen/data/Parser.tdd b/exec/java-exec/src/main/codegen/data/Parser.tdd
index 60578b93ac..98107cd44c 100644
--- a/exec/java-exec/src/main/codegen/data/Parser.tdd
+++ b/exec/java-exec/src/main/codegen/data/Parser.tdd
@@ -118,780 +118,824 @@
   # List of keywords from "keywords" section that are not reserved.
   # Copied from calcite-core config.fmpp
   # For details please see comment under CALCITE-2405.
-   nonReservedKeywords: [
-        "A"
-        "ABSENT"
-        "ABSOLUTE"
-        "ACTION"
-        "ADA"
-        "ADD"
-        "ADMIN"
-        "AFTER"
-        "ALIAS"
-        "ALIASES"
-        "ALWAYS"
-        "APPLY"
-        "ASC"
-        "ASSERTION"
-        "ASSIGNMENT"
-        "ATTRIBUTE"
-        "ATTRIBUTES"
-        "BEFORE"
-        "BERNOULLI"
-        "BREADTH"
-        "C"
-        "CASCADE"
-        "CATALOG"
-        "CATALOG_NAME"
-        "CENTURY"
-        "CHAIN"
-        "CHARACTER_SET_CATALOG"
-        "CHARACTER_SET_NAME"
-        "CHARACTER_SET_SCHEMA"
-        "CHARACTERISTICS"
-        "CHARACTERS"
-        "CLASS_ORIGIN"
-        "COBOL"
-        "COLLATION"
-        "COLLATION_CATALOG"
-        "COLLATION_NAME"
-        "COLLATION_SCHEMA"
-        "COLUMN_NAME"
-        "COMMAND_FUNCTION"
-        "COMMAND_FUNCTION_CODE"
-        "COMMITTED"
-        "CONDITION_NUMBER"
-        "CONNECTION"
-        "CONNECTION_NAME"
-        "CONSTRAINT_CATALOG"
-        "CONSTRAINT_NAME"
-        "CONSTRAINT_SCHEMA"
-        "CONSTRAINTS"
-        "CONSTRUCTOR"
-        "CONTINUE"
-        "CURSOR_NAME"
-        "DATA"
-        "DATABASE"
-        "DATETIME_INTERVAL_CODE"
-        "DATETIME_INTERVAL_PRECISION"
-        "DECADE"
-        "DEFAULTS"
-        "DEFERRABLE"
-        "DEFERRED"
-        "DEFINED"
-        "DEFINER"
-        "DEGREE"
-        "DEPTH"
-        "DERIVED"
-        "DESC"
-        "DESCRIPTION"
-        "DESCRIPTOR"
-        "DIAGNOSTICS"
-        "DISPATCH"
-        "DOMAIN"
-        "DOW"
-        "DOY"
-        "DYNAMIC_FUNCTION"
-        "DYNAMIC_FUNCTION_CODE"
-        "ENCODING"
-        "EPOCH"
-        "ERROR"
-        "EXCEPTION"
-        "EXCLUDE"
-        "EXCLUDING"
-        "FINAL"
-        "FIRST"
-        "FOLLOWING"
-        "FORMAT"
-        "FORTRAN"
-        "FOUND"
-        "FRAC_SECOND"
-        "G"
-        "GENERAL"
-        "GENERATED"
-        "GEOMETRY"
-        "GO"
-        "GOTO"
-        "GRANTED"
-        "HIERARCHY"
-        "IMMEDIATE"
-        "IMMEDIATELY"
-        "IMPLEMENTATION"
-        "INCLUDING"
-        "INCREMENT"
-        "INITIALLY"
-        "INPUT"
-        "INSTANCE"
-        "INSTANTIABLE"
-        "INVOKER"
-        "ISODOW"
-        "ISOYEAR"
-        "ISOLATION"
-        "JAVA"
-        "JSON"
-        "K"
-        "KEY"
-        "KEY_MEMBER"
-        "KEY_TYPE"
-        "LABEL"
-        "LAST"
-        "LENGTH"
-        "LEVEL"
-        "LIBRARY"
-        "LOCATOR"
-        "M"
-        "MAP"
-        "MATCHED"
-        "MAXVALUE"
-        "MICROSECOND"
-        "MESSAGE_LENGTH"
-        "MESSAGE_OCTET_LENGTH"
-        "MESSAGE_TEXT"
-        "MILLISECOND"
-        "MILLENNIUM"
-        "MINVALUE"
-        "MONTHS"
-        "MORE_"
-        "MUMPS"
-        "NAME"
-        "NAMES"
-        "NANOSECOND"
-        "NESTING"
-        "NORMALIZED"
-        "NULLABLE"
-        "NULLS"
-        "NUMBER"
-        "OBJECT"
-        "OCTETS"
-        "OPTION"
-        "OPTIONS"
-        "ORDERING"
-        "ORDINALITY"
-        "OTHERS"
-        "OUTPUT"
-        "OVERRIDING"
-        "PAD"
-        "PARAMETER_MODE"
-        "PARAMETER_NAME"
-        "PARAMETER_ORDINAL_POSITION"
-        "PARAMETER_SPECIFIC_CATALOG"
-        "PARAMETER_SPECIFIC_NAME"
-        "PARAMETER_SPECIFIC_SCHEMA"
-        "PARTIAL"
-        "PASCAL"
-        "PASSING"
-        "PASSTHROUGH"
-        "PAST"
-        "PATH"
-        "PLACING"
-        "PLAN"
-        "PLI"
-        "PRECEDING"
-        "PRESERVE"
-        "PRIOR"
-        "PRIVILEGES"
-        "PUBLIC"
-        "QUARTER"
-        "READ"
-        "RELATIVE"
-        "REPEATABLE"
-        "REPLACE"
-        "RESTART"
-        "RESTRICT"
-        "RETURNED_CARDINALITY"
-        "RETURNED_LENGTH"
-        "RETURNED_OCTET_LENGTH"
-        "RETURNED_SQLSTATE"
-        "ROLE"
-        "ROUTINE"
-        "ROUTINE_CATALOG"
-        "ROUTINE_NAME"
-        "ROUTINE_SCHEMA"
-        "ROW_COUNT"
-        "SCALE"
-        "SCHEMA"
-        "SCHEMA_NAME"
-        "SCOPE_CATALOGS"
-        "SCOPE_NAME"
-        "SCOPE_SCHEMA"
-        "SECTION"
-        "SECURITY"
-        "SELF"
-        "SEQUENCE"
-        "SERIALIZABLE"
-        "SERVER"
-        "SERVER_NAME"
-        "SESSION"
-        "SETS"
-        "SIMPLE"
-        "SIZE"
-        "SOURCE"
-        "SPACE"
-        "SPECIFIC_NAME"
-        "SQL_BIGINT"
-        "SQL_BINARY"
-        "SQL_BIT"
-        "SQL_BLOB"
-        "SQL_BOOLEAN"
-        "SQL_CHAR"
-        "SQL_CLOB"
-        "SQL_DATE"
-        "SQL_DECIMAL"
-        "SQL_DOUBLE"
-        "SQL_FLOAT"
-        "SQL_INTEGER"
-        "SQL_INTERVAL_DAY"
-        "SQL_INTERVAL_DAY_TO_HOUR"
-        "SQL_INTERVAL_DAY_TO_MINUTE"
-        "SQL_INTERVAL_DAY_TO_SECOND"
-        "SQL_INTERVAL_HOUR"
-        "SQL_INTERVAL_HOUR_TO_MINUTE"
-        "SQL_INTERVAL_HOUR_TO_SECOND"
-        "SQL_INTERVAL_MINUTE"
-        "SQL_INTERVAL_MINUTE_TO_SECOND"
-        "SQL_INTERVAL_MONTH"
-        "SQL_INTERVAL_SECOND"
-        "SQL_INTERVAL_YEAR"
-        "SQL_INTERVAL_YEAR_TO_MONTH"
-        "SQL_LONGVARBINARY"
-        "SQL_LONGVARNCHAR"
-        "SQL_LONGVARCHAR"
-        "SQL_NCHAR"
-        "SQL_NCLOB"
-        "SQL_NUMERIC"
-        "SQL_NVARCHAR"
-        "SQL_REAL"
-        "SQL_SMALLINT"
-        "SQL_TIME"
-        "SQL_TIMESTAMP"
-        "SQL_TINYINT"
-        "SQL_TSI_DAY"
-        "SQL_TSI_FRAC_SECOND"
-        "SQL_TSI_HOUR"
-        "SQL_TSI_MICROSECOND"
-        "SQL_TSI_MINUTE"
-        "SQL_TSI_MONTH"
-        "SQL_TSI_QUARTER"
-        "SQL_TSI_SECOND"
-        "SQL_TSI_WEEK"
-        "SQL_TSI_YEAR"
-        "SQL_VARBINARY"
-        "SQL_VARCHAR"
-        "STATE"
-        "STATEMENT"
-        "STORAGE"
-        "STRUCTURE"
-        "STYLE"
-        "SUBCLASS_ORIGIN"
-        "SUBSTITUTE"
-        "TABLE_NAME"
-        "TEMPORARY"
-        "TIES"
-        "TIMESTAMPADD"
-        "TIMESTAMPDIFF"
-        "TOP_LEVEL_COUNT"
-        "TRANSACTION"
-        "TRANSACTIONS_ACTIVE"
-        "TRANSACTIONS_COMMITTED"
-        "TRANSACTIONS_ROLLED_BACK"
-        "TRANSFORM"
-        "TRANSFORMS"
-        "TRIGGER_CATALOG"
-        "TRIGGER_NAME"
-        "TRIGGER_SCHEMA"
-        "TYPE"
-        "UNBOUNDED"
-        "UNCOMMITTED"
-        "UNDER"
-        "UNNAMED"
-        "USAGE"
-        "USER_DEFINED_TYPE_CATALOG"
-        "USER_DEFINED_TYPE_CODE"
-        "USER_DEFINED_TYPE_NAME"
-        "USER_DEFINED_TYPE_SCHEMA"
-        "VERSION"
-        "VIEW"
-        "WEEK"
-        "WRAPPER"
-        "WORK"
-        "WRITE"
-        "XML"
-        "ZONE"
+  nonReservedKeywords: [
+      "A"
+      "ABSENT"
+      "ABSOLUTE"
+      "ACTION"
+      "ADA"
+      "ADD"
+      "ADMIN"
+      "AFTER"
+      "ALWAYS"
+      "APPLY"
+      "ARRAY_AGG"
+      "ARRAY_CONCAT_AGG"
+      "ASC"
+      "ASSERTION"
+      "ASSIGNMENT"
+      "ATTRIBUTE"
+      "ATTRIBUTES"
+      "BEFORE"
+      "BERNOULLI"
+      "BREADTH"
+      "C"
+      "CASCADE"
+      "CATALOG"
+      "CATALOG_NAME"
+      "CENTURY"
+      "CHAIN"
+      "CHARACTERISTICS"
+      "CHARACTERS"
+      "CHARACTER_SET_CATALOG"
+      "CHARACTER_SET_NAME"
+      "CHARACTER_SET_SCHEMA"
+      "CLASS_ORIGIN"
+      "COBOL"
+      "COLLATION"
+      "COLLATION_CATALOG"
+      "COLLATION_NAME"
+      "COLLATION_SCHEMA"
+      "COLUMN_NAME"
+      "COMMAND_FUNCTION"
+      "COMMAND_FUNCTION_CODE"
+      "COMMITTED"
+      "CONDITIONAL"
+      "CONDITION_NUMBER"
+      "CONNECTION"
+      "CONNECTION_NAME"
+      "CONSTRAINT_CATALOG"
+      "CONSTRAINT_NAME"
+      "CONSTRAINTS"
+      "CONSTRAINT_SCHEMA"
+      "CONSTRUCTOR"
+      "CONTINUE"
+      "CURSOR_NAME"
+      "DATA"
+      "DATABASE"
+      "DATE_TRUNC"
+      "DATETIME_INTERVAL_CODE"
+      "DATETIME_INTERVAL_PRECISION"
+      "DAYS"
+      "DECADE"
+      "DEFAULTS"
+      "DEFERRABLE"
+      "DEFERRED"
+      "DEFINED"
+      "DEFINER"
+      "DEGREE"
+      "DEPTH"
+      "DERIVED"
+      "DESC"
+      "DESCRIPTION"
+      "DESCRIPTOR"
+      "DIAGNOSTICS"
+      "DISPATCH"
+      "DOMAIN"
+      "DOW"
+      "DOY"
+      "DOT_FORMAT"
+      "DYNAMIC_FUNCTION"
+      "DYNAMIC_FUNCTION_CODE"
+      "ENCODING"
+      "EPOCH"
+      "ERROR"
+      "EXCEPTION"
+      "EXCLUDE"
+      "EXCLUDING"
+      "FINAL"
+      "FIRST"
+      "FOLLOWING"
+      "FORMAT"
+      "FORTRAN"
+      "FOUND"
+      "FRAC_SECOND"
+      "G"
+      "GENERAL"
+      "GENERATED"
+      "GEOMETRY"
+      "GO"
+      "GOTO"
+      "GRANTED"
+      "GROUP_CONCAT"
+      "HIERARCHY"
+      "HOP"
+      "HOURS"
+      "IGNORE"
+      "ILIKE"
+      "IMMEDIATE"
+      "IMMEDIATELY"
+      "IMPLEMENTATION"
+      "INCLUDE"
+      "INCLUDING"
+      "INCREMENT"
+      "INITIALLY"
+      "INPUT"
+      "INSTANCE"
+      "INSTANTIABLE"
+      "INVOKER"
+      "ISODOW"
+      "ISOLATION"
+      "ISOYEAR"
+      "JAVA"
+      "JSON"
+      "K"
+      "KEY"
+      "KEY_MEMBER"
+      "KEY_TYPE"
+      "LABEL"
+      "LAST"
+      "LENGTH"
+      "LEVEL"
+      "LIBRARY"
+      "LOCATOR"
+      "M"
+      "MAP"
+      "MATCHED"
+      "MAXVALUE"
+      "MESSAGE_LENGTH"
+      "MESSAGE_OCTET_LENGTH"
+      "MESSAGE_TEXT"
+      "MICROSECOND"
+      "MILLENNIUM"
+      "MILLISECOND"
+      "MINUTES"
+      "MINVALUE"
+      "MONTHS"
+      "MORE_"
+      "MUMPS"
+      "NAME"
+      "NAMES"
+      "NANOSECOND"
+      "NESTING"
+      "NORMALIZED"
+      "NULLABLE"
+      "NULLS"
+      "NUMBER"
+      "OBJECT"
+      "OCTETS"
+      "OPTION"
+      "OPTIONS"
+      "ORDERING"
+      "ORDINALITY"
+      "OTHERS"
+      "OUTPUT"
+      "OVERRIDING"
+      "PAD"
+      "PARAMETER_MODE"
+      "PARAMETER_NAME"
+      "PARAMETER_ORDINAL_POSITION"
+      "PARAMETER_SPECIFIC_CATALOG"
+      "PARAMETER_SPECIFIC_NAME"
+      "PARAMETER_SPECIFIC_SCHEMA"
+      "PARTIAL"
+      "PASCAL"
+      "PASSING"
+      "PASSTHROUGH"
+      "PAST"
+      "PATH"
+      "PIVOT"
+      "PLACING"
+      "PLAN"
+      "PLI"
+      "PRECEDING"
+      "PRESERVE"
+      "PRIOR"
+      "PRIVILEGES"
+      "PUBLIC"
+      "QUARTER"
+      "QUARTERS"
+      "READ"
+      "RELATIVE"
+      "REPEATABLE"
+      "REPLACE"
+      "RESPECT"
+      "RESTART"
+      "RESTRICT"
+      "RETURNED_CARDINALITY"
+      "RETURNED_LENGTH"
+      "RETURNED_OCTET_LENGTH"
+      "RETURNED_SQLSTATE"
+      "RETURNING"
+      "RLIKE"
+      "ROLE"
+      "ROUTINE"
+      "ROUTINE_CATALOG"
+      "ROUTINE_NAME"
+      "ROUTINE_SCHEMA"
+      "ROW_COUNT"
+      "SCALAR"
+      "SCALE"
+      "SCHEMA"
+      "SCHEMA_NAME"
+      "SCOPE_CATALOGS"
+      "SCOPE_NAME"
+      "SCOPE_SCHEMA"
+      "SECONDS"
+      "SECTION"
+      "SECURITY"
+      "SELF"
+      "SEPARATOR"
+      "SEQUENCE"
+      "SERIALIZABLE"
+      "SERVER"
+      "SERVER_NAME"
+      "SESSION"
+      "SETS"
+      "SIMPLE"
+      "SIZE"
+      "SOURCE"
+      "SPACE"
+      "SPECIFIC_NAME"
+      "SQL_BIGINT"
+      "SQL_BINARY"
+      "SQL_BIT"
+      "SQL_BLOB"
+      "SQL_BOOLEAN"
+      "SQL_CHAR"
+      "SQL_CLOB"
+      "SQL_DATE"
+      "SQL_DECIMAL"
+      "SQL_DOUBLE"
+      "SQL_FLOAT"
+      "SQL_INTEGER"
+      "SQL_INTERVAL_DAY"
+      "SQL_INTERVAL_DAY_TO_HOUR"
+      "SQL_INTERVAL_DAY_TO_MINUTE"
+      "SQL_INTERVAL_DAY_TO_SECOND"
+      "SQL_INTERVAL_HOUR"
+      "SQL_INTERVAL_HOUR_TO_MINUTE"
+      "SQL_INTERVAL_HOUR_TO_SECOND"
+      "SQL_INTERVAL_MINUTE"
+      "SQL_INTERVAL_MINUTE_TO_SECOND"
+      "SQL_INTERVAL_MONTH"
+      "SQL_INTERVAL_SECOND"
+      "SQL_INTERVAL_YEAR"
+      "SQL_INTERVAL_YEAR_TO_MONTH"
+      "SQL_LONGVARBINARY"
+      "SQL_LONGVARCHAR"
+      "SQL_LONGVARNCHAR"
+      "SQL_NCHAR"
+      "SQL_NCLOB"
+      "SQL_NUMERIC"
+      "SQL_NVARCHAR"
+      "SQL_REAL"
+      "SQL_SMALLINT"
+      "SQL_TIME"
+      "SQL_TIMESTAMP"
+      "SQL_TINYINT"
+      "SQL_TSI_DAY"
+      "SQL_TSI_FRAC_SECOND"
+      "SQL_TSI_HOUR"
+      "SQL_TSI_MICROSECOND"
+      "SQL_TSI_MINUTE"
+      "SQL_TSI_MONTH"
+      "SQL_TSI_QUARTER"
+      "SQL_TSI_SECOND"
+      "SQL_TSI_WEEK"
+      "SQL_TSI_YEAR"
+      "SQL_VARBINARY"
+      "SQL_VARCHAR"
+      "STATE"
+      "STATEMENT"
+      "STRING_AGG"
+      "STRUCTURE"
+      "STYLE"
+      "SUBCLASS_ORIGIN"
+      "SUBSTITUTE"
+      "TABLE_NAME"
+      "TEMPORARY"
+      "TIES"
+      "TIME_DIFF"
+      "TIME_TRUNC"
+      "TIMESTAMPADD"
+      "TIMESTAMPDIFF"
+      "TIMESTAMP_DIFF"
+      "TIMESTAMP_TRUNC"
+      "TOP_LEVEL_COUNT"
+      "TRANSACTION"
+      "TRANSACTIONS_ACTIVE"
+      "TRANSACTIONS_COMMITTED"
+      "TRANSACTIONS_ROLLED_BACK"
+      "TRANSFORM"
+      "TRANSFORMS"
+      "TRIGGER_CATALOG"
+      "TRIGGER_NAME"
+      "TRIGGER_SCHEMA"
+      "TUMBLE"
+      "TYPE"
+      "UNBOUNDED"
+      "UNCOMMITTED"
+      "UNCONDITIONAL"
+      "UNDER"
+      "UNPIVOT"
+      "UNNAMED"
+      "USAGE"
+      "USER_DEFINED_TYPE_CATALOG"
+      "USER_DEFINED_TYPE_CODE"
+      "USER_DEFINED_TYPE_NAME"
+      "USER_DEFINED_TYPE_SCHEMA"
+      "UTF16"
+      "UTF32"
+      "UTF8"
+      "VERSION"
+      "VIEW"
+      "WEEK"
+      "WEEKS"
+      "WORK"
+      "WRAPPER"
+      "WRITE"
+      "XML"
+      "YEARS"
+      "ZONE"
 
-        # The following keywords are reserved in core Calcite,
-        # are reserved in some version of SQL,
-        # but are not reserved in Babel.
-        #
-        # Words that are commented out (e.g. "AND") are still reserved.
-        # These are the most important reserved words, and SQL cannot be
-        # unambiguously parsed if they are not reserved. For example, if
-        # "INNER" is not reserved then in the query
-        #
-        #   select * from emp inner join dept using (deptno)"
-        #
-        # "inner" could be a table alias for "emp".
-        #
-        "ABS",
-        "ABSOLUTE",
-        "ACTION",
-        "ADD",
-        "AFTER",
-        "ALL",
-        "ALLOCATE",
-        "ALLOW",
-        "ALTER",
-        "AND",
-#       "ANY",
-        "ARE",
-        "ARRAY",
-#       # "ARRAY_AGG", # not a keyword in Calcite
-        "ARRAY_MAX_CARDINALITY",
-        "AS",
-        "ASC",
-        "ASENSITIVE",
-        "ASSERTION",
-        "ASYMMETRIC",
-        "AT",
-        "ATOMIC",
-        "AUTHORIZATION",
-        "AVG",
-        "BEFORE",
-        "BEGIN",
-        "BEGIN_FRAME",
-        "BEGIN_PARTITION",
-        "BETWEEN",
-        "BIGINT",
-        "BINARY",
-        "BIT",
-#       # "BIT_LENGTH", # not a keyword in Calcite
-        "BLOB",
-        "BOOLEAN",
-        "BOTH",
-        "BREADTH",
-        "BY",
-#       "CALL",
-        "CALLED",
-        "CARDINALITY",
-        "CASCADE",
-        "CASCADED",
-#       "CASE",
-        "CAST",
-        "CATALOG",
-        "CEIL",
-        "CEILING",
-        "CHAR",
-        "CHARACTER",
-        "CHARACTER_LENGTH",
-        "CHAR_LENGTH",
-        "CHECK",
-        "CLASSIFIER",
-        "CLOB",
-        "CLOSE",
-        "COALESCE",
-        "COLLATE",
-        "COLLATION",
-        "COLLECT",
-        "COLUMN",
-        "COMMIT",
-        "CONDITION",
-        "CONNECT",
-        "CONNECTION",
-        "CONSTRAINT",
-        "CONSTRAINTS",
-        "CONSTRUCTOR",
-        "CONTAINS",
-        "CONTINUE",
-        "CONVERT",
-        "CORR",
-        "CORRESPONDING",
-        "COUNT",
-        "COVAR_POP",
-        "COVAR_SAMP",
-#       "CREATE",
-#       "CROSS",
-        "CUBE",
-        "CUME_DIST",
-#       "CURRENT",
-        "CURRENT_CATALOG",
-        "CURRENT_DATE",
-        "CURRENT_DEFAULT_TRANSFORM_GROUP",
-        "CURRENT_PATH",
-        "CURRENT_ROLE",
-        "CURRENT_ROW",
-        "CURRENT_SCHEMA",
-        "CURRENT_TIME",
-        "CURRENT_TIMESTAMP",
-        "CURRENT_TRANSFORM_GROUP_FOR_TYPE",
-        "CURRENT_USER",
-#       "CURSOR",
-        "CYCLE",
-        "DATA",
-#       "DATE",
-        "DAY",
-#       # "DAYS", # not a keyword in Calcite
-        "DEALLOCATE",
-        "DEC",
-        "DECIMAL",
-        "DECLARE",
-#       # "DEFAULT",
-        "DEFERRABLE",
-        "DEFERRED",
-#       "DEFINE",
-#       "DELETE",
-        "DENSE_RANK",
-        "DEPTH",
-        "DEREF",
-        "DESC",
-#       "DESCRIBE", # must be reserved
-       "DESCRIPTOR",
-       "DETERMINISTIC",
-       "DIAGNOSTICS",
-       "DISALLOW",
-       "DISCONNECT",
-#       "DISTINCT",
-#       # "DO",  # not a keyword in Calcite
-       "DOMAIN",
-       "DOUBLE",
-#       "DROP", # probably must be reserved
-       "DYNAMIC",
-       "EACH",
-       "ELEMENT",
-       "ELSE",
-#       # "ELSEIF", # not a keyword in Calcite
-       "EMPTY",
-       "END",
-#       # "END-EXEC", # not a keyword in Calcite, and contains '-'
-       "END_FRAME",
-       "END_PARTITION",
-       "EQUALS",
-       "ESCAPE",
-       "EVERY",
-#       "EXCEPT", # must be reserved
-       "EXCEPTION",
-       "EXEC",
-       "EXECUTE",
-       "EXISTS",
-#       # "EXIT", # not a keyword in Calcite
-       "EXP",
-#       "EXPLAIN", # must be reserved
-       "EXTEND",
-       "EXTERNAL",
-       "EXTRACT",
-       "FALSE",
-#        "FETCH",
-        "FILTER",
-        "FIRST",
-        "FIRST_VALUE",
-        "FLOAT",
-        "FLOOR",
-        "FOR",
-        "FOREIGN",
-#       # "FOREVER", # not a keyword in Calcite
-        "FOUND",
-        "FRAME_ROW",
-        "FREE",
-#       "FROM", # must be reserved
-#       "FULL", # must be reserved
-        "FUNCTION",
-        "FUSION",
-        "GENERAL",
-        "GET",
-        "GLOBAL",
-        "GO",
-        "GOTO",
-#       "GRANT",
-#       "GROUP",
-#       "GROUPING",
-        "GROUPS",
-#       # "HANDLER", # not a keyword in Calcite
-#       "HAVING",
-        "HOLD",
-        "HOUR",
-        "HOURS",
-        "IDENTITY",
-#       # "IF", # not a keyword in Calcite
-        "IMMEDIATE",
-        "IMMEDIATELY",
-        "IMPORT",
-#       "IN",
-        "INDICATOR",
-        "INITIAL",
-        "INITIALLY",
-#       "INNER",
-        "INOUT",
-        "INPUT",
-        "INSENSITIVE",
-#       "INSERT",
-        "INT",
-        "INTEGER",
-#       "INTERSECT",
-        "INTERSECTION",
-#       "INTERVAL",
-#       "INTO",
-        "IS",
-        "ISOLATION",
-#       # "ITERATE", # not a keyword in Calcite
-#       "JOIN",
-#       # "KEEP", # not a keyword in Calcite
-        "KEY",
-        "LAG",
-        "LANGUAGE",
-        "LARGE",
-        "LAST",
-        "LAST_VALUE",
-#       "LATERAL",
-        "LEAD",
-        "LEADING",
-#       # "LEAVE", # not a keyword in Calcite
-#       "LEFT",
-        "LEVEL",
-        "LIKE",
-        "LIKE_REGEX",
-#       "LIMIT",
-        "LN",
-        "LOCAL",
-        "LOCALTIME",
-        "LOCALTIMESTAMP",
-        "LOCATOR",
-#       # "LOOP", # not a keyword in Calcite
-        "LOWER",
-        "MAP",
-        "MATCH",
-        "MATCHES",
-        "MATCH_NUMBER",
-#       "MATCH_RECOGNIZE",
-        "MAX",
-#       # "MAX_CARDINALITY", # not a keyword in Calcite
-        "MEASURES",
-        "MEMBER",
-#       "MERGE",
-        "METHOD",
-        "MIN",
-#       "MINUS",
-        "MINUTE",
-#       # "MINUTES", # not a keyword in Calcite
-        "MOD",
-        "MODIFIES",
-        "MODULE",
-        "MONTH",
-        "MULTISET",
-        "NAMES",
-        "NATIONAL",
-#       "NATURAL",
-        "NCHAR",
-        "NCLOB",
-#       "NEW",
-#       "NEXT",
-        "NO",
-        "NONE",
-        "NORMALIZE",
-        "NOT",
-        "NTH_VALUE",
-        "NTILE",
-#       "NULL",
-        "NULLIF",
-        "NUMERIC",
-        "OBJECT",
-        "OCCURRENCES_REGEX",
-        "OCTET_LENGTH",
-        "OF",
-#       "OFFSET",
-        "OLD",
-        "OMIT",
-#       "ON",
-        "ONE",
-        "ONLY",
-        "OPEN",
-        "OPTION",
-        "OR",
-#       "ORDER",
-        "ORDINALITY",
-        "OUT",
-#       "OUTER",
-        "OUTPUT",
-#       "OVER",
-        "OVERLAPS",
-        "OVERLAY",
-        "PAD",
-        "PARAMETER",
-        "PARTIAL",
-#       "PARTITION",
-        "PATH",
-#       "PATTERN",
-        "PER",
-        "PERCENT",
-        "PERCENTILE_CONT",
-        "PERCENTILE_DISC",
-        "PERCENT_RANK",
-        "PERIOD",
-        "PERMUTE",
-        "PORTION",
-        "POSITION",
-        "POSITION_REGEX",
-        "POWER",
-        "PRECEDES",
-        "PRECISION",
-        "PREPARE",
-        "PRESERVE",
-        "PREV",
-        "PRIMARY",
-        "PRIOR",
-        "PRIVILEGES",
-        "PROCEDURE",
-        "PUBLIC",
-#       "RANGE",
-        "RANK",
-        "READ",
-        "READS",
-        "REAL",
-        "RECURSIVE",
-        "REF",
-        "REFERENCES",
-        "REFERENCING",
-        "REGR_AVGX",
-        "REGR_AVGY",
-        "REGR_COUNT",
-        "REGR_INTERCEPT",
-        "REGR_R2",
-        "REGR_SLOPE",
-        "REGR_SXX",
-        "REGR_SXY",
-        "REGR_SYY",
-        "RELATIVE",
-        "RELEASE",
-#       # "REPEAT", # not a keyword in Calcite
-        "RESET",
-#       # "RESIGNAL", # not a keyword in Calcite
-        "RESTRICT",
-        "RESULT",
-        "RETURN",
-        "RETURNS",
-        "REVOKE",
-#       "RIGHT",
-        "ROLE",
-        "ROLLBACK",
-#       "ROLLUP",
-        "ROUTINE",
-#       "ROW",
-#       "ROWS",
-        "ROW_NUMBER",
-        "RUNNING",
-        "SAVEPOINT",
-        "SCHEMA",
-        "SCOPE",
-        "SCROLL",
-        "SEARCH",
-        "SECOND",
-#       # "SECONDS", # not a keyword in Calcite
-        "SECTION",
-        "SEEK",
-#       "SELECT",
-        "SENSITIVE",
-        "SESSION",
-        "SESSION_USER",
-#       "SET",
-#       "SETS",
-        "SHOW",
-#       # "SIGNAL", # not a keyword in Calcite
-        "SIMILAR",
-        "SIZE",
-#       # "SKIP", # messes with JavaCC's <SKIP> token
-        "SMALLINT",
-#       "SOME",
-        "SPACE",
-        "SPECIFIC",
-        "SPECIFICTYPE",
-        "SQL",
-#       # "SQLCODE", # not a keyword in Calcite
-#       # "SQLERROR", # not a keyword in Calcite
-        "SQLEXCEPTION",
-        "SQLSTATE",
-        "SQLWARNING",
-        "SQRT",
-        "START",
-        "STATE",
-        "STATIC",
-        "STDDEV_POP",
-        "STDDEV_SAMP",
-#       "STREAM",
-        "SUBMULTISET",
-        "SUBSET",
-        "SUBSTRING",
-        "SUBSTRING_REGEX",
-        "SUCCEEDS",
-        "SUM",
-        "SYMMETRIC",
-        "SYSTEM",
-        "SYSTEM_TIME",
-        "SYSTEM_USER",
-#       "TABLE",
-#       "TABLESAMPLE",
-        "TEMPORARY",
-#       "THEN",
-#       "TIME",
-#       "TIMESTAMP",
-        "TIMEZONE_HOUR",
-        "TIMEZONE_MINUTE",
-        "TINYINT",
-        "TO",
-        "TRAILING",
-        "TRANSACTION",
-        "TRANSLATE",
-        "TRANSLATE_REGEX",
-        "TRANSLATION",
-        "TREAT",
-        "TRIGGER",
-        "TRIM",
-        "TRIM_ARRAY",
-        "TRUE",
-        "TRUNCATE",
-        "UESCAPE",
-        "UNDER",
-#       # "UNDO", # not a keyword in Calcite
-#       "UNION",
-        "UNIQUE",
-        "UNKNOWN",
-#       "UNNEST",
-#       # "UNTIL", # not a keyword in Calcite
-#       "UPDATE",
-        "UPPER",
-        "UPSERT",
-        "USAGE",
-        "USER",
-#       "USING",
-        "VALUE",
-#       "VALUES",
-        "VALUE_OF",
-        "VARBINARY",
-        "VARCHAR",
-        "VARYING",
-        "VAR_POP",
-        "VAR_SAMP",
-        "VERSION",
-        "VERSIONING",
-#       # "VERSIONS", # not a keyword in Calcite
-        "VIEW",
-#       "WHEN",
-        "WHENEVER",
-#       "WHERE",
-#       # "WHILE", # not a keyword in Calcite
-        "WIDTH_BUCKET",
-#       "WINDOW",
-#       "WITH",
-        "WITHIN",
-        "WITHOUT",
-        "WORK",
-        "WRITE",
-        "YEAR",
-        # "YEARS", # not a keyword in Calcite
-        "ZONE",
-        "COLUMNS",
-        "REMOVE"
-      ]
+      # The following keywords are reserved in core Calcite,
+      # are reserved in some version of SQL,
+      # but are not reserved in Babel.
+      #
+      # Words that are commented out (e.g. "AND") are still reserved.
+      # These are the most important reserved words, and SQL cannot be
+      # unambiguously parsed if they are not reserved. For example, if
+      # "INNER" is not reserved then in the query
+      #
+      #   select * from emp inner join dept using (deptno)"
+      #
+      # "inner" could be a table alias for "emp".
+      #
+      "ABS"
+      "ABSOLUTE"
+      "ACTION"
+      "ADD"
+      "AFTER"
+      "ALL"
+      "ALLOCATE"
+      "ALLOW"
+      "ALTER"
+      "AND"
+#     "ANY"
+      "ARE"
+      "ARRAY"
+#     "ARRAY_AGG" # not a keyword in Calcite
+      "ARRAY_MAX_CARDINALITY"
+      "AS"
+      "ASC"
+      "ASENSITIVE"
+      "ASSERTION"
+      "ASYMMETRIC"
+      "AT"
+      "ATOMIC"
+      "AUTHORIZATION"
+      "AVG"
+      "BEFORE"
+      "BEGIN"
+      "BEGIN_FRAME"
+      "BEGIN_PARTITION"
+      "BETWEEN"
+      "BIGINT"
+      "BINARY"
+      "BIT"
+#     "BIT_LENGTH" # not a keyword in Calcite
+      "BLOB"
+      "BOOLEAN"
+      "BOTH"
+      "BREADTH"
+      "BY"
+#     "CALL"
+      "CALLED"
+      "CARDINALITY"
+      "CASCADE"
+      "CASCADED"
+#     "CASE"
+      "CAST"
+      "CATALOG"
+      "CEIL"
+      "CEILING"
+      "CHAR"
+      "CHARACTER"
+      "CHARACTER_LENGTH"
+      "CHAR_LENGTH"
+      "CHECK"
+      "CLASSIFIER"
+      "CLOB"
+      "CLOSE"
+      "COALESCE"
+      "COLLATE"
+      "COLLATION"
+      "COLLECT"
+      "COLUMN"
+      "COMMIT"
+      "CONDITION"
+      "CONNECT"
+      "CONNECTION"
+      "CONSTRAINT"
+      "CONSTRAINTS"
+      "CONSTRUCTOR"
+      "CONTAINS"
+      "CONTINUE"
+      "CONVERT"
+      "CORR"
+      "CORRESPONDING"
+      "COUNT"
+      "COVAR_POP"
+      "COVAR_SAMP"
+#     "CREATE"
+#     "CROSS"
+      "CUBE"
+      "CUME_DIST"
+#     "CURRENT"
+      "CURRENT_CATALOG"
+      "CURRENT_DATE"
+      "CURRENT_DEFAULT_TRANSFORM_GROUP"
+      "CURRENT_PATH"
+      "CURRENT_ROLE"
+      "CURRENT_ROW"
+      "CURRENT_SCHEMA"
+      "CURRENT_TIME"
+      "CURRENT_TIMESTAMP"
+      "CURRENT_TRANSFORM_GROUP_FOR_TYPE"
+      "CURRENT_USER"
+#     "CURSOR"
+      "CYCLE"
+      "DATA"
+#     "DATE"
+      "DAY"
+      "DEALLOCATE"
+      "DEC"
+      "DECIMAL"
+      "DECLARE"
+#     "DEFAULT"
+      "DEFERRABLE"
+      "DEFERRED"
+#     "DEFINE"
+#     "DELETE"
+      "DENSE_RANK"
+      "DEPTH"
+      "DEREF"
+      "DESC"
+#     "DESCRIBE" # must be reserved
+      "DESCRIPTOR"
+      "DETERMINISTIC"
+      "DIAGNOSTICS"
+      "DISALLOW"
+      "DISCONNECT"
+#     "DISTINCT"
+#     "DO"  # not a keyword in Calcite
+      "DOMAIN"
+      "DOUBLE"
+#     "DROP" # probably must be reserved
+      "DYNAMIC"
+      "EACH"
+      "ELEMENT"
+      "ELSE"
+#     "ELSEIF" # not a keyword in Calcite
+      "EMPTY"
+      "END"
+#     "END-EXEC" # not a keyword in Calcite, and contains '-'
+      "END_FRAME"
+      "END_PARTITION"
+      "EQUALS"
+      "ESCAPE"
+      "EVERY"
+#     "EXCEPT" # must be reserved
+      "EXCEPTION"
+      "EXEC"
+      "EXECUTE"
+      "EXISTS"
+#     "EXIT" # not a keyword in Calcite
+      "EXP"
+#     "EXPLAIN" # must be reserved
+      "EXTEND"
+      "EXTERNAL"
+      "EXTRACT"
+      "FALSE"
+#     "FETCH"
+      "FILTER"
+      "FIRST"
+      "FIRST_VALUE"
+      "FLOAT"
+      "FLOOR"
+      "FOR"
+      "FOREIGN"
+#     "FOREVER" # not a keyword in Calcite
+      "FOUND"
+      "FRAME_ROW"
+      "FREE"
+#     "FROM" # must be reserved
+#     "FULL" # must be reserved
+      "FUNCTION"
+      "FUSION"
+      "GENERAL"
+      "GET"
+      "GLOBAL"
+      "GO"
+      "GOTO"
+#     "GRANT"
+#     "GROUP"
+#     "GROUPING"
+      "GROUPS"
+#     "HANDLER" # not a keyword in Calcite
+#     "HAVING"
+      "HOLD"
+      "HOUR"
+       "HOURS",
+      "IDENTITY"
+      "ILIKE"
+      "IMMEDIATE"
+      "IMMEDIATELY"
+      "IMPORT"
+#     "IN"
+      "INDICATOR"
+      "INITIAL"
+      "INITIALLY"
+#     "INNER"
+      "INOUT"
+      "INPUT"
+      "INSENSITIVE"
+#     "INSERT"
+      "INT"
+      "INTEGER"
+#     "INTERSECT"
+      "INTERSECTION"
+#     "INTERVAL"
+#     "INTO"
+      "IS"
+      "ISOLATION"
+#     "ITERATE" # not a keyword in Calcite
+#     "JOIN"
+      "JSON_ARRAY"
+      "JSON_ARRAYAGG"
+      "JSON_EXISTS"
+      "JSON_OBJECT"
+      "JSON_OBJECTAGG"
+      "JSON_QUERY"
+      "JSON_VALUE"
+#     "KEEP" # not a keyword in Calcite
+      "KEY"
+      "LAG"
+      "LANGUAGE"
+      "LARGE"
+      "LAST"
+      "LAST_VALUE"
+#     "LATERAL"
+      "LEAD"
+      "LEADING"
+#     "LEAVE" # not a keyword in Calcite
+#     "LEFT"
+      "LEVEL"
+      "LIKE"
+      "LIKE_REGEX"
+#     "LIMIT"
+      "LN"
+      "LOCAL"
+      "LOCALTIME"
+      "LOCALTIMESTAMP"
+      "LOCATOR"
+#     "LOOP" # not a keyword in Calcite
+      "LOWER"
+      "MAP"
+      "MATCH"
+      "MATCHES"
+      "MATCH_NUMBER"
+#     "MATCH_RECOGNIZE"
+      "MAX"
+#     "MAX_CARDINALITY" # not a keyword in Calcite
+      "MEASURES"
+      "MEMBER"
+#     "MERGE"
+      "METHOD"
+      "MIN"
+#     "MINUS"
+      "MINUTE"
+      "MOD"
+      "MODIFIES"
+      "MODULE"
+      "MONTH"
+      "MULTISET"
+      "NAMES"
+      "NATIONAL"
+#     "NATURAL"
+      "NCHAR"
+      "NCLOB"
+#     "NEW"
+#     "NEXT"
+      "NO"
+      "NONE"
+      "NORMALIZE"
+      "NOT"
+      "NTH_VALUE"
+      "NTILE"
+#     "NULL"
+      "NULLIF"
+      "NUMERIC"
+      "OBJECT"
+      "OCCURRENCES_REGEX"
+      "OCTET_LENGTH"
+      "OF"
+#     "OFFSET"
+      "OLD"
+      "OMIT"
+#     "ON"
+      "ONE"
+      "ONLY"
+      "OPEN"
+      "OPTION"
+      "OR"
+#     "ORDER"
+      "ORDINALITY"
+      "OUT"
+#     "OUTER"
+      "OUTPUT"
+#     "OVER"
+      "OVERLAPS"
+      "OVERLAY"
+      "PAD"
+      "PARAMETER"
+      "PARTIAL"
+#     "PARTITION"
+      "PATH"
+#     "PATTERN"
+      "PER"
+      "PERCENT"
+      "PERCENTILE_CONT"
+      "PERCENTILE_DISC"
+      "PERCENT_RANK"
+      "PERIOD"
+      "PERMUTE"
+      "PORTION"
+      "POSITION"
+      "POSITION_REGEX"
+      "POWER"
+      "PRECEDES"
+      "PRECISION"
+      "PREPARE"
+      "PRESERVE"
+      "PREV"
+      "PRIMARY"
+      "PRIOR"
+      "PRIVILEGES"
+      "PROCEDURE"
+      "PUBLIC"
+#     "RANGE"
+      "RANK"
+      "READ"
+      "READS"
+      "REAL"
+      "RECURSIVE"
+      "REF"
+      "REFERENCES"
+      "REFERENCING"
+      "REGR_AVGX"
+      "REGR_AVGY"
+      "REGR_COUNT"
+      "REGR_INTERCEPT"
+      "REGR_R2"
+      "REGR_SLOPE"
+      "REGR_SXX"
+      "REGR_SXY"
+      "REGR_SYY"
+      "RELATIVE"
+      "RELEASE"
+#     "REPEAT" # not a keyword in Calcite
+      "RESET"
+#     "RESIGNAL" # not a keyword in Calcite
+      "RESTRICT"
+      "RESULT"
+      "RETURN"
+      "RETURNS"
+      "REVOKE"
+#     "RIGHT"
+      "RLIKE"
+      "ROLE"
+      "ROLLBACK"
+#     "ROLLUP"
+      "ROUTINE"
+#     "ROW"
+#     "ROWS"
+      "ROW_NUMBER"
+      "RUNNING"
+      "SAVEPOINT"
+      "SCHEMA"
+      "SCOPE"
+      "SCROLL"
+      "SEARCH"
+      "SECOND"
+      "SECTION"
+      "SEEK"
+#     "SELECT"
+      "SENSITIVE"
+      "SESSION"
+      "SESSION_USER"
+#     "SET"
+#     "SETS"
+      "SHOW"
+#     "SIGNAL" # not a keyword in Calcite
+      "SIMILAR"
+      "SIZE"
+#     "SKIP" # messes with JavaCC's <SKIP> token
+      "SMALLINT"
+#     "SOME"
+      "SPACE"
+      "SPECIFIC"
+      "SPECIFICTYPE"
+      "SQL"
+#     "SQLCODE" # not a keyword in Calcite
+#     "SQLERROR" # not a keyword in Calcite
+      "SQLEXCEPTION"
+      "SQLSTATE"
+      "SQLWARNING"
+      "SQRT"
+      "START"
+      "STATE"
+      "STATIC"
+      "STDDEV_POP"
+      "STDDEV_SAMP"
+#     "STREAM"
+      "SUBMULTISET"
+      "SUBSET"
+      "SUBSTRING"
+      "SUBSTRING_REGEX"
+      "SUCCEEDS"
+      "SUM"
+      "SYMMETRIC"
+      "SYSTEM"
+      "SYSTEM_TIME"
+      "SYSTEM_USER"
+#     "TABLE"
+#     "TABLESAMPLE"
+      "TEMPORARY"
+#     "THEN"
+#     "TIME"
+      "TIME_DIFF"
+      "TIME_TRUNC"
+#     "TIMESTAMP"
+      "TIMESTAMP_DIFF"
+      "TIMESTAMP_TRUNC"
+      "TIMEZONE_HOUR"
+      "TIMEZONE_MINUTE"
+      "TINYINT"
+      "TO"
+      "TRAILING"
+      "TRANSACTION"
+      "TRANSLATE"
+      "TRANSLATE_REGEX"
+      "TRANSLATION"
+      "TREAT"
+      "TRIGGER"
+      "TRIM"
+      "TRIM_ARRAY"
+      "TRUE"
+      "TRUNCATE"
+      "UESCAPE"
+      "UNDER"
+#     "UNDO" # not a keyword in Calcite
+#     "UNION"
+      "UNIQUE"
+      "UNKNOWN"
+#     "UNNEST"
+#     "UNTIL" # not a keyword in Calcite
+#     "UPDATE"
+      "UPPER"
+      "UPSERT"
+      "USAGE"
+      "USER"
+#     "USING"
+      "VALUE"
+#     "VALUES"
+      "VALUE_OF"
+      "VARBINARY"
+      "VARCHAR"
+      "VARYING"
+      "VAR_POP"
+      "VAR_SAMP"
+      "VERSION"
+      "VERSIONING"
+#     "VERSIONS" # not a keyword in Calcite
+      "VIEW"
+#     "WHEN"
+      "WHENEVER"
+#     "WHERE"
+#     "WHILE" # not a keyword in Calcite
+      "WIDTH_BUCKET"
+#     "WINDOW"
+#     "WITH"
+      "WITHIN"
+      "WITHOUT"
+      "WORK"
+      "WRITE"
+      "YEAR"
+      "ZONE"
+  ]
 
   # List of non-reserved keywords to add;
   # items in this list become non-reserved
   nonReservedKeywordsToAdd: [
+      "ALIAS"
+      "ALIASES"
+      "COLUMNS"
+      "DATETIME"
+      "HOURS"
+      "STORAGE"
+      "REMOVE"
   ]
 
   # List of non-reserved keywords to remove;
@@ -914,6 +958,7 @@
   includeCompoundIdentifier: false,
   includeBraces: true,
   includeAdditionalDeclarations: false,
+  includeParsingStringLiteralAsArrayLiteral: false,
 
   identifierMaxLength: 1024
 
diff --git a/exec/java-exec/src/main/codegen/templates/DateIntervalFunctionTemplates/TimestampDiffFunction.java b/exec/java-exec/src/main/codegen/templates/DateIntervalFunctionTemplates/TimestampDiffFunction.java
index 3c5e51d3ae..a4012aa4e9 100644
--- a/exec/java-exec/src/main/codegen/templates/DateIntervalFunctionTemplates/TimestampDiffFunction.java
+++ b/exec/java-exec/src/main/codegen/templates/DateIntervalFunctionTemplates/TimestampDiffFunction.java
@@ -58,9 +58,11 @@ public class ${className} {
 
     public void eval() {
     <#if unit == "Nanosecond">
-      out.value = (right.value - left.value) * 1000000;
+      out.value = (right.value - left.value) * 1_000_000;
     <#elseif unit == "Microsecond">
-      out.value = (right.value - left.value) * 1000;
+      out.value = (right.value - left.value) * 1_000;
+    <#elseif unit == "Millisecond">
+      out.value = right.value - left.value;
     <#elseif unit == "Second">
       out.value = (right.value - left.value) / org.apache.drill.exec.vector.DateUtilities.secondsToMillis;
     <#elseif unit == "Minute">
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillOptiq.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillOptiq.java
index 5fdb1ffa70..a350ba0488 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillOptiq.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillOptiq.java
@@ -618,6 +618,7 @@ public class DrillOptiq {
             case HOUR:
             case MINUTE:
             case SECOND:
+            case MILLISECOND:
             case QUARTER:
             case WEEK:
             case MICROSECOND:
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRelFactories.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRelFactories.java
index 574631f5f3..ce3d3d7de1 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRelFactories.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRelFactories.java
@@ -97,7 +97,7 @@ public class DrillRelFactories {
 
     @Override
     public RelNode createProject(RelNode input, List<RelHint> hints, List<? extends RexNode> childExprs,
-      List<? extends String> fieldNames) {
+      List<? extends String> fieldNames, Set<CorrelationId> variablesSet) {
       RelOptCluster cluster = input.getCluster();
       RelDataType rowType =
         RexUtil.createStructType(cluster.getTypeFactory(), childExprs, fieldNames, null);
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelFactories.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelFactories.java
index b5658344c3..9080c3c27f 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelFactories.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelFactories.java
@@ -18,6 +18,7 @@
 package org.apache.drill.exec.planner.physical;
 
 
+import org.apache.calcite.rel.core.CorrelationId;
 import org.apache.calcite.rel.hint.RelHint;
 import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
 import org.apache.calcite.plan.RelOptCluster;
@@ -29,6 +30,7 @@ import org.apache.calcite.rex.RexUtil;
 
 
 import java.util.List;
+import java.util.Set;
 
 public class PrelFactories {
   public static final RelFactories.ProjectFactory PROJECT_FACTORY =
@@ -40,7 +42,8 @@ public class PrelFactories {
    */
   private static class DrillProjectPrelFactory implements RelFactories.ProjectFactory {
     @Override
-    public RelNode createProject(RelNode child, List<RelHint> hints, List<? extends RexNode> childExprs, List<? extends String> fieldNames) {
+    public RelNode createProject(RelNode child, List<RelHint> hints, List<? extends RexNode> childExprs,
+      List<? extends String> fieldNames, Set<CorrelationId> variablesSet) {
       RelOptCluster cluster = child.getCluster();
       RelDataType rowType = RexUtil.createStructType(cluster.getTypeFactory(), childExprs, fieldNames, null);
 
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillConvertletTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillConvertletTable.java
index 16d97c49cb..a802ec8bf1 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillConvertletTable.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillConvertletTable.java
@@ -25,7 +25,6 @@ import java.util.Map;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
-import org.apache.calcite.avatica.util.TimeUnit;
 import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rel.type.RelDataTypeFactory;
 import org.apache.calcite.rex.RexNode;
@@ -208,9 +207,9 @@ public class DrillConvertletTable implements SqlRexConvertletTable {
 
   private static SqlRexConvertlet timestampDiffConvertlet() {
     return (cx, call) -> {
-      SqlLiteral unitLiteral = call.operand(0);
+      SqlIntervalQualifier unitLiteral = call.operand(0);
       SqlIntervalQualifier qualifier =
-          new SqlIntervalQualifier(unitLiteral.symbolValue(TimeUnit.class), null, SqlParserPos.ZERO);
+          new SqlIntervalQualifier(unitLiteral.getUnit(), null, SqlParserPos.ZERO);
 
       List<RexNode> operands = Arrays.asList(
           cx.convertExpression(qualifier),
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/TypeInferenceUtils.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/TypeInferenceUtils.java
index 5b209db6d9..41a6b3bd8a 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/TypeInferenceUtils.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/TypeInferenceUtils.java
@@ -614,7 +614,7 @@ public class TypeInferenceUtils {
 
       SqlTypeName inputTypeName = inputType.getSqlTypeName();
 
-      TimeUnit qualifier = ((SqlLiteral) ((SqlCallBinding) opBinding).operand(0)).getValueAs(TimeUnit.class);
+      TimeUnit qualifier = ((SqlIntervalQualifier) ((SqlCallBinding) opBinding).operand(0)).getUnit();
 
       SqlTypeName sqlTypeName;
       int precision = 0;
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestTimestampAddDiffFunctions.java b/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestTimestampAddDiffFunctions.java
index f2d5af6e00..977fd4b5c5 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestTimestampAddDiffFunctions.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestTimestampAddDiffFunctions.java
@@ -33,27 +33,17 @@ import java.util.Map;
 public class TestTimestampAddDiffFunctions extends ClusterTest {
 
   private final List<String> QUALIFIERS = Arrays.asList(
-      "FRAC_SECOND",
+      "MILLISECOND",
       "MICROSECOND",
       "NANOSECOND",
-      "SQL_TSI_FRAC_SECOND",
-      "SQL_TSI_MICROSECOND",
       "SECOND",
-      "SQL_TSI_SECOND",
       "MINUTE",
-      "SQL_TSI_MINUTE",
       "HOUR",
-      "SQL_TSI_HOUR",
       "DAY",
-      "SQL_TSI_DAY",
       "WEEK",
-      "SQL_TSI_WEEK",
       "MONTH",
-      "SQL_TSI_MONTH",
       "QUARTER",
-      "SQL_TSI_QUARTER",
-      "YEAR",
-      "SQL_TSI_YEAR");
+      "YEAR");
 
   @BeforeClass
   public static void setup() throws Exception {
@@ -192,11 +182,11 @@ public class TestTimestampAddDiffFunctions extends ClusterTest {
   @Test // DRILL-6967
   public void testTimestampDiffQuarter() throws Exception {
     String query =
-        "SELECT TIMESTAMPDIFF(SQL_TSI_QUARTER, date '1996-03-09', date '1998-03-09') AS col1," +
+        "SELECT TIMESTAMPDIFF(QUARTER, date '1996-03-09', date '1998-03-09') AS col1," +
                 "TIMESTAMPDIFF(QUARTER, date '2019-01-01', date '2019-01-17') AS col2," +
-                "TIMESTAMPDIFF(SQL_TSI_QUARTER, date '2019-01-01', date '2019-03-31') AS col3," +
+                "TIMESTAMPDIFF(QUARTER, date '2019-01-01', date '2019-03-31') AS col3," +
                 "TIMESTAMPDIFF(QUARTER, date '2019-01-01', date '2019-04-01') AS col4," +
-                "TIMESTAMPDIFF(SQL_TSI_QUARTER, date '1970-01-01', date '2019-01-11') AS col5";
+                "TIMESTAMPDIFF(QUARTER, date '1970-01-01', date '2019-01-11') AS col5";
 
     testBuilder()
         .sqlQuery(query)
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestAnalyze.java b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestAnalyze.java
index 2eef180c07..58742b2af0 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestAnalyze.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestAnalyze.java
@@ -332,7 +332,7 @@ public class TestAnalyze extends ClusterTest {
       query = " select emp.employee_id from dfs.tmp.employeeUseStat emp join dfs.tmp.departmentUseStat dept"
               + " on emp.department_id = dept.department_id "
               + " group by emp.employee_id";
-      String[] expectedPlan8 = {"HashAgg\\(group=\\[\\{0\\}\\]\\).*rowcount = 730.2832515526484,.*",
+      String[] expectedPlan8 = {"HashAgg\\(group=\\[\\{0\\}\\]\\).*rowcount = 730.2832515526.*",
               "HashJoin\\(condition.*\\).*rowcount = 1155.0,.*",
               "Scan.*columns=\\[`department_id`, `employee_id`\\].*rowcount = 1155.0.*",
               "Scan.*columns=\\[`department_id`\\].*rowcount = 12.0.*"};
@@ -347,7 +347,7 @@ public class TestAnalyze extends ClusterTest {
               + " on emp.department_id = dept.department_id "
               + " group by emp.employee_id, emp.store_id, dept.department_description "
               + " having dept.department_description = 'FINANCE'";
-      String[] expectedPlan9 = {"HashAgg\\(group=\\[\\{0, 1, 2\\}\\]\\).*rowcount = 61.0263439444715.*",
+      String[] expectedPlan9 = {"HashAgg\\(group=\\[\\{0, 1, 2\\}\\]\\).*rowcount = 61.02634394447.*",
               "HashJoin\\(condition.*\\).*rowcount = 96.25,.*",
               "Scan.*columns=\\[`department_id`, `employee_id`, `store_id`\\].*rowcount = 1155.0.*",
               "Filter\\(condition=\\[=\\(\\$1, 'FINANCE'\\)\\]\\).*rowcount = 1.0,.*",
@@ -362,7 +362,7 @@ public class TestAnalyze extends ClusterTest {
               + " on emp.department_id = dept.department_id "
               + " group by emp.employee_id, emp.store_id "
               + " having emp.store_id = 7";
-      String[] expectedPlan10 = {"HashAgg\\(group=\\[\\{0, 1\\}\\]\\).*rowcount = 29.389586621217404.*",
+      String[] expectedPlan10 = {"HashAgg\\(group=\\[\\{0, 1\\}\\]\\).*rowcount = 29.389586621217.*",
               "HashJoin\\(condition.*\\).*rowcount = 46.2,.*",
               "Filter\\(condition=\\[=\\(\\$2, 7\\)\\]\\).*rowcount = 46.2,.*",
               "Scan.*columns=\\[`department_id`, `employee_id`, `store_id`\\].*rowcount = 1155.0.*",
diff --git a/exec/jdbc-all/pom.xml b/exec/jdbc-all/pom.xml
index d74ac18306..d2f3415033 100644
--- a/exec/jdbc-all/pom.xml
+++ b/exec/jdbc-all/pom.xml
@@ -34,7 +34,7 @@
        "package.namespace.prefix" equals to "oadd.". It can be overridden if necessary within any profile -->
   <properties>
     <package.namespace.prefix>oadd.</package.namespace.prefix>
-    <jdbc-all-jar.maxsize>47000000</jdbc-all-jar.maxsize>
+    <jdbc-all-jar.maxsize>48000000</jdbc-all-jar.maxsize>
   </properties>
 
   <dependencies>
@@ -1284,7 +1284,7 @@
     <profile>
       <id>hadoop-2</id>
       <properties>
-        <jdbc-all-jar.maxsize>50000000</jdbc-all-jar.maxsize>
+        <jdbc-all-jar.maxsize>51000000</jdbc-all-jar.maxsize>
       </properties>
     </profile>
   </profiles>
diff --git a/pom.xml b/pom.xml
index 649977af05..811173c141 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,11 +55,11 @@
     <parquet.version>1.12.2</parquet.version>
     <parquet.format.version>2.8.0</parquet.format.version>
     <calcite.groupId>org.apache.calcite</calcite.groupId>
-    <calcite.version>1.32.0</calcite.version>
-    <avatica.version>1.22.0</avatica.version>
+    <calcite.version>1.33.0</calcite.version>
+    <avatica.version>1.23.0</avatica.version>
     <janino.version>3.1.8</janino.version>
     <sqlline.version>1.12.0</sqlline.version>
-    <jackson.version>2.13.4.20221013</jackson.version>
+    <jackson.version>2.14.1</jackson.version>
     <zookeeper.version>3.5.7</zookeeper.version>
     <mapr.release.version>6.1.0-mapr</mapr.release.version>
     <ojai.version>3.0-mapr-1808</ojai.version>