@@ -22,7 +22,7 @@ emptyStatement
2222 ;
2323
2424ddlStatement
25- : createTable | createDatabase | createView | createFunction
25+ : createTable | createDatabase | createView | createFunction | createCatalog
2626 | alterTable | alterDatabase | alterFunction
2727 | dropTable | dropDatabase | dropView | dropFunction
2828 ;
@@ -38,13 +38,16 @@ createTable
3838 : CREATE TABLE uid
3939 LR_BRACKET
4040 columnOptionDefinition (COMMA columnOptionDefinition)*
41+ watermarkDefinition?
4142 RR_BRACKET
43+ commentSpec?
4244 partitionDefinition?
4345 withOption
46+ likeDefinition?
4447 ;
4548
4649columnOptionDefinition
47- : columnName columnType
50+ : columnName columnType lengthOneDimension?
4851 ;
4952
5053columnName
@@ -59,28 +62,60 @@ columnType
5962 | BOOLEAN | RAW | NULL )
6063 ;
6164
65+ lengthOneDimension
66+ : ' (' decimalLiteral ' )'
67+ ;
68+
69+ commentSpec
70+ : COMMENT STRING_LITERAL
71+ ;
72+
73+ watermarkDefinition
74+ : WATERMARK FOR expression AS expression
75+ ;
76+
6277partitionDefinition
63- : PARTITIONED BY partitionColumnDefinition
78+ : PARTITIONED BY transformList
6479 ;
6580
66- partitionColumnDefinition
67- : partitionColumnName ( COMMA partitionColumnName)*
81+ transformList
82+ : ' ( ' transform ( ' , ' transform)* ' ) '
6883 ;
6984
70- partitionColumnName
71- : ID
85+ transform
86+ : qualifiedName #identityTransform
87+ | transformName=identifier
88+ ' (' transformArgument (' ,' transformArgument)* ' )' #applyTransform
89+ ;
90+
91+ transformArgument
92+ : qualifiedName
93+ | constant
94+ ;
95+
96+ likeDefinition
97+ : LIKE identifier likeOption
98+ ;
99+
100+ likeOption
101+ : (INCLUDING | EXCLUDING ) (ALL | CONSTRAINTS )
102+ | (INCLUDING | EXCLUDING ) (GENERATED | OPTIONS )
103+ ;
104+
105+ createCatalog
106+ : CREATE CATALOG uid withOption
72107 ;
73108
74109createDatabase
75- : CREATE DATABASE ifNotExists? uid withOption
110+ : CREATE DATABASE ifNotExists? uid commentSpec? withOption
76111 ;
77112
78113createView
79- : CREATE TEMPORARY ? VIEW ifNotExists? uid AS selectStatement
114+ : CREATE TEMPORARY ? VIEW ifNotExists? uid (columnName ( ' , ' columnName)*)? commentSpec AS queryStatement
80115 ;
81116
82117createFunction
83- :
118+ : CREATE ( TEMPORARY | TEMPORARY SYSTEM ) FUNCTION ifNotExists? uid AS identifier ( LANGUAGE identifier)?
84119 ;
85120
86121// Alter statements
@@ -346,6 +381,10 @@ dereferenceDefinition
346381
347382// base common
348383
384+ qualifiedName
385+ : identifier (' .' identifier)*
386+ ;
387+
349388interval
350389 : INTERVAL (errorCapturingMultiUnitsInterval | errorCapturingUnitToUnitInterval)?
351390 ;
422461 ;
423462
424463withOption
425- : WITH LR_BRACKET
426- keyValueDefinition (COMMA keyValueDefinition)*
427- RR_BRACKET
464+ : WITH tablePropertyList
428465 ;
429466
430467ifNotExists
@@ -437,6 +474,26 @@ keyValueDefinition
437474 : STRING_LITERAL EQUAL_SYMBOL STRING_LITERAL
438475 ;
439476
477+ tablePropertyList
478+ : ' (' tableProperty (' ,' tableProperty)* ' )'
479+ ;
480+
481+ tableProperty
482+ : key=tablePropertyKey (EQUAL_SYMBOL ? value=tablePropertyValue)?
483+ ;
484+
485+ tablePropertyKey
486+ : identifier (' .' identifier)*
487+ | STRING_LITERAL
488+ ;
489+
490+ tablePropertyValue
491+ : DIG_LITERAL
492+ | REAL_LITERAL
493+ | booleanLiteral
494+ | STRING_LITERAL
495+ ;
496+
440497logicalOperator
441498 : AND | ' &' ' &' | OR | ' |' ' |'
442499 ;
@@ -744,21 +801,15 @@ PAST: 'PAST';
744801PATTERN : ' PATTERN' ;
745802WITHIN : ' WITHIN' ;
746803DEFINE : ' DEFINE' ;
747- BIGINT_LITERAL : ' BIGINT_LITERAL' ;
748- SMALLINT_LITERAL : ' SMALLINT_LITERAL' ;
749- TINYINT_LITERAL : ' TINYINT_LITERAL' ;
750- INTEGER_VALUE : ' INTEGER_VALUE' ;
751- DECIMAL_VALUE : ' DECIMAL_VALUE' ;
752- DOUBLE_LITERAL : ' DOUBLE_LITERAL' ;
753- BIGDECIMAL_LITERAL : ' BIGDECIMAL_LITERAL' ;
754- IDENTIFIER : ' IDENTIFIER' ;
755- BACKQUOTED_IDENTIFIER : ' BACKQUOTED_IDENTIFIER' ;
756- SIMPLE_COMMENT : ' SIMPLE_COMMENT' ;
757- BRACKETED_EMPTY_COMMENT : ' BRACKETED_EMPTY_COMMENT' ;
758- BRACKETED_COMMENT : ' BRACKETED_COMMENT' ;
759804WS : ' WS' ;
760- UNRECOGNIZED : ' UNRECOGNIZED' ;
761805SYSTEM : ' SYSTEM' ;
806+ INCLUDING : ' INCLUDING' ;
807+ EXCLUDING : ' EXCLUDING' ;
808+ CONSTRAINTS : ' CONSTRAINTS' ;
809+ OVERWRITING : ' OVERWRITING' ;
810+ GENERATED : ' GENERATED' ;
811+ CATALOG : ' CATALOG' ;
812+ LANGUAGE : ' LANGUAGE' ;
762813
763814
764815// DATA TYPE Keywords
0 commit comments