1194 lines
44 KiB
C++
1194 lines
44 KiB
C++
/* THIS FILE WAS AUTOMATICALLY GENERATED BY inline_grammar.py */
|
|
#pragma once
|
|
|
|
namespace duckdb {
|
|
|
|
const char INLINED_PEG_GRAMMAR[] = {
|
|
"UnreservedKeyword <- 'ABORT' /\n"
|
|
"'ABSOLUTE' /\n"
|
|
"'ACCESS' /\n"
|
|
"'ACTION' /\n"
|
|
"'ADD' /\n"
|
|
"'ADMIN' /\n"
|
|
"'AFTER' /\n"
|
|
"'AGGREGATE' /\n"
|
|
"'ALSO' /\n"
|
|
"'ALTER' /\n"
|
|
"'ALWAYS' /\n"
|
|
"'ASSERTION' /\n"
|
|
"'ASSIGNMENT' /\n"
|
|
"'ATTACH' /\n"
|
|
"'ATTRIBUTE' /\n"
|
|
"'BACKWARD' /\n"
|
|
"'BEFORE' /\n"
|
|
"'BEGIN' /\n"
|
|
"'CACHE' /\n"
|
|
"'CALL' /\n"
|
|
"'CALLED' /\n"
|
|
"'CASCADE' /\n"
|
|
"'CASCADED' /\n"
|
|
"'CATALOG' /\n"
|
|
"'CENTURY' /\n"
|
|
"'CENTURIES' /\n"
|
|
"'CHAIN' /\n"
|
|
"'CHARACTERISTICS' /\n"
|
|
"'CHECKPOINT' /\n"
|
|
"'CLASS' /\n"
|
|
"'CLOSE' /\n"
|
|
"'CLUSTER' /\n"
|
|
"'COMMENT' /\n"
|
|
"'COMMENTS' /\n"
|
|
"'COMMIT' /\n"
|
|
"'COMMITTED' /\n"
|
|
"'COMPRESSION' /\n"
|
|
"'CONFIGURATION' /\n"
|
|
"'CONFLICT' /\n"
|
|
"'CONNECTION' /\n"
|
|
"'CONSTRAINTS' /\n"
|
|
"'CONTENT' /\n"
|
|
"'CONTINUE' /\n"
|
|
"'CONVERSION' /\n"
|
|
"'COPY' /\n"
|
|
"'COST' /\n"
|
|
"'CSV' /\n"
|
|
"'CUBE' /\n"
|
|
"'CURRENT' /\n"
|
|
"'CURSOR' /\n"
|
|
"'CYCLE' /\n"
|
|
"'DATA' /\n"
|
|
"'DATABASE' /\n"
|
|
"'DAY' /\n"
|
|
"'DAYS' /\n"
|
|
"'DEALLOCATE' /\n"
|
|
"'DECADE' /\n"
|
|
"'DECADES' /\n"
|
|
"'DECLARE' /\n"
|
|
"'DEFAULTS' /\n"
|
|
"'DEFERRED' /\n"
|
|
"'DEFINER' /\n"
|
|
"'DELETE' /\n"
|
|
"'DELIMITER' /\n"
|
|
"'DELIMITERS' /\n"
|
|
"'DEPENDS' /\n"
|
|
"'DETACH' /\n"
|
|
"'DICTIONARY' /\n"
|
|
"'DISABLE' /\n"
|
|
"'DISCARD' /\n"
|
|
"'DOCUMENT' /\n"
|
|
"'DOMAIN' /\n"
|
|
"'DOUBLE' /\n"
|
|
"'DROP' /\n"
|
|
"'EACH' /\n"
|
|
"'ENABLE' /\n"
|
|
"'ENCODING' /\n"
|
|
"'ENCRYPTED' /\n"
|
|
"'ENUM' /\n"
|
|
"'ERROR' /\n"
|
|
"'ESCAPE' /\n"
|
|
"'EVENT' /\n"
|
|
"'EXCLUDE' /\n"
|
|
"'EXCLUDING' /\n"
|
|
"'EXCLUSIVE' /\n"
|
|
"'EXECUTE' /\n"
|
|
"'EXPLAIN' /\n"
|
|
"'EXPORT' /\n"
|
|
"'EXPORT_STATE' /\n"
|
|
"'EXTENSION' /\n"
|
|
"'EXTENSIONS' /\n"
|
|
"'EXTERNAL' /\n"
|
|
"'FAMILY' /\n"
|
|
"'FILTER' /\n"
|
|
"'FIRST' /\n"
|
|
"'FOLLOWING' /\n"
|
|
"'FORCE' /\n"
|
|
"'FORWARD' /\n"
|
|
"'FUNCTION' /\n"
|
|
"'FUNCTIONS' /\n"
|
|
"'GLOBAL' /\n"
|
|
"'GRANT' /\n"
|
|
"'GRANTED' /\n"
|
|
"'GROUPS' /\n"
|
|
"'HANDLER' /\n"
|
|
"'HEADER' /\n"
|
|
"'HOLD' /\n"
|
|
"'HOUR' /\n"
|
|
"'HOURS' /\n"
|
|
"'IDENTITY' /\n"
|
|
"'IF' /\n"
|
|
"'IGNORE' /\n"
|
|
"'IMMEDIATE' /\n"
|
|
"'IMMUTABLE' /\n"
|
|
"'IMPLICIT' /\n"
|
|
"'IMPORT' /\n"
|
|
"'INCLUDE' /\n"
|
|
"'INCLUDING' /\n"
|
|
"'INCREMENT' /\n"
|
|
"'INDEX' /\n"
|
|
"'INDEXES' /\n"
|
|
"'INHERIT' /\n"
|
|
"'INHERITS' /\n"
|
|
"'INLINE' /\n"
|
|
"'INPUT' /\n"
|
|
"'INSENSITIVE' /\n"
|
|
"'INSERT' /\n"
|
|
"'INSTALL' /\n"
|
|
"'INSTEAD' /\n"
|
|
"'INVOKER' /\n"
|
|
"'JSON' /\n"
|
|
"'ISOLATION' /\n"
|
|
"'KEY' /\n"
|
|
"'LABEL' /\n"
|
|
"'LANGUAGE' /\n"
|
|
"'LARGE' /\n"
|
|
"'LAST' /\n"
|
|
"'LEAKPROOF' /\n"
|
|
"'LEVEL' /\n"
|
|
"'LISTEN' /\n"
|
|
"'LOAD' /\n"
|
|
"'LOCAL' /\n"
|
|
"'LOCATION' /\n"
|
|
"'LOCK' /\n"
|
|
"'LOCKED' /\n"
|
|
"'LOGGED' /\n"
|
|
"'MACRO' /\n"
|
|
"'MAPPING' /\n"
|
|
"'MATCH' /\n"
|
|
"'MATCHED' /\n"
|
|
"'MATERIALIZED' /\n"
|
|
"'MAXVALUE' /\n"
|
|
"'MERGE' /\n"
|
|
"'METHOD' /\n"
|
|
"'MICROSECOND' /\n"
|
|
"'MICROSECONDS' /\n"
|
|
"'MILLENNIUM' /\n"
|
|
"'MILLENNIA' /\n"
|
|
"'MILLISECOND' /\n"
|
|
"'MILLISECONDS' /\n"
|
|
"'MINUTE' /\n"
|
|
"'MINUTES' /\n"
|
|
"'MINVALUE' /\n"
|
|
"'MODE' /\n"
|
|
"'MONTH' /\n"
|
|
"'MONTHS' /\n"
|
|
"'MOVE' /\n"
|
|
"'NAME' /\n"
|
|
"'NAMES' /\n"
|
|
"'NEW' /\n"
|
|
"'NEXT' /\n"
|
|
"'NO' /\n"
|
|
"'NOTHING' /\n"
|
|
"'NOTIFY' /\n"
|
|
"'NOWAIT' /\n"
|
|
"'NULLS' /\n"
|
|
"'OBJECT' /\n"
|
|
"'OF' /\n"
|
|
"'OFF' /\n"
|
|
"'OIDS' /\n"
|
|
"'OLD' /\n"
|
|
"'OPERATOR' /\n"
|
|
"'OPTION' /\n"
|
|
"'OPTIONS' /\n"
|
|
"'ORDINALITY' /\n"
|
|
"'OTHERS' /\n"
|
|
"'OVER' /\n"
|
|
"'OVERRIDING' /\n"
|
|
"'OWNED' /\n"
|
|
"'OWNER' /\n"
|
|
"'PARALLEL' /\n"
|
|
"'PARSER' /\n"
|
|
"'PARTIAL' /\n"
|
|
"'PARTITION' /\n"
|
|
"'PARTITIONED' /\n"
|
|
"'PASSING' /\n"
|
|
"'PASSWORD' /\n"
|
|
"'PERCENT' /\n"
|
|
"'PERSISTENT' /\n"
|
|
"'PLANS' /\n"
|
|
"'POLICY' /\n"
|
|
"'PRAGMA' /\n"
|
|
"'PRECEDING' /\n"
|
|
"'PREPARE' /\n"
|
|
"'PREPARED' /\n"
|
|
"'PRESERVE' /\n"
|
|
"'PRIOR' /\n"
|
|
"'PRIVILEGES' /\n"
|
|
"'PROCEDURAL' /\n"
|
|
"'PROCEDURE' /\n"
|
|
"'PROGRAM' /\n"
|
|
"'PUBLICATION' /\n"
|
|
"'QUARTER' /\n"
|
|
"'QUARTERS' /\n"
|
|
"'QUOTE' /\n"
|
|
"'RANGE' /\n"
|
|
"'READ' /\n"
|
|
"'REASSIGN' /\n"
|
|
"'RECHECK' /\n"
|
|
"'RECURSIVE' /\n"
|
|
"'REF' /\n"
|
|
"'REFERENCING' /\n"
|
|
"'REFRESH' /\n"
|
|
"'REINDEX' /\n"
|
|
"'RELATIVE' /\n"
|
|
"'RELEASE' /\n"
|
|
"'RENAME' /\n"
|
|
"'REPEATABLE' /\n"
|
|
"'REPLACE' /\n"
|
|
"'REPLICA' /\n"
|
|
"'RESET' /\n"
|
|
"'RESPECT' /\n"
|
|
"'RESTART' /\n"
|
|
"'RESTRICT' /\n"
|
|
"'RETURNS' /\n"
|
|
"'REVOKE' /\n"
|
|
"'ROLE' /\n"
|
|
"'ROLLBACK' /\n"
|
|
"'ROLLUP' /\n"
|
|
"'ROWS' /\n"
|
|
"'RULE' /\n"
|
|
"'SAMPLE' /\n"
|
|
"'SAVEPOINT' /\n"
|
|
"'SCHEMA' /\n"
|
|
"'SCHEMAS' /\n"
|
|
"'SCOPE' /\n"
|
|
"'SCROLL' /\n"
|
|
"'SEARCH' /\n"
|
|
"'SECRET' /\n"
|
|
"'SECOND' /\n"
|
|
"'SECONDS' /\n"
|
|
"'SECURITY' /\n"
|
|
"'SEQUENCE' /\n"
|
|
"'SEQUENCES' /\n"
|
|
"'SERIALIZABLE' /\n"
|
|
"'SERVER' /\n"
|
|
"'SESSION' /\n"
|
|
"'SET' /\n"
|
|
"'SETS' /\n"
|
|
"'SHARE' /\n"
|
|
"'SIMPLE' /\n"
|
|
"'SKIP' /\n"
|
|
"'SNAPSHOT' /\n"
|
|
"'SORTED' /\n"
|
|
"'SOURCE' /\n"
|
|
"'SQL' /\n"
|
|
"'STABLE' /\n"
|
|
"'STANDALONE' /\n"
|
|
"'START' /\n"
|
|
"'STATEMENT' /\n"
|
|
"'STATISTICS' /\n"
|
|
"'STDIN' /\n"
|
|
"'STDOUT' /\n"
|
|
"'STORAGE' /\n"
|
|
"'STORED' /\n"
|
|
"'STRICT' /\n"
|
|
"'STRIP' /\n"
|
|
"'SUBSCRIPTION' /\n"
|
|
"'SYSID' /\n"
|
|
"'SYSTEM' /\n"
|
|
"'TABLES' /\n"
|
|
"'TABLESPACE' /\n"
|
|
"'TARGET' /\n"
|
|
"'TEMP' /\n"
|
|
"'TEMPLATE' /\n"
|
|
"'TEMPORARY' /\n"
|
|
"'TEXT' /\n"
|
|
"'TIES' /\n"
|
|
"'TRANSACTION' /\n"
|
|
"'TRANSFORM' /\n"
|
|
"'TRIGGER' /\n"
|
|
"'TRUNCATE' /\n"
|
|
"'TRUSTED' /\n"
|
|
"'TYPE' /\n"
|
|
"'TYPES' /\n"
|
|
"'UNBOUNDED' /\n"
|
|
"'UNCOMMITTED' /\n"
|
|
"'UNENCRYPTED' /\n"
|
|
"'UNKNOWN' /\n"
|
|
"'UNLISTEN' /\n"
|
|
"'UNLOGGED' /\n"
|
|
"'UNTIL' /\n"
|
|
"'UPDATE' /\n"
|
|
"'USE' /\n"
|
|
"'USER' /\n"
|
|
"'VACUUM' /\n"
|
|
"'VALID' /\n"
|
|
"'VALIDATE' /\n"
|
|
"'VALIDATOR' /\n"
|
|
"'VALUE' /\n"
|
|
"'VARIABLE' /\n"
|
|
"'VARYING' /\n"
|
|
"'VERSION' /\n"
|
|
"'VIEW' /\n"
|
|
"'VIEWS' /\n"
|
|
"'VIRTUAL' /\n"
|
|
"'VOLATILE' /\n"
|
|
"'WEEK' /\n"
|
|
"'WEEKS' /\n"
|
|
"'WHITESPACE' /\n"
|
|
"'WITHIN' /\n"
|
|
"'WITHOUT' /\n"
|
|
"'WORK' /\n"
|
|
"'WRAPPER' /\n"
|
|
"'WRITE' /\n"
|
|
"'XML' /\n"
|
|
"'YEAR' /\n"
|
|
"'YEARS' /\n"
|
|
"'YES' /\n"
|
|
"'ZONE'\n"
|
|
"ReservedKeyword <- 'ALL' /\n"
|
|
"'ANALYSE' /\n"
|
|
"'ANALYZE' /\n"
|
|
"'AND' /\n"
|
|
"'ANY' /\n"
|
|
"'ARRAY' /\n"
|
|
"'AS' /\n"
|
|
"'ASC' /\n"
|
|
"'ASYMMETRIC' /\n"
|
|
"'BOTH' /\n"
|
|
"'CASE' /\n"
|
|
"'CAST' /\n"
|
|
"'CHECK' /\n"
|
|
"'COLLATE' /\n"
|
|
"'COLUMN' /\n"
|
|
"'CONSTRAINT' /\n"
|
|
"'CREATE' /\n"
|
|
"'DEFAULT' /\n"
|
|
"'DEFERRABLE' /\n"
|
|
"'DESC' /\n"
|
|
"'DESCRIBE' /\n"
|
|
"'DISTINCT' /\n"
|
|
"'DO' /\n"
|
|
"'ELSE' /\n"
|
|
"'END' /\n"
|
|
"'EXCEPT' /\n"
|
|
"'FALSE' /\n"
|
|
"'FETCH' /\n"
|
|
"'FOR' /\n"
|
|
"'FOREIGN' /\n"
|
|
"'FROM' /\n"
|
|
"'GROUP' /\n"
|
|
"'HAVING' /\n"
|
|
"'QUALIFY' /\n"
|
|
"'IN' /\n"
|
|
"'INITIALLY' /\n"
|
|
"'INTERSECT' /\n"
|
|
"'INTO' /\n"
|
|
"'LAMBDA' /\n"
|
|
"'LATERAL' /\n"
|
|
"'LEADING' /\n"
|
|
"'LIMIT' /\n"
|
|
"'NOT' /\n"
|
|
"'NULL' /\n"
|
|
"'OFFSET' /\n"
|
|
"'ON' /\n"
|
|
"'ONLY' /\n"
|
|
"'OR' /\n"
|
|
"'ORDER' /\n"
|
|
"'PIVOT' /\n"
|
|
"'PIVOT_WIDER' /\n"
|
|
"'PIVOT_LONGER' /\n"
|
|
"'PLACING' /\n"
|
|
"'PRIMARY' /\n"
|
|
"'REFERENCES' /\n"
|
|
"'RETURNING' /\n"
|
|
"'SELECT' /\n"
|
|
"'SHOW' /\n"
|
|
"'SOME' /\n"
|
|
"'SUMMARIZE' /\n"
|
|
"'SYMMETRIC' /\n"
|
|
"'TABLE' /\n"
|
|
"'THEN' /\n"
|
|
"'TO' /\n"
|
|
"'TRAILING' /\n"
|
|
"'TRUE' /\n"
|
|
"'UNION' /\n"
|
|
"'UNIQUE' /\n"
|
|
"'UNPIVOT' /\n"
|
|
"'USING' /\n"
|
|
"'VARIADIC' /\n"
|
|
"'WHEN' /\n"
|
|
"'WHERE' /\n"
|
|
"'WINDOW' /\n"
|
|
"'WITH'\n"
|
|
"ColumnNameKeyword <- 'BETWEEN' /\n"
|
|
"'BIGINT' /\n"
|
|
"'BIT' /\n"
|
|
"'BOOLEAN' /\n"
|
|
"'CHAR' /\n"
|
|
"'CHARACTER' /\n"
|
|
"'COALESCE' /\n"
|
|
"'COLUMNS' /\n"
|
|
"'DEC' /\n"
|
|
"'DECIMAL' /\n"
|
|
"'EXISTS' /\n"
|
|
"'EXTRACT' /\n"
|
|
"'FLOAT' /\n"
|
|
"'GENERATED' /\n"
|
|
"'GROUPING' /\n"
|
|
"'GROUPING_ID' /\n"
|
|
"'INOUT' /\n"
|
|
"'INT' /\n"
|
|
"'INTEGER' /\n"
|
|
"'INTERVAL' /\n"
|
|
"'MAP' /\n"
|
|
"'NATIONAL' /\n"
|
|
"'NCHAR' /\n"
|
|
"'NONE' /\n"
|
|
"'NULLIF' /\n"
|
|
"'NUMERIC' /\n"
|
|
"'OUT' /\n"
|
|
"'OVERLAY' /\n"
|
|
"'POSITION' /\n"
|
|
"'PRECISION' /\n"
|
|
"'REAL' /\n"
|
|
"'ROW' /\n"
|
|
"'SETOF' /\n"
|
|
"'SMALLINT' /\n"
|
|
"'SUBSTRING' /\n"
|
|
"'STRUCT' /\n"
|
|
"'TIME' /\n"
|
|
"'TIMESTAMP' /\n"
|
|
"'TREAT' /\n"
|
|
"'TRIM' /\n"
|
|
"'TRY_CAST' /\n"
|
|
"'VALUES' /\n"
|
|
"'VARCHAR' /\n"
|
|
"'XMLATTRIBUTES' /\n"
|
|
"'XMLCONCAT' /\n"
|
|
"'XMLELEMENT' /\n"
|
|
"'XMLEXISTS' /\n"
|
|
"'XMLFOREST' /\n"
|
|
"'XMLNAMESPACES' /\n"
|
|
"'XMLPARSE' /\n"
|
|
"'XMLPI' /\n"
|
|
"'XMLROOT' /\n"
|
|
"'XMLSERIALIZE' /\n"
|
|
"'XMLTABLE'\n"
|
|
"FuncNameKeyword <- 'ASOF' /\n"
|
|
"'AT' /\n"
|
|
"'AUTHORIZATION' /\n"
|
|
"'BINARY' /\n"
|
|
"'COLLATION' /\n"
|
|
"'CONCURRENTLY' /\n"
|
|
"'CROSS' /\n"
|
|
"'FREEZE' /\n"
|
|
"'FULL' /\n"
|
|
"'GENERATED' /\n"
|
|
"'GLOB' /\n"
|
|
"'ILIKE' /\n"
|
|
"'INNER' /\n"
|
|
"'IS' /\n"
|
|
"'ISNULL' /\n"
|
|
"'JOIN' /\n"
|
|
"'LEFT' /\n"
|
|
"'LIKE' /\n"
|
|
"'MAP' /\n"
|
|
"'NATURAL' /\n"
|
|
"'NOTNULL' /\n"
|
|
"'OUTER' /\n"
|
|
"'OVERLAPS' /\n"
|
|
"'POSITIONAL' /\n"
|
|
"'RIGHT' /\n"
|
|
"'SIMILAR' /\n"
|
|
"'STRUCT' /\n"
|
|
"'TABLESAMPLE' /\n"
|
|
"'VERBOSE'\n"
|
|
"TypeNameKeyword <- 'ASOF' /\n"
|
|
"'AT' /\n"
|
|
"'AUTHORIZATION' /\n"
|
|
"'BINARY' /\n"
|
|
"'BY' /\n"
|
|
"'COLLATION' /\n"
|
|
"'COLUMNS' /\n"
|
|
"'CONCURRENTLY' /\n"
|
|
"'CROSS' /\n"
|
|
"'FREEZE' /\n"
|
|
"'FULL' /\n"
|
|
"'GLOB' /\n"
|
|
"'ILIKE' /\n"
|
|
"'INNER' /\n"
|
|
"'IS' /\n"
|
|
"'ISNULL' /\n"
|
|
"'JOIN' /\n"
|
|
"'LEFT' /\n"
|
|
"'LIKE' /\n"
|
|
"'NATURAL' /\n"
|
|
"'NOTNULL' /\n"
|
|
"'OUTER' /\n"
|
|
"'OVERLAPS' /\n"
|
|
"'POSITIONAL' /\n"
|
|
"'RIGHT' /\n"
|
|
"'UNPACK' /\n"
|
|
"'SIMILAR' /\n"
|
|
"'TABLESAMPLE' /\n"
|
|
"'TRY_CAST' /\n"
|
|
"'VERBOSE' /\n"
|
|
"'SEMI' /\n"
|
|
"'ANTI'\n"
|
|
"PivotStatement <- PivotKeyword TableRef PivotOn? PivotUsing? GroupByClause?\n"
|
|
"PivotOn <- 'ON' PivotColumnList\n"
|
|
"PivotUsing <- 'USING' TargetList\n"
|
|
"PivotColumnList <- List(Expression)\n"
|
|
"PivotKeyword <- 'PIVOT' / 'PIVOT_WIDER'\n"
|
|
"UnpivotKeyword <- 'UNPIVOT' / 'PIVOT_LONGER'\n"
|
|
"UnpivotStatement <- UnpivotKeyword TableRef 'ON' TargetList IntoNameValues?\n"
|
|
"IntoNameValues <- 'INTO' 'NAME' ColIdOrString ValueOrValues List(Identifier)\n"
|
|
"ValueOrValues <- 'VALUE' / 'VALUES'\n"
|
|
"IncludeExcludeNulls <- ('INCLUDE' / 'EXCLUDE') 'NULLS'\n"
|
|
"UnpivotHeader <- ColIdOrString / Parens(List(ColIdOrString))\n"
|
|
"ColumnReference <- CatalogReservedSchemaTableColumnName / SchemaReservedTableColumnName / TableReservedColumnName / ColumnName\n"
|
|
"CatalogReservedSchemaTableColumnName <- CatalogQualification ReservedSchemaQualification ReservedTableQualification ReservedColumnName\n"
|
|
"SchemaReservedTableColumnName <- SchemaQualification ReservedTableQualification ReservedColumnName\n"
|
|
"TableReservedColumnName <- TableQualification ReservedColumnName\n"
|
|
"FunctionExpression <- FunctionIdentifier Parens(DistinctOrAll? List(FunctionArgument)? OrderByClause? IgnoreNulls?) WithinGroupClause? FilterClause? ExportClause? OverClause?\n"
|
|
"FunctionIdentifier <- CatalogReservedSchemaFunctionName / SchemaReservedFunctionName / FunctionName\n"
|
|
"CatalogReservedSchemaFunctionName <- CatalogQualification ReservedSchemaQualification? ReservedFunctionName\n"
|
|
"SchemaReservedFunctionName <- SchemaQualification ReservedFunctionName\n"
|
|
"DistinctOrAll <- 'DISTINCT' / 'ALL'\n"
|
|
"ExportClause <- 'EXPORT_STATE'\n"
|
|
"WithinGroupClause <- 'WITHIN' 'GROUP' Parens(OrderByClause)\n"
|
|
"FilterClause <- 'FILTER' Parens('WHERE'? Expression)\n"
|
|
"IgnoreNulls <- ('IGNORE' 'NULLS') / ('RESPECT' 'NULLS')\n"
|
|
"ParenthesisExpression <- Parens(List(Expression))\n"
|
|
"LiteralExpression <- StringLiteral / NumberLiteral / ConstantLiteral\n"
|
|
"ConstantLiteral <- NullLiteral / TrueLiteral / FalseLiteral\n"
|
|
"NullLiteral <- 'NULL'\n"
|
|
"TrueLiteral <- 'TRUE'\n"
|
|
"FalseLiteral <- 'FALSE'\n"
|
|
"CastExpression <- CastOrTryCast Parens(Expression 'AS' Type)\n"
|
|
"CastOrTryCast <- 'CAST' / 'TRY_CAST'\n"
|
|
"StarExpression <- (ColId '.')* '*' ExcludeList? ReplaceList? RenameList?\n"
|
|
"ExcludeList <- 'EXCLUDE' (Parens(List(ExcludeName)) / ExcludeName)\n"
|
|
"ExcludeName <- DottedIdentifier / ColIdOrString\n"
|
|
"ReplaceList <- 'REPLACE' (Parens(List(ReplaceEntry)) / ReplaceEntry)\n"
|
|
"ReplaceEntry <- Expression 'AS' ColumnReference\n"
|
|
"RenameList <- 'RENAME' (Parens(List(RenameEntry)) / RenameEntry)\n"
|
|
"RenameEntry <- ColumnReference 'AS' Identifier\n"
|
|
"SubqueryExpression <- 'NOT'? 'EXISTS'? SubqueryReference\n"
|
|
"CaseExpression <- 'CASE' Expression? CaseWhenThen CaseWhenThen* CaseElse? 'END'\n"
|
|
"CaseWhenThen <- 'WHEN' Expression 'THEN' Expression\n"
|
|
"CaseElse <- 'ELSE' Expression\n"
|
|
"TypeLiteral <- ColId StringLiteral\n"
|
|
"IntervalLiteral <- 'INTERVAL' IntervalParameter IntervalUnit?\n"
|
|
"IntervalParameter <- StringLiteral / NumberLiteral / Parens(Expression)\n"
|
|
"IntervalUnit <- ColId\n"
|
|
"FrameClause <- Framing FrameExtent WindowExcludeClause?\n"
|
|
"Framing <- 'ROWS' / 'RANGE' / 'GROUPS'\n"
|
|
"FrameExtent <- ('BETWEEN' FrameBound 'AND' FrameBound) / FrameBound\n"
|
|
"FrameBound <- ('UNBOUNDED' 'PRECEDING') / ('UNBOUNDED' 'FOLLOWING') / ('CURRENT' 'ROW') / (Expression 'PRECEDING') / (Expression 'FOLLOWING')\n"
|
|
"WindowExcludeClause <- 'EXCLUDE' WindowExcludeElement\n"
|
|
"WindowExcludeElement <- ('CURRENT' 'ROW') / 'GROUP' / 'TIES' / ('NO' 'OTHERS')\n"
|
|
"OverClause <- 'OVER' WindowFrame\n"
|
|
"WindowFrame <- WindowFrameDefinition / Identifier / Parens(Identifier)\n"
|
|
"WindowFrameDefinition <- Parens(BaseWindowName? WindowFrameContents) / Parens(WindowFrameContents)\n"
|
|
"WindowFrameContents <- WindowPartition? OrderByClause? FrameClause?\n"
|
|
"BaseWindowName <- Identifier\n"
|
|
"WindowPartition <- 'PARTITION' 'BY' List(Expression)\n"
|
|
"PrefixExpression <- PrefixOperator Expression\n"
|
|
"PrefixOperator <- 'NOT' / '-' / '+' / '~'\n"
|
|
"ListExpression <- 'ARRAY'? (BoundedListExpression / SelectStatement)\n"
|
|
"BoundedListExpression <- '[' List(Expression)? ']'\n"
|
|
"StructExpression <- '{' List(StructField)? '}'\n"
|
|
"StructField <- Expression ':' Expression\n"
|
|
"MapExpression <- 'MAP' StructExpression\n"
|
|
"GroupingExpression <- GroupingOrGroupingId Parens(List(Expression))\n"
|
|
"GroupingOrGroupingId <- 'GROUPING' / 'GROUPING_ID'\n"
|
|
"Parameter <- '?' / NumberedParameter / ColLabelParameter\n"
|
|
"NumberedParameter <- '$' NumberLiteral\n"
|
|
"ColLabelParameter <- '$' ColLabel\n"
|
|
"PositionalExpression <- '#' NumberLiteral\n"
|
|
"DefaultExpression <- 'DEFAULT'\n"
|
|
"ListComprehensionExpression <- '[' Expression 'FOR' List(Expression) ListComprehensionFilter? ']'\n"
|
|
"ListComprehensionFilter <- 'IF' Expression\n"
|
|
"SingleExpression <-\n"
|
|
" LiteralExpression /\n"
|
|
" Parameter /\n"
|
|
" SubqueryExpression /\n"
|
|
" SpecialFunctionExpression /\n"
|
|
" ParenthesisExpression /\n"
|
|
" IntervalLiteral /\n"
|
|
" TypeLiteral /\n"
|
|
" CaseExpression /\n"
|
|
" StarExpression /\n"
|
|
" CastExpression /\n"
|
|
" GroupingExpression /\n"
|
|
" MapExpression /\n"
|
|
" FunctionExpression /\n"
|
|
" ColumnReference /\n"
|
|
" PrefixExpression /\n"
|
|
" ListComprehensionExpression /\n"
|
|
" ListExpression /\n"
|
|
" StructExpression /\n"
|
|
" PositionalExpression /\n"
|
|
" DefaultExpression\n"
|
|
"OperatorLiteral <- <[\\+\\-\\*\\/\\%\\^\\<\\>\\=\\~\\!\\@\\&\\|\\`]+>\n"
|
|
"LikeOperator <- 'NOT'? LikeOrSimilarTo\n"
|
|
"LikeOrSimilarTo <- 'LIKE' / 'ILIKE' / 'GLOB' / ('SIMILAR' 'TO')\n"
|
|
"InOperator <- 'NOT'? 'IN'\n"
|
|
"IsOperator <- 'IS' 'NOT'? DistinctFrom?\n"
|
|
"DistinctFrom <- 'DISTINCT' 'FROM'\n"
|
|
"ConjunctionOperator <- 'OR' / 'AND'\n"
|
|
"ComparisonOperator <- '=' / '<=' / '>=' / '<' / '>' / '<>' / '!=' / '=='\n"
|
|
"BetweenOperator <- 'NOT'? 'BETWEEN'\n"
|
|
"CollateOperator <- 'COLLATE'\n"
|
|
"LambdaOperator <- '->'\n"
|
|
"EscapeOperator <- 'ESCAPE'\n"
|
|
"AtTimeZoneOperator <- 'AT' 'TIME' 'ZONE'\n"
|
|
"PostfixOperator <- '!'\n"
|
|
"AnyAllOperator <- ComparisonOperator AnyOrAll\n"
|
|
"AnyOrAll <- 'ANY' / 'ALL'\n"
|
|
"Operator <-\n"
|
|
" AnyAllOperator /\n"
|
|
" ConjunctionOperator /\n"
|
|
" LikeOperator /\n"
|
|
" InOperator /\n"
|
|
" IsOperator /\n"
|
|
" BetweenOperator /\n"
|
|
" CollateOperator /\n"
|
|
" LambdaOperator /\n"
|
|
" EscapeOperator /\n"
|
|
" AtTimeZoneOperator /\n"
|
|
" OperatorLiteral\n"
|
|
"CastOperator <- '::' Type\n"
|
|
"DotOperator <- '.' (FunctionExpression / ColLabel)\n"
|
|
"NotNull <- 'NOT' 'NULL'\n"
|
|
"Indirection <- CastOperator / DotOperator / SliceExpression / NotNull / PostfixOperator\n"
|
|
"BaseExpression <- SingleExpression Indirection*\n"
|
|
"Expression <- BaseExpression RecursiveExpression*\n"
|
|
"RecursiveExpression <- (Operator Expression)\n"
|
|
"SliceExpression <- '[' SliceBound ']'\n"
|
|
"SliceBound <- Expression? (':' (Expression / '-')?)? (':' Expression?)?\n"
|
|
"SpecialFunctionExpression <- CoalesceExpression / UnpackExpression / ColumnsExpression / ExtractExpression / LambdaExpression / NullIfExpression / PositionExpression / RowExpression / SubstringExpression / TrimExpression\n"
|
|
"CoalesceExpression <- 'COALESCE' Parens(List(Expression))\n"
|
|
"UnpackExpression <- 'UNPACK' Parens(Expression)\n"
|
|
"ColumnsExpression <- '*'? 'COLUMNS' Parens(Expression)\n"
|
|
"ExtractExpression <- 'EXTRACT' Parens(Expression 'FROM' Expression)\n"
|
|
"LambdaExpression <- 'LAMBDA' List(ColIdOrString) ':' Expression\n"
|
|
"NullIfExpression <- 'NULLIF' Parens(Expression ',' Expression)\n"
|
|
"PositionExpression <- 'POSITION' Parens(Expression)\n"
|
|
"RowExpression <- 'ROW' Parens(List(Expression))\n"
|
|
"SubstringExpression <- 'SUBSTRING' Parens(SubstringParameters / List(Expression))\n"
|
|
"SubstringParameters <- Expression 'FROM' NumberLiteral 'FOR' NumberLiteral\n"
|
|
"TrimExpression <- 'TRIM' Parens(TrimDirection? TrimSource? List(Expression))\n"
|
|
"TrimDirection <- 'BOTH' / 'LEADING' / 'TRAILING'\n"
|
|
"TrimSource <- Expression? 'FROM'\n"
|
|
"ExecuteStatement <- 'EXECUTE' Identifier TableFunctionArguments?\n"
|
|
"CreateSecretStmt <- 'SECRET' IfNotExists? SecretName? SecretStorageSpecifier? Parens(GenericCopyOptionList)\n"
|
|
"SecretStorageSpecifier <- 'IN' Identifier\n"
|
|
"CreateViewStmt <- 'RECURSIVE'? 'VIEW' IfNotExists? QualifiedName InsertColumnList? 'AS' SelectStatement\n"
|
|
"DescribeStatement <- ShowTables / ShowSelect / ShowAllTables / ShowQualifiedName\n"
|
|
"ShowSelect <- ShowOrDescribeOrSummarize SelectStatement\n"
|
|
"ShowAllTables <- ShowOrDescribe 'ALL' 'TABLES'\n"
|
|
"ShowQualifiedName <- ShowOrDescribeOrSummarize (BaseTableName / StringLiteral)?\n"
|
|
"ShowTables <- ShowOrDescribe 'TABLES' 'FROM' QualifiedName\n"
|
|
"ShowOrDescribeOrSummarize <- ShowOrDescribe / 'SUMMARIZE'\n"
|
|
"ShowOrDescribe <- 'SHOW' / 'DESCRIBE' / 'DESC'\n"
|
|
"VacuumStatement <- 'VACUUM' (VacuumLegacyOptions AnalyzeStatement / VacuumLegacyOptions QualifiedTarget / VacuumLegacyOptions / VacuumParensOptions QualifiedTarget?)?\n"
|
|
"VacuumLegacyOptions <- OptFull OptFreeze OptVerbose\n"
|
|
"VacuumParensOptions <- Parens(List(VacuumOption))\n"
|
|
"VacuumOption <- 'ANALYZE' / 'VERBOSE' / 'FREEZE' / 'FULL' / Identifier\n"
|
|
"OptFull <- 'FULL'?\n"
|
|
"OptFreeze <- 'FREEZE'?\n"
|
|
"OptVerbose <- 'VERBOSE'?\n"
|
|
"QualifiedTarget <- QualifiedName OptNameList\n"
|
|
"OptNameList <- Parens(List(Name))?\n"
|
|
"MergeIntoStatement <- WithClause? 'MERGE' 'INTO' TargetOptAlias MergeIntoUsingClause MergeMatch* ReturningClause?\n"
|
|
"MergeIntoUsingClause <- 'USING' TableRef JoinQualifier\n"
|
|
"MergeMatch <- MatchedClause / NotMatchedClause\n"
|
|
"MatchedClause <- 'WHEN' 'MATCHED' AndExpression? 'THEN' MatchedClauseAction\n"
|
|
"MatchedClauseAction <- UpdateMatchClause / DeleteMatchClause / InsertMatchClause / DoNothingMatchClause / ErrorMatchClause\n"
|
|
"UpdateMatchClause <- 'UPDATE' (UpdateMatchSetClause / ByNameOrPosition?)\n"
|
|
"DeleteMatchClause <- 'DELETE'\n"
|
|
"InsertMatchClause <- 'INSERT' (InsertValuesList / DefaultValues / InsertByNameOrPosition)?\n"
|
|
"InsertByNameOrPosition <- ByNameOrPosition? '*'?\n"
|
|
"InsertValuesList <- InsertColumnList? 'VALUES' Parens(List(Expression))\n"
|
|
"DoNothingMatchClause <- 'DO' 'NOTHING'\n"
|
|
"ErrorMatchClause <- 'ERROR' Expression?\n"
|
|
"UpdateMatchSetClause <- 'SET' (UpdateSetClause / '*')\n"
|
|
"AndExpression <- 'AND' Expression\n"
|
|
"NotMatchedClause <- 'WHEN' 'NOT' 'MATCHED' BySourceOrTarget? AndExpression? 'THEN' MatchedClauseAction\n"
|
|
"BySourceOrTarget <- 'BY' ('SOURCE' / 'TARGET')\n"
|
|
"PragmaStatement <- 'PRAGMA' (PragmaAssign / PragmaFunction)\n"
|
|
"PragmaAssign <- SettingName '=' VariableList\n"
|
|
"PragmaFunction <- PragmaName PragmaParameters?\n"
|
|
"PragmaParameters <- List(Expression)\n"
|
|
"DeallocateStatement <- 'DEALLOCATE' 'PREPARE'? Identifier\n"
|
|
"PrepareStatement <- 'PREPARE' Identifier TypeList? 'AS' Statement\n"
|
|
"TypeList <- Parens(List(Type))\n"
|
|
"CreateStatement <- 'CREATE' OrReplace? Temporary? (CreateTableStmt / CreateMacroStmt / CreateSequenceStmt / CreateTypeStmt / CreateSchemaStmt / CreateViewStmt / CreateIndexStmt / CreateSecretStmt)\n"
|
|
"OrReplace <- 'OR' 'REPLACE'\n"
|
|
"Temporary <- 'TEMP' / 'TEMPORARY' / 'PERSISTENT'\n"
|
|
"CreateTableStmt <- 'TABLE' IfNotExists? QualifiedName (CreateTableAs / CreateColumnList) CommitAction?\n"
|
|
"CreateTableAs <- IdentifierList? 'AS' SelectStatement WithData?\n"
|
|
"WithData <- 'WITH' 'NO'? 'DATA'\n"
|
|
"IdentifierList <- Parens(List(Identifier))\n"
|
|
"CreateColumnList <- Parens(CreateTableColumnList)\n"
|
|
"IfNotExists <- 'IF' 'NOT' 'EXISTS'\n"
|
|
"QualifiedName <- CatalogReservedSchemaIdentifier / SchemaReservedIdentifierOrStringLiteral / IdentifierOrStringLiteral\n"
|
|
"SchemaReservedIdentifierOrStringLiteral <- SchemaQualification ReservedIdentifierOrStringLiteral\n"
|
|
"CatalogReservedSchemaIdentifier <- CatalogQualification ReservedSchemaQualification ReservedIdentifierOrStringLiteral\n"
|
|
"IdentifierOrStringLiteral <- Identifier / StringLiteral\n"
|
|
"ReservedIdentifierOrStringLiteral <- ReservedIdentifier / StringLiteral\n"
|
|
"CatalogQualification <- CatalogName '.'\n"
|
|
"SchemaQualification <- SchemaName '.'\n"
|
|
"ReservedSchemaQualification <- ReservedSchemaName '.'\n"
|
|
"TableQualification <- TableName '.'\n"
|
|
"ReservedTableQualification <- ReservedTableName '.'\n"
|
|
"CreateTableColumnList <- List(CreateTableColumnElement)\n"
|
|
"CreateTableColumnElement <- ColumnDefinition / TopLevelConstraint\n"
|
|
"ColumnDefinition <- DottedIdentifier TypeOrGenerated ColumnConstraint*\n"
|
|
"TypeOrGenerated <- Type? GeneratedColumn?\n"
|
|
"ColumnConstraint <- NotNullConstraint / UniqueConstraint / PrimaryKeyConstraint / DefaultValue / CheckConstraint / ForeignKeyConstraint / ColumnCollation / ColumnCompression\n"
|
|
"NotNullConstraint <- 'NOT'? 'NULL'\n"
|
|
"UniqueConstraint <- 'UNIQUE'\n"
|
|
"PrimaryKeyConstraint <- 'PRIMARY' 'KEY'\n"
|
|
"DefaultValue <- 'DEFAULT' Expression\n"
|
|
"CheckConstraint <- 'CHECK' Parens(Expression)\n"
|
|
"ForeignKeyConstraint <- 'REFERENCES' BaseTableName Parens(ColumnList)? KeyActions?\n"
|
|
"ColumnCollation <- 'COLLATE' Expression\n"
|
|
"ColumnCompression <- 'USING' 'COMPRESSION' ColIdOrString\n"
|
|
"KeyActions <- UpdateAction? DeleteAction?\n"
|
|
"UpdateAction <- 'ON' 'UPDATE' KeyAction\n"
|
|
"DeleteAction <- 'ON' 'DELETE' KeyAction\n"
|
|
"KeyAction <- ('NO' 'ACTION') / 'RESTRICT' / 'CASCADE' / ('SET' 'NULL') / ('SET' 'DEFAULT')\n"
|
|
"TopLevelConstraint <- ConstraintNameClause? TopLevelConstraintList\n"
|
|
"TopLevelConstraintList <- TopPrimaryKeyConstraint / CheckConstraint / TopUniqueConstraint / TopForeignKeyConstraint\n"
|
|
"ConstraintNameClause <- 'CONSTRAINT' Identifier\n"
|
|
"TopPrimaryKeyConstraint <- 'PRIMARY' 'KEY' ColumnIdList\n"
|
|
"TopUniqueConstraint <- 'UNIQUE' ColumnIdList\n"
|
|
"TopForeignKeyConstraint <- 'FOREIGN' 'KEY' ColumnIdList ForeignKeyConstraint\n"
|
|
"ColumnIdList <- Parens(List(ColId))\n"
|
|
"PlainIdentifier <- !ReservedKeyword <[a-z_]i[a-z0-9_]i*>\n"
|
|
"QuotedIdentifier <- '\"' [^\"]* '\"'\n"
|
|
"DottedIdentifier <- Identifier ('.' Identifier)*\n"
|
|
"Identifier <- QuotedIdentifier / PlainIdentifier\n"
|
|
"ColId <- UnreservedKeyword / ColumnNameKeyword / Identifier\n"
|
|
"ColIdOrString <- ColId / StringLiteral\n"
|
|
"FuncName <- UnreservedKeyword / FuncNameKeyword / Identifier\n"
|
|
"TypeFuncName <- UnreservedKeyword / TypeNameKeyword / FuncNameKeyword / Identifier\n"
|
|
"TypeName <- UnreservedKeyword / TypeNameKeyword / Identifier\n"
|
|
"ColLabel <- ReservedKeyword / UnreservedKeyword / ColumnNameKeyword / FuncNameKeyword / TypeNameKeyword / Identifier\n"
|
|
"ColLabelOrString <- ColLabel / StringLiteral\n"
|
|
"GeneratedColumn <- Generated? 'AS' Parens(Expression) GeneratedColumnType?\n"
|
|
"Generated <- 'GENERATED' AlwaysOrByDefault?\n"
|
|
"AlwaysOrByDefault <- 'ALWAYS' / ('BY' 'DEFAULT')\n"
|
|
"GeneratedColumnType <- 'VIRTUAL' / 'STORED'\n"
|
|
"CommitAction <- 'ON' 'COMMIT' PreserveOrDelete\n"
|
|
"PreserveOrDelete <- ('PRESERVE' / 'DELETE') 'ROWS'\n"
|
|
"CreateIndexStmt <- Unique? 'INDEX' IfNotExists? IndexName? 'ON' BaseTableName IndexType? Parens(List(IndexElement)) WithList? WhereClause?\n"
|
|
"WithList <- 'WITH' Parens(List(RelOption)) / Oids\n"
|
|
"Oids <- ('WITH' / 'WITHOUT') 'OIDS'\n"
|
|
"IndexElement <- Expression DescOrAsc? NullsFirstOrLast?\n"
|
|
"Unique <- 'UNIQUE'\n"
|
|
"IndexType <- 'USING' Identifier\n"
|
|
"RelOption <- ColLabel ('.' ColLabel)* ('=' DefArg)?\n"
|
|
"DefArg <- FuncType / ReservedKeyword / StringLiteral / NumberLiteral / 'NONE'\n"
|
|
"FuncType <- Type / ('SETOF'? TypeFuncName '%' 'TYPE')\n"
|
|
"LoadStatement <- 'LOAD' ColIdOrString\n"
|
|
"InstallStatement <- 'FORCE'? 'INSTALL' Identifier FromSource? VersionNumber?\n"
|
|
"FromSource <- 'FROM' (Identifier / StringLiteral)\n"
|
|
"VersionNumber <- Identifier\n"
|
|
"DropStatement <- 'DROP' DropEntries DropBehavior?\n"
|
|
"DropEntries <-\n"
|
|
" DropTable /\n"
|
|
" DropTableFunction /\n"
|
|
" DropFunction /\n"
|
|
" DropSchema /\n"
|
|
" DropIndex /\n"
|
|
" DropSequence /\n"
|
|
" DropCollation /\n"
|
|
" DropType /\n"
|
|
" DropSecret\n"
|
|
"DropTable <- TableOrView IfExists? List(BaseTableName)\n"
|
|
"DropTableFunction <- 'MACRO' 'TABLE' IfExists? List(TableFunctionName)\n"
|
|
"DropFunction <- FunctionType IfExists? List(FunctionIdentifier)\n"
|
|
"DropSchema <- 'SCHEMA' IfExists? List(QualifiedSchemaName)\n"
|
|
"DropIndex <- 'INDEX' IfExists? List(QualifiedIndexName)\n"
|
|
"QualifiedIndexName <- CatalogQualification? SchemaQualification? IndexName\n"
|
|
"DropSequence <- 'SEQUENCE' IfExists? List(QualifiedSequenceName)\n"
|
|
"DropCollation <- 'COLLATION' IfExists? List(CollationName)\n"
|
|
"DropType <- 'TYPE' IfExists? List(QualifiedTypeName)\n"
|
|
"DropSecret <- Temporary? 'SECRET' IfExists? SecretName DropSecretStorage?\n"
|
|
"TableOrView <- 'TABLE' / 'VIEW' / ('MATERIALIZED' 'VIEW')\n"
|
|
"FunctionType <- 'MACRO' / 'FUNCTION'\n"
|
|
"DropBehavior <- 'CASCADE' / 'RESTRICT'\n"
|
|
"IfExists <- 'IF' 'EXISTS'\n"
|
|
"QualifiedSchemaName <- CatalogQualification? SchemaName\n"
|
|
"DropSecretStorage <- 'FROM' Identifier\n"
|
|
"UpdateStatement <- WithClause? 'UPDATE' UpdateTarget UpdateSetClause FromClause? WhereClause? ReturningClause?\n"
|
|
"UpdateTarget <- (BaseTableName 'SET') / (BaseTableName UpdateAlias? 'SET')\n"
|
|
"UpdateAlias <- 'AS'? ColId\n"
|
|
"UpdateSetClause <- List(UpdateSetElement) / (Parens(List(ColumnName)) '=' Expression)\n"
|
|
"UpdateSetElement <- ColumnName '=' Expression\n"
|
|
"InsertStatement <- WithClause? 'INSERT' OrAction? 'INTO' InsertTarget ByNameOrPosition? InsertColumnList? InsertValues OnConflictClause? ReturningClause?\n"
|
|
"OrAction <- 'OR' 'REPLACE' / 'IGNORE'\n"
|
|
"ByNameOrPosition <- 'BY' 'NAME' / 'POSITION'\n"
|
|
"InsertTarget <- BaseTableName InsertAlias?\n"
|
|
"InsertAlias <- 'AS' Identifier\n"
|
|
"ColumnList <- List(ColId)\n"
|
|
"InsertColumnList <- Parens(ColumnList)\n"
|
|
"InsertValues <- SelectStatement / DefaultValues\n"
|
|
"DefaultValues <- 'DEFAULT' 'VALUES'\n"
|
|
"OnConflictClause <- 'ON' 'CONFLICT' OnConflictTarget? OnConflictAction\n"
|
|
"OnConflictTarget <- OnConflictExpressionTarget / OnConflictIndexTarget\n"
|
|
"OnConflictExpressionTarget <- Parens(List(ColId)) WhereClause?\n"
|
|
"OnConflictIndexTarget <- 'ON' 'CONSTRAINT' ConstraintName\n"
|
|
"OnConflictAction <- OnConflictUpdate / OnConflictNothing\n"
|
|
"OnConflictUpdate <- 'DO' 'UPDATE' 'SET' UpdateSetClause WhereClause?\n"
|
|
"OnConflictNothing <- 'DO' 'NOTHING'\n"
|
|
"ReturningClause <- 'RETURNING' TargetList\n"
|
|
"CreateSchemaStmt <- 'SCHEMA' IfNotExists? QualifiedName\n"
|
|
"SelectStatement <- SelectOrParens (SetopClause SelectStatement)* ResultModifiers\n"
|
|
"SetopClause <- ('UNION' / 'EXCEPT' / 'INTERSECT') DistinctOrAll? ByName?\n"
|
|
"ByName <- 'BY' 'NAME'\n"
|
|
"SelectOrParens <- BaseSelect / Parens(SelectStatement)\n"
|
|
"BaseSelect <- WithClause? (OptionalParensSimpleSelect / ValuesClause / DescribeStatement / TableStatement / PivotStatement / UnpivotStatement) ResultModifiers\n"
|
|
"ResultModifiers <- OrderByClause? LimitClause? OffsetClause?\n"
|
|
"TableStatement <- 'TABLE' BaseTableName\n"
|
|
"OptionalParensSimpleSelect <- Parens(SimpleSelect) / SimpleSelect\n"
|
|
"SimpleSelect <- SelectFrom WhereClause? GroupByClause? HavingClause? WindowClause? QualifyClause? SampleClause?\n"
|
|
"SelectFrom <- (SelectClause FromClause?) / (FromClause SelectClause?)\n"
|
|
"WithStatement <- ColIdOrString InsertColumnList? UsingKey? 'AS' Materialized? SubqueryReference\n"
|
|
"UsingKey <- 'USING' 'KEY' Parens(List(ColId))\n"
|
|
"Materialized <- 'NOT'? 'MATERIALIZED'\n"
|
|
"WithClause <- 'WITH' Recursive? List(WithStatement)\n"
|
|
"Recursive <- 'RECURSIVE'\n"
|
|
"SelectClause <- 'SELECT' DistinctClause? TargetList\n"
|
|
"TargetList <- List(AliasedExpression)\n"
|
|
"ColumnAliases <- Parens(List(ColIdOrString))\n"
|
|
"DistinctClause <- ('DISTINCT' DistinctOn?) / 'ALL'\n"
|
|
"DistinctOn <- 'ON' Parens(List(Expression))\n"
|
|
"InnerTableRef <- ValuesRef / TableFunction / TableSubquery / BaseTableRef / ParensTableRef\n"
|
|
"TableRef <- InnerTableRef JoinOrPivot* TableAlias?\n"
|
|
"TableSubquery <- Lateral? SubqueryReference TableAlias?\n"
|
|
"BaseTableRef <- TableAliasColon? BaseTableName TableAlias? AtClause?\n"
|
|
"TableAliasColon <- ColIdOrString ':'\n"
|
|
"ValuesRef <- ValuesClause TableAlias?\n"
|
|
"ParensTableRef <- TableAliasColon? Parens(TableRef)\n"
|
|
"JoinOrPivot <- JoinClause / TablePivotClause / TableUnpivotClause\n"
|
|
"TablePivotClause <- 'PIVOT' Parens(TargetList 'FOR' PivotValueLists GroupByClause?) TableAlias?\n"
|
|
"TableUnpivotClause <- 'UNPIVOT' IncludeExcludeNulls? Parens(UnpivotHeader 'FOR' PivotValueLists) TableAlias?\n"
|
|
"PivotHeader <- BaseExpression\n"
|
|
"PivotValueLists <- PivotValueList PivotValueList*\n"
|
|
"PivotValueList <- PivotHeader 'IN' PivotTargetList\n"
|
|
"PivotTargetList <- Identifier / Parens(TargetList)\n"
|
|
"Lateral <- 'LATERAL'\n"
|
|
"BaseTableName <- CatalogReservedSchemaTable / SchemaReservedTable / TableName\n"
|
|
"SchemaReservedTable <- SchemaQualification ReservedTableName\n"
|
|
"CatalogReservedSchemaTable <- CatalogQualification ReservedSchemaQualification ReservedTableName\n"
|
|
"TableFunction <- TableFunctionLateralOpt / TableFunctionAliasColon\n"
|
|
"TableFunctionLateralOpt <- Lateral? QualifiedTableFunction TableFunctionArguments WithOrdinality? TableAlias?\n"
|
|
"TableFunctionAliasColon <- TableAliasColon QualifiedTableFunction TableFunctionArguments WithOrdinality?\n"
|
|
"WithOrdinality <- 'WITH' 'ORDINALITY'\n"
|
|
"QualifiedTableFunction <- CatalogQualification? SchemaQualification? TableFunctionName\n"
|
|
"TableFunctionArguments <- Parens(List(FunctionArgument)?)\n"
|
|
"FunctionArgument <- NamedParameter / Expression\n"
|
|
"NamedParameter <- TypeName Type? NamedParameterAssignment Expression\n"
|
|
"NamedParameterAssignment <- ':=' / '=>'\n"
|
|
"TableAlias <- 'AS'? (Identifier / StringLiteral) ColumnAliases?\n"
|
|
"AtClause <- 'AT' Parens(AtSpecifier)\n"
|
|
"AtSpecifier <- AtUnit '=>' Expression\n"
|
|
"AtUnit <- 'VERSION' / 'TIMESTAMP'\n"
|
|
"JoinClause <- RegularJoinClause / JoinWithoutOnClause\n"
|
|
"RegularJoinClause <- 'ASOF'? JoinType? 'JOIN' TableRef JoinQualifier\n"
|
|
"JoinWithoutOnClause <- JoinPrefix 'JOIN' TableRef\n"
|
|
"JoinQualifier <- OnClause / UsingClause\n"
|
|
"OnClause <- 'ON' Expression\n"
|
|
"UsingClause <- 'USING' Parens(List(ColumnName))\n"
|
|
"OuterJoinType <- 'FULL' / 'LEFT' / 'RIGHT'\n"
|
|
"JoinType <- (OuterJoinType 'OUTER'?) / 'SEMI' / 'ANTI' / 'INNER'\n"
|
|
"JoinPrefix <- 'CROSS' / ('NATURAL' JoinType?) / 'POSITIONAL'\n"
|
|
"FromClause <- 'FROM' List(TableRef)\n"
|
|
"WhereClause <- 'WHERE' Expression\n"
|
|
"GroupByClause <- 'GROUP' 'BY' GroupByExpressions\n"
|
|
"HavingClause <- 'HAVING' Expression\n"
|
|
"QualifyClause <- 'QUALIFY' Expression\n"
|
|
"SampleClause <- (TableSample / UsingSample) SampleEntry\n"
|
|
"UsingSample <- 'USING' 'SAMPLE'\n"
|
|
"TableSample <- 'TABLESAMPLE'\n"
|
|
"WindowClause <- 'WINDOW' List(WindowDefinition)\n"
|
|
"WindowDefinition <- Identifier 'AS' WindowFrameDefinition\n"
|
|
"SampleEntry <- SampleEntryFunction / SampleEntryCount\n"
|
|
"SampleEntryCount <- SampleCount Parens(SampleProperties)?\n"
|
|
"SampleEntryFunction <- SampleFunction? Parens(SampleCount) RepeatableSample?\n"
|
|
"SampleFunction <- ColId\n"
|
|
"SampleProperties <- ColId (',' NumberLiteral)?\n"
|
|
"RepeatableSample <- 'REPEATABLE' Parens(NumberLiteral)\n"
|
|
"SampleCount <- Expression SampleUnit?\n"
|
|
"SampleUnit <- '%' / 'PERCENT' / 'ROWS'\n"
|
|
"GroupByExpressions <- GroupByList / 'ALL'\n"
|
|
"GroupByList <- List(GroupByExpression)\n"
|
|
"GroupByExpression <- EmptyGroupingItem / CubeOrRollupClause / GroupingSetsClause / Expression\n"
|
|
"EmptyGroupingItem <- '(' ')'\n"
|
|
"CubeOrRollupClause <- CubeOrRollup Parens(List(Expression))\n"
|
|
"CubeOrRollup <- 'CUBE' / 'ROLLUP'\n"
|
|
"GroupingSetsClause <- 'GROUPING' 'SETS' Parens(GroupByList)\n"
|
|
"SubqueryReference <- Parens(SelectStatement)\n"
|
|
"OrderByExpression <- Expression DescOrAsc? NullsFirstOrLast?\n"
|
|
"DescOrAsc <- 'DESC' / 'DESCENDING' / 'ASC' / 'ASCENDING'\n"
|
|
"NullsFirstOrLast <- 'NULLS' 'FIRST' / 'LAST'\n"
|
|
"OrderByClause <- 'ORDER' 'BY' OrderByExpressions\n"
|
|
"OrderByExpressions <- List(OrderByExpression) / OrderByAll\n"
|
|
"OrderByAll <- 'ALL' DescOrAsc? NullsFirstOrLast?\n"
|
|
"LimitClause <- 'LIMIT' LimitValue\n"
|
|
"OffsetClause <- 'OFFSET' OffsetValue\n"
|
|
"LimitValue <- 'ALL' / (NumberLiteral 'PERCENT') / (Expression '%'?)\n"
|
|
"OffsetValue <- Expression RowOrRows?\n"
|
|
"RowOrRows <- 'ROW' / 'ROWS'\n"
|
|
"AliasedExpression <- (ColId ':' Expression) / (Expression 'AS' ColLabelOrString) / (Expression Identifier?)\n"
|
|
"ValuesClause <- 'VALUES' List(ValuesExpressions)\n"
|
|
"ValuesExpressions <- Parens(List(Expression))\n"
|
|
"TransactionStatement <- BeginTransaction / RollbackTransaction / CommitTransaction\n"
|
|
"BeginTransaction <- StartOrBegin Transaction? ReadOrWrite?\n"
|
|
"RollbackTransaction <- AbortOrRollback Transaction?\n"
|
|
"CommitTransaction <- CommitOrEnd Transaction?\n"
|
|
"StartOrBegin <- 'START' / 'BEGIN'\n"
|
|
"Transaction <- 'WORK' / 'TRANSACTION'\n"
|
|
"ReadOrWrite <- 'READ' ('ONLY' / 'WRITE')\n"
|
|
"AbortOrRollback <- 'ABORT' / 'ROLLBACK'\n"
|
|
"CommitOrEnd <- 'COMMIT' / 'END'\n"
|
|
"DeleteStatement <- WithClause? 'DELETE' 'FROM' TargetOptAlias DeleteUsingClause? WhereClause? ReturningClause?\n"
|
|
"TruncateStatement <- 'TRUNCATE' 'TABLE'? BaseTableName\n"
|
|
"TargetOptAlias <- BaseTableName 'AS'? ColId?\n"
|
|
"DeleteUsingClause <- 'USING' List(TableRef)\n"
|
|
"CreateTypeStmt <- 'TYPE' IfNotExists? QualifiedName 'AS' CreateType\n"
|
|
"CreateType <- ('ENUM' Parens(SelectStatement)) /\n"
|
|
" ('ENUM' Parens(List(StringLiteral))) /\n"
|
|
" Type\n"
|
|
"SetStatement <- 'SET' (StandardAssignment / SetTimeZone)\n"
|
|
"StandardAssignment <- (SetVariable / SetSetting) SetAssignment\n"
|
|
"SetTimeZone <- 'TIME' 'ZONE' Expression\n"
|
|
"SetSetting <- SettingScope? SettingName\n"
|
|
"SetVariable <- VariableScope Identifier\n"
|
|
"VariableScope <- 'VARIABLE'\n"
|
|
"SettingScope <- LocalScope / SessionScope / GlobalScope\n"
|
|
"LocalScope <- 'LOCAL'\n"
|
|
"SessionScope <- 'SESSION'\n"
|
|
"GlobalScope <- 'GLOBAL'\n"
|
|
"SetAssignment <- VariableAssign VariableList\n"
|
|
"VariableAssign <- '=' / 'TO'\n"
|
|
"VariableList <- List(Expression)\n"
|
|
"ResetStatement <- 'RESET' (SetVariable / SetSetting)\n"
|
|
"ExportStatement <- 'EXPORT' 'DATABASE' ExportSource? StringLiteral Parens(GenericCopyOptionList)?\n"
|
|
"ExportSource <- CatalogName 'TO'\n"
|
|
"ImportStatement <- 'IMPORT' 'DATABASE' StringLiteral\n"
|
|
"CheckpointStatement <- 'FORCE'? 'CHECKPOINT' CatalogName?\n"
|
|
"CopyStatement <- 'COPY' (CopyTable / CopySelect / CopyFromDatabase)\n"
|
|
"CopyTable <- BaseTableName InsertColumnList? FromOrTo CopyFileName CopyOptions?\n"
|
|
"FromOrTo <- 'FROM' / 'TO'\n"
|
|
"CopySelect <- Parens(SelectStatement) 'TO' CopyFileName CopyOptions?\n"
|
|
"CopyFileName <- Expression / StringLiteral / Identifier / (Identifier '.' ColId)\n"
|
|
"CopyOptions <- 'WITH'? (Parens(GenericCopyOptionList) / (SpecializedOptions*))\n"
|
|
"SpecializedOptions <-\n"
|
|
" 'BINARY' / 'FREEZE' / 'OIDS' / 'CSV' / 'HEADER' /\n"
|
|
" SpecializedStringOption /\n"
|
|
" ('ENCODING' StringLiteral) /\n"
|
|
" ('FORCE' 'QUOTE' StarOrColumnList) /\n"
|
|
" ('PARTITION' 'BY' StarOrColumnList) /\n"
|
|
" ('FORCE' 'NOT'? 'NULL' ColumnList)\n"
|
|
"SpecializedStringOption <- ('DELIMITER' / 'NULL' / 'QUOTE' / 'ESCAPE') 'AS'? StringLiteral\n"
|
|
"StarOrColumnList <- '*' / ColumnList\n"
|
|
"GenericCopyOptionList <- List(GenericCopyOption)\n"
|
|
"GenericCopyOption <- GenericCopyOptionName Expression?\n"
|
|
"# FIXME: should not need to hard-code options here\n"
|
|
"GenericCopyOptionName <- 'ARRAY' / 'NULL' / 'ANALYZE' / CopyOptionName\n"
|
|
"CopyFromDatabase <- 'FROM' 'DATABASE' ColId 'TO' ColId CopyDatabaseFlag?\n"
|
|
"CopyDatabaseFlag <- Parens(SchemaOrData)\n"
|
|
"SchemaOrData <- 'SCHEMA' / 'DATA'\n"
|
|
"AlterStatement <- 'ALTER' AlterOptions\n"
|
|
"AlterOptions <- AlterTableStmt / AlterViewStmt / AlterSequenceStmt / AlterDatabaseStmt / AlterSchemaStmt\n"
|
|
"AlterTableStmt <- 'TABLE' IfExists? BaseTableName AlterTableOptions\n"
|
|
"AlterSchemaStmt <- 'SCHEMA' IfExists? QualifiedName RenameAlter\n"
|
|
"AlterTableOptions <- AddColumn / DropColumn / AlterColumn / AddConstraint / ChangeNullability / RenameColumn / RenameAlter / SetPartitionedBy / ResetPartitionedBy / SetSortedBy / ResetSortedBy\n"
|
|
"AddConstraint <- 'ADD' TopLevelConstraint\n"
|
|
"AddColumn <- 'ADD' 'COLUMN'? IfNotExists? ColumnDefinition\n"
|
|
"DropColumn <- 'DROP' 'COLUMN'? IfExists? NestedColumnName DropBehavior?\n"
|
|
"AlterColumn <- 'ALTER' 'COLUMN'? NestedColumnName AlterColumnEntry\n"
|
|
"RenameColumn <- 'RENAME' 'COLUMN'? NestedColumnName 'TO' Identifier\n"
|
|
"NestedColumnName <- (Identifier '.')* ColumnName\n"
|
|
"RenameAlter <- 'RENAME' 'TO' Identifier\n"
|
|
"SetPartitionedBy <- 'SET' 'PARTITIONED' 'BY' Parens(List(Expression))\n"
|
|
"ResetPartitionedBy <- 'RESET' 'PARTITIONED' 'BY'\n"
|
|
"SetSortedBy <- 'SET' 'SORTED' 'BY' Parens(OrderByExpressions)\n"
|
|
"ResetSortedBy <- 'RESET' 'SORTED' 'BY'\n"
|
|
"AlterColumnEntry <- AddOrDropDefault / ChangeNullability / AlterType\n"
|
|
"AddOrDropDefault <- AddDefault / DropDefault\n"
|
|
"AddDefault <- 'SET' 'DEFAULT' Expression\n"
|
|
"DropDefault <- 'DROP' 'DEFAULT'\n"
|
|
"ChangeNullability <- ('DROP' / 'SET') 'NOT' 'NULL'\n"
|
|
"AlterType <- SetData? 'TYPE' Type? UsingExpression?\n"
|
|
"SetData <- 'SET' 'DATA'?\n"
|
|
"UsingExpression <- 'USING' Expression\n"
|
|
"AlterViewStmt <- 'VIEW' IfExists? BaseTableName RenameAlter\n"
|
|
"AlterSequenceStmt <- 'SEQUENCE' IfExists? QualifiedSequenceName AlterSequenceOptions\n"
|
|
"QualifiedSequenceName <- CatalogQualification? SchemaQualification? SequenceName\n"
|
|
"AlterSequenceOptions <- RenameAlter / SetSequenceOption\n"
|
|
"SetSequenceOption <- List(SequenceOption)\n"
|
|
"AlterDatabaseStmt <- 'DATABASE' IfExists? Identifier RenameDatabaseAlter\n"
|
|
"RenameDatabaseAlter <- 'RENAME' 'TO' Identifier\n"
|
|
"CreateSequenceStmt <- 'SEQUENCE' IfNotExists? QualifiedName SequenceOption*\n"
|
|
"SequenceOption <-\n"
|
|
" SeqSetCycle /\n"
|
|
" SeqSetIncrement /\n"
|
|
" SeqSetMinMax /\n"
|
|
" SeqNoMinMax /\n"
|
|
" SeqStartWith /\n"
|
|
" SeqOwnedBy\n"
|
|
"SeqSetCycle <- 'NO'? 'CYCLE'\n"
|
|
"SeqSetIncrement <- 'INCREMENT' 'BY'? Expression\n"
|
|
"SeqSetMinMax <- SeqMinOrMax Expression\n"
|
|
"SeqNoMinMax <- 'NO' SeqMinOrMax\n"
|
|
"SeqStartWith <- 'START' 'WITH'? Expression\n"
|
|
"SeqOwnedBy <- 'OWNED' 'BY' QualifiedName\n"
|
|
"SeqMinOrMax <- 'MINVALUE' / 'MAXVALUE'\n"
|
|
"Statement <-\n"
|
|
" CreateStatement /\n"
|
|
" SelectStatement /\n"
|
|
" SetStatement /\n"
|
|
" PragmaStatement /\n"
|
|
" CallStatement /\n"
|
|
" InsertStatement /\n"
|
|
" DropStatement /\n"
|
|
" CopyStatement /\n"
|
|
" ExplainStatement /\n"
|
|
" UpdateStatement /\n"
|
|
" PrepareStatement /\n"
|
|
" ExecuteStatement /\n"
|
|
" AlterStatement /\n"
|
|
" TransactionStatement /\n"
|
|
" DeleteStatement /\n"
|
|
" AttachStatement /\n"
|
|
" UseStatement /\n"
|
|
" DetachStatement /\n"
|
|
" CheckpointStatement /\n"
|
|
" VacuumStatement /\n"
|
|
" ResetStatement /\n"
|
|
" ExportStatement /\n"
|
|
" ImportStatement /\n"
|
|
" CommentStatement /\n"
|
|
" DeallocateStatement /\n"
|
|
" TruncateStatement /\n"
|
|
" LoadStatement /\n"
|
|
" InstallStatement /\n"
|
|
" AnalyzeStatement /\n"
|
|
" MergeIntoStatement\n"
|
|
"CatalogName <- Identifier\n"
|
|
"SchemaName <- Identifier\n"
|
|
"ReservedSchemaName <- Identifier\n"
|
|
"TableName <- Identifier\n"
|
|
"ReservedTableName <- Identifier\n"
|
|
"ReservedIdentifier <- Identifier\n"
|
|
"ColumnName <- Identifier\n"
|
|
"ReservedColumnName <- Identifier\n"
|
|
"IndexName <- Identifier\n"
|
|
"SettingName <- Identifier\n"
|
|
"PragmaName <- Identifier\n"
|
|
"FunctionName <- Identifier\n"
|
|
"ReservedFunctionName <- Identifier\n"
|
|
"TableFunctionName <- Identifier\n"
|
|
"ConstraintName <- ColIdOrString\n"
|
|
"SequenceName <- Identifier\n"
|
|
"CollationName <- Identifier\n"
|
|
"CopyOptionName <- ColLabel\n"
|
|
"SecretName <- ColId\n"
|
|
"NumberLiteral <- < [+-]?[0-9]*([.][0-9]*)? >\n"
|
|
"StringLiteral <- '\\'' [^\\']* '\\''\n"
|
|
"Type <- (TimeType / IntervalType / BitType / RowType / MapType / UnionType / NumericType / SetofType / SimpleType) ArrayBounds*\n"
|
|
"SimpleType <- (QualifiedTypeName / CharacterType) TypeModifiers?\n"
|
|
"CharacterType <- ('CHARACTER' 'VARYING'?) /\n"
|
|
" ('CHAR' 'VARYING'?) /\n"
|
|
" ('NATIONAL' 'CHARACTER' 'VARYING'?) /\n"
|
|
" ('NATIONAL' 'CHAR' 'VARYING'?) /\n"
|
|
" ('NCHAR' 'VARYING'?) /\n"
|
|
" 'VARCHAR'\n"
|
|
"IntervalType <- ('INTERVAL' Interval?) / ('INTERVAL' Parens(NumberLiteral))\n"
|
|
"YearKeyword <- 'YEAR' / 'YEARS'\n"
|
|
"MonthKeyword <- 'MONTH' / 'MONTHS'\n"
|
|
"DayKeyword <- 'DAY' / 'DAYS'\n"
|
|
"HourKeyword <- 'HOUR' / 'HOURS'\n"
|
|
"MinuteKeyword <- 'MINUTE' / 'MINUTES'\n"
|
|
"SecondKeyword <- 'SECOND' / 'SECONDS'\n"
|
|
"MillisecondKeyword <- 'MILLISECOND' / 'MILLISECONDS'\n"
|
|
"MicrosecondKeyword <- 'MICROSECOND' / 'MICROSECONDS'\n"
|
|
"WeekKeyword <- 'WEEK' / 'WEEKS'\n"
|
|
"QuarterKeyword <- 'QUARTER' / 'QUARTERS'\n"
|
|
"DecadeKeyword <- 'DECADE' / 'DECADES'\n"
|
|
"CenturyKeyword <- 'CENTURY' / 'CENTURIES'\n"
|
|
"MillenniumKeyword <- 'MILLENNIUM' / 'MILLENNIA'\n"
|
|
"Interval <- YearKeyword /\n"
|
|
" MonthKeyword /\n"
|
|
" DayKeyword /\n"
|
|
" HourKeyword /\n"
|
|
" MinuteKeyword /\n"
|
|
" SecondKeyword /\n"
|
|
" MillisecondKeyword /\n"
|
|
" MicrosecondKeyword /\n"
|
|
" WeekKeyword /\n"
|
|
" QuarterKeyword /\n"
|
|
" DecadeKeyword /\n"
|
|
" CenturyKeyword /\n"
|
|
" MillenniumKeyword /\n"
|
|
" (YearKeyword 'TO' MonthKeyword) /\n"
|
|
" (DayKeyword 'TO' HourKeyword) /\n"
|
|
" (DayKeyword 'TO' MinuteKeyword) /\n"
|
|
" (DayKeyword 'TO' SecondKeyword) /\n"
|
|
" (HourKeyword 'TO' MinuteKeyword) /\n"
|
|
" (HourKeyword 'TO' SecondKeyword) /\n"
|
|
" (MinuteKeyword 'TO' SecondKeyword)\n"
|
|
"BitType <- 'BIT' 'VARYING'? Parens(List(Expression))?\n"
|
|
"NumericType <- 'INT' /\n"
|
|
" 'INTEGER' /\n"
|
|
" 'SMALLINT' /\n"
|
|
" 'BIGINT' /\n"
|
|
" 'REAL' /\n"
|
|
" 'BOOLEAN' /\n"
|
|
" ('FLOAT' Parens(NumberLiteral)?) /\n"
|
|
" ('DOUBLE' 'PRECISION') /\n"
|
|
" ('DECIMAL' TypeModifiers?) /\n"
|
|
" ('DEC' TypeModifiers?) /\n"
|
|
" ('NUMERIC' TypeModifiers?)\n"
|
|
"QualifiedTypeName <- CatalogQualification? SchemaQualification? TypeName\n"
|
|
"TypeModifiers <- Parens(List(Expression)?)\n"
|
|
"RowType <- RowOrStruct Parens(List(ColIdType))\n"
|
|
"UnionType <- 'UNION' Parens(List(ColIdType))\n"
|
|
"SetofType <- 'SETOF' Type\n"
|
|
"MapType <- 'MAP' Parens(List(Type))\n"
|
|
"ColIdType <- ColId Type\n"
|
|
"ArrayBounds <- ('[' NumberLiteral? ']') / 'ARRAY'\n"
|
|
"TimeType <- TimeOrTimestamp TypeModifiers? TimeZone?\n"
|
|
"TimeOrTimestamp <- 'TIME' / 'TIMESTAMP'\n"
|
|
"TimeZone <- WithOrWithout 'TIME' 'ZONE'\n"
|
|
"WithOrWithout <- 'WITH' / 'WITHOUT'\n"
|
|
"RowOrStruct <- 'ROW' / 'STRUCT'\n"
|
|
"# internal definitions\n"
|
|
"%whitespace <- [ \\t\\n\\r]*\n"
|
|
"List(D) <- D (',' D)* ','?\n"
|
|
"Parens(D) <- '(' D ')'\n"
|
|
"ExplainStatement <- 'EXPLAIN' 'ANALYZE'? ExplainOptions? Statement\n"
|
|
"ExplainOptions <- Parens(GenericCopyOptionList)\n"
|
|
"AnalyzeStatement <- 'ANALYZE' 'VERBOSE'? AnalyzeTarget?\n"
|
|
"AnalyzeTarget <- QualifiedName Parens(List(Name))?\n"
|
|
"Name <- ColId ('.' ColLabel)*\n"
|
|
"CreateMacroStmt <- MacroOrFunction IfNotExists? QualifiedName List(MacroDefinition)\n"
|
|
"MacroOrFunction <- 'MACRO' / 'FUNCTION'\n"
|
|
"MacroDefinition <- Parens(MacroParameters?) 'AS' (TableMacroDefinition / ScalarMacroDefinition)\n"
|
|
"MacroParameters <- List(MacroParameter)\n"
|
|
"MacroParameter <- NamedParameter / (TypeFuncName Type?)\n"
|
|
"ScalarMacroDefinition <- Expression\n"
|
|
"TableMacroDefinition <- 'TABLE' SelectStatement\n"
|
|
"CommentStatement <- 'COMMENT' 'ON' CommentOnType ColumnReference 'IS' CommentValue\n"
|
|
"CommentOnType <- 'TABLE' / 'SEQUENCE' / 'FUNCTION' / ('MACRO' 'TABLE'?) / 'VIEW' / 'DATABASE' / 'INDEX' / 'SCHEMA' / 'TYPE' / 'COLUMN'\n"
|
|
"CommentValue <- 'NULL' / StringLiteral\n"
|
|
"AttachStatement <- 'ATTACH' OrReplace? IfNotExists? Database? DatabasePath AttachAlias? AttachOptions?\n"
|
|
"Database <- 'DATABASE'\n"
|
|
"DatabasePath <- StringLiteral\n"
|
|
"AttachAlias <- 'AS' ColId\n"
|
|
"AttachOptions <- Parens(GenericCopyOptionList)\n"
|
|
"DetachStatement <- 'DETACH' Database? IfExists? CatalogName\n"
|
|
"UseStatement <- 'USE' UseTarget\n"
|
|
"UseTarget <- (CatalogName '.' ReservedSchemaName) / SchemaName / CatalogName\n"
|
|
"CallStatement <- 'CALL' TableFunctionName TableFunctionArguments\n"
|
|
|
|
};
|
|
|
|
} // namespace duckdb
|