blob: 3a4412cd2402ef8d1a20417c77768e5bc9b4fe0d [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http:# www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
{
# Generated parser implementation class package and name
package: "org.apache.drill.exec.planner.sql.parser.impl",
class: "DrillParserImpl",
# List of import statements.
imports: [
"org.apache.drill.exec.planner.sql.parser.*",
"org.apache.calcite.util.*",
"java.util.*"
]
# List of keywords.
keywords: [
"DATABASES",
"SCHEMAS",
"TABLES",
"USE",
"FILES",
"REFRESH",
"METADATA",
"IF",
"JAR",
"PROPERTIES",
"ANALYZE",
"COMPUTE",
"ESTIMATE",
"STATISTICS",
"SAMPLE",
"COLUMNS",
"REMOVE"
]
# List of methods for parsing custom SQL statements.
statementParserMethods: [
"SqlShowTables()",
"SqlShowSchemas()",
"SqlDescribeSchema()"
"SqlDescribeTable()",
"SqlUseSchema()",
"SqlCreateOrReplace()"
"SqlDrop()",
"SqlShowFiles()",
"SqlRefreshMetadata()",
"SqlCreateFunction()",
"SqlDropFunction()",
"SqlAnalyzeTable()",
"DrillSqlSetOption(Span.of(), null)",
"DrillSqlResetOption(Span.of(), null)",
"SqlAlterSchema()"
]
# List of methods for parsing custom literals.
# Example: ParseJsonLiteral().
literalParserMethods: [
]
# List of methods for parsing custom data types.
dataTypeParserMethods: [
]
# Binary operators tokens
binaryOperatorsTokens: [
]
# Binary operators initialization
extraBinaryExpressions: [
]
# List of files in @includes directory that have parser method
# implementations for custom SQL statements, literals or types
# given as part of "statementParserMethods", "literalParserMethods" or
# "dataTypeParserMethods".
implementationFiles: [
"parserImpls.ftl"
]
# List of methods for parsing extensions to "CREATE [OR REPLACE]" calls.
# Each must accept arguments "(SqlParserPos pos, boolean replace)".
createStatementParserMethods: [
]
# List of methods for parsing extensions to "ALTER <scope>" calls.
# Each must accept arguments "(SqlParserPos pos, String scope)".
alterStatementParserMethods: [
"DrillSqlSetOption",
"DrillSqlResetOption"
]
# List of methods for parsing extensions to "DROP" calls.
# Each must accept arguments "(SqlParserPos pos)".
dropStatementParserMethods: [
]
# 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"
"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"
"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"
# 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"
]
# List of non-reserved keywords to add;
# items in this list become non-reserved
nonReservedKeywordsToAdd: [
]
# List of non-reserved keywords to remove;
# items in this list become reserved
nonReservedKeywordsToRemove: [
]
# List of additional join types. Each is a method with no arguments.
# Example: LeftSemiJoin()
joinTypes: [
]
# List of methods for parsing builtin function calls.
# Return type of method implementation should be "SqlNode".
# Example: DateFunctionCall().
builtinFunctionCallMethods: [
]
includePosixOperators: false,
includeCompoundIdentifier: false,
includeBraces: true,
includeAdditionalDeclarations: false,
identifierMaxLength: 1024
}