|
29 | 29 |
|
30 | 30 | cqlStatement |
31 | 31 | : createTable |
| 32 | + | unsupportedStatement |
32 | 33 | ; |
33 | 34 |
|
34 | 35 | createTable |
35 | | - : K_CREATE K_TABLE ifNotExist? tableName L_PAREN columnDefinitionList R_PAREN wihtTableOptions? |
| 36 | + : K_CREATE K_TABLE ifNotExists? tableName L_PAREN columnDefinitionList R_PAREN wihtTableOptions? |
36 | 37 | ; |
37 | 38 |
|
| 39 | +// Reference: https://cassandra.apache.org/doc/4.0/cassandra/cql/definitions.html#statements. |
| 40 | +// The syntax is not precisely defined; it is a simplification. |
| 41 | +unsupportedStatement |
| 42 | + : K_USE keyspaceName |
| 43 | + | K_CREATE K_KEYSPACE ifNotExists? keyspaceName K_WITH nonSemicolonToken* |
| 44 | + | K_ALTER K_KEYSPACE keyspaceName K_WITH nonSemicolonToken* |
| 45 | + | K_DROP K_KEYSPACE ifExists? keyspaceName |
| 46 | + | K_ALTER K_TABLE tableName nonSemicolonToken* |
| 47 | + | K_DROP K_TABLE ifExists? tableName |
| 48 | + | K_TRUNCATE K_TABLE? tableName |
| 49 | + |
| 50 | + | K_SELECT nonSemicolonToken* |
| 51 | + | K_INSERT K_INTO nonSemicolonToken* |
| 52 | + | K_UPDATE tableName nonSemicolonToken* |
| 53 | + | K_DELETE nonSemicolonToken* |
| 54 | + | K_BEGIN (K_UNLOGGED | K_COUNTER)? K_BATCH (nonSemicolonToken* SEMICOLON)+ K_APPLY K_BATCH SEMICOLON |
| 55 | + |
| 56 | + | K_CREATE K_CUSTOM? K_INDEX nonSemicolonToken* |
| 57 | + | K_DROP K_INDEX ifExists? nonSemicolonToken* |
| 58 | + |
| 59 | + | K_CREATE K_MATERIALIZED K_VIEW ifNotExists? nonSemicolonToken* |
| 60 | + | K_ALTER K_MATERIALIZED K_VIEW nonSemicolonToken* |
| 61 | + | K_DROP K_MATERIALIZED K_VIEW ifExists? nonSemicolonToken* |
| 62 | + |
| 63 | + | K_CREATE K_ROLE ifNotExists? nonSemicolonToken* |
| 64 | + | K_ALTER K_ROLE nonSemicolonToken* |
| 65 | + | K_DROP K_ROLE nonSemicolonToken* |
| 66 | + | K_GRANT nonSemicolonToken* |
| 67 | + | K_REVOKE nonSemicolonToken* |
| 68 | + | K_LIST nonSemicolonToken* |
| 69 | + | K_CREATE K_USER nonSemicolonToken* |
| 70 | + | K_ALTER K_USER nonSemicolonToken* |
| 71 | + | K_DROP K_USER nonSemicolonToken* |
| 72 | + |
| 73 | + | K_CREATE (K_OR K_REPLACE)? K_FUNCTION ifNotExists? nonSemicolonToken* K_AS SQUOTE nonSemicolonToken* SEMICOLON SQUOTE |
| 74 | + | K_DROP K_FUNCTION ifExists? nonSemicolonToken* |
| 75 | + | K_CREATE (K_OR K_REPLACE)? K_AGGREGATE ifNotExists? nonSemicolonToken* |
| 76 | + | K_DROP K_AGGREGATE ifExists? nonSemicolonToken* |
| 77 | + |
| 78 | + | K_CREATE K_TYPE ifNotExists? nonSemicolonToken* |
| 79 | + | K_ALTER K_TYPE nonSemicolonToken* |
| 80 | + | K_DROP K_TYPE ifExists? nonSemicolonToken* |
| 81 | + |
| 82 | + | K_CREATE K_TRIGGER ifNotExists? nonSemicolonToken* |
| 83 | + | K_DROP K_TRIGGER ifExists? nonSemicolonToken* |
| 84 | + ; |
| 85 | + |
38 | 86 | columnDefinitionList |
39 | 87 | : columnDefinition (COMMA columnDefinition)* (COMMA primaryKeyClause)? |
40 | 88 | ; |
@@ -97,7 +145,11 @@ primaryKeyKeywords |
97 | 145 | : K_PRIMARY K_KEY |
98 | 146 | ; |
99 | 147 |
|
100 | | -ifNotExist |
| 148 | +ifExists |
| 149 | + : K_IF K_EXISTS |
| 150 | + ; |
| 151 | + |
| 152 | +ifNotExists |
101 | 153 | : K_IF K_NOT K_EXISTS |
102 | 154 | ; |
103 | 155 |
|
@@ -136,6 +188,7 @@ wihtTableOptions |
136 | 188 |
|
137 | 189 | nonSemicolonToken |
138 | 190 | : keyword |
| 191 | + | SQUOTE |
139 | 192 | | DQUOTE |
140 | 193 | | DOT |
141 | 194 | | COMMA |
@@ -209,6 +262,8 @@ reservedKeyword |
209 | 262 | | K_USING |
210 | 263 | | K_WHERE |
211 | 264 | | K_WITH |
| 265 | + | K_MATERIALIZED |
| 266 | + | K_VIEW |
212 | 267 | ; |
213 | 268 |
|
214 | 269 | nonReservedKeyword |
|
0 commit comments