@@ -25,131 +25,205 @@ options {
2525
2626fragment ALPHA : [A -Z ];
2727
28- // Keywords (Reference: https://cassandra.apache.org/doc/stable/cassandra/cql/appendices.html#appendix-A)
28+ // Keywords. If a keyword is non-reserved in Cassandra but reserved in Spanner,
29+ // it is marked as reserved. Reference:
30+ // Cassandra: https://cassandra.apache.org/doc/stable/cassandra/cql/appendices.html#appendix-A
31+ // Spanner: https://cloud.google.com/spanner/docs/reference/standard-sql/lexical#reserved_keywords
32+ //
2933// When adding a new keyword, add entry to reservedKeyword or nonReservedKeyword in the CqlParser.g4.
30- K_ADD : ' ADD' ; // reserved
31- K_AGGREGATE : ' AGGREGATE' ; // non-reserved
32- K_ALL : ' ALL' ; // non-reserved
33- K_ALLOW : ' ALLOW' ; // reserved
34- K_ALTER : ' ALTER' ; // reserved
35- K_AND : ' AND' ; // reserved
36- K_APPLY : ' APPLY' ; // reserved
37- K_AS : ' AS' ; // non-reserved
38- K_ASC : ' ASC' ; // reserved
39- K_ASCII : ' ASCII' ; // non-reserved
40- K_AUTHORIZE : ' AUTHORIZE' ; // reserved
41- K_BATCH : ' BATCH' ; // reserved
42- K_BEGIN : ' BEGIN' ; // reserved
43- K_BIGINT : ' BIGINT' ; // non-reserved
44- K_BLOB : ' BLOB' ; // non-reserved
45- K_BOOLEAN : ' BOOLEAN' ; // non-reserved
46- K_BY : ' BY' ; // reserved
47- K_CALLED : ' CALLED' ; // non-reserved
48- K_CLUSTERING : ' CLUSTERING' ; // non-reserved
49- K_COLUMNFAMILY : ' COLUMNFAMILY' ; // reserved
50- K_COMPACT : ' COMPACT' ; // non-reserved
51- K_CONTAINS : ' CONTAINS' ; // non-reserved
52- K_COUNT : ' COUNT' ; // non-reserved
53- K_COUNTER : ' COUNTER' ; // non-reserved
54- K_CREATE : ' CREATE' ; // reserved
55- K_CUSTOM : ' CUSTOM' ; // non-reserved
56- K_DATE : ' DATE' ; // non-reserved
57- K_DECIMAL : ' DECIMAL' ; // non-reserved
58- K_DELETE : ' DELETE' ; // reserved
59- K_DESC : ' DESC' ; // reserved
60- K_DESCRIBE : ' DESCRIBE' ; // reserved
61- K_DISTINCT : ' DISTINCT' ; // non-reserved
62- K_DOUBLE : ' DOUBLE' ; // non-reserved
63- K_DROP : ' DROP' ; // reserved
64- K_ENTRIES : ' ENTRIES' ; // reserved
65- K_EXECUTE : ' EXECUTE' ; // reserved
66- K_EXISTS : ' EXISTS' ; // non-reserved
67- K_FILTERING : ' FILTERING' ; // non-reserved
68- K_FINALFUNC : ' FINALFUNC' ; // non-reserved
69- K_FLOAT : ' FLOAT' ; // non-reserved
70- K_FROM : ' FROM' ; // reserved
71- K_FROZEN : ' FROZEN' ; // non-reserved
72- K_FULL : ' FULL' ; // reserved
73- K_FUNCTION : ' FUNCTION' ; // non-reserved
74- K_FUNCTIONS : ' FUNCTIONS' ; // non-reserved
75- K_GRANT : ' GRANT' ; // reserved
76- K_IF : ' IF' ; // reserved
77- K_IN : ' IN' ; // reserved
78- K_INDEX : ' INDEX' ; // reserved
79- K_INET : ' INET' ; // non-reserved
80- K_INFINITY : ' INFINITY' ; // reserved
81- K_INITCOND : ' INITCOND' ; // non-reserved
82- K_INPUT : ' INPUT' ; // non-reserved
83- K_INSERT : ' INSERT' ; // reserved
84- K_INT : ' INT' ; // non-reserved
85- K_INTO : ' INTO' ; // reserved
86- K_JSON : ' JSON' ; // non-reserved
87- K_KEY : ' KEY' ; // non-reserved
88- K_KEYS : ' KEYS' ; // non-reserved
89- K_KEYSPACE : ' KEYSPACE' ; // reserved
90- K_KEYSPACES : ' KEYSPACES' ; // non-reserved
91- K_LANGUAGE : ' LANGUAGE' ; // non-reserved
92- K_LIMIT : ' LIMIT' ; // reserved
93- K_LIST : ' LIST' ; // non-reserved
94- K_LOGIN : ' LOGIN' ; // non-reserved
95- K_MAP : ' MAP' ; // non-reserved
96- K_MODIFY : ' MODIFY' ; // reserved
97- K_NAN : ' NAN' ; // reserved
98- K_NOLOGIN : ' NOLOGIN' ; // non-reserved
99- K_NORECURSIVE : ' NORECURSIVE' ; // reserved
100- K_NOSUPERUSER : ' NOSUPERUSER' ; // non-reserved
101- K_NOT : ' NOT' ; // reserved
102- K_NULL : ' NULL' ; // reserved
103- K_OF : ' OF' ; // reserved
104- K_ON : ' ON' ; // reserved
105- K_OPTIONS : ' OPTIONS' ; // non-reserved
106- K_OR : ' OR' ; // reserved
107- K_ORDER : ' ORDER' ; // reserved
108- K_PASSWORD : ' PASSWORD' ; // non-reserved
109- K_PERMISSION : ' PERMISSION' ; // non-reserved
110- K_PERMISSIONS : ' PERMISSIONS' ; // non-reserved
111- K_PRIMARY : ' PRIMARY' ; // reserved
112- K_RENAME : ' RENAME' ; // reserved
113- K_REPLACE : ' REPLACE' ; // reserved
114- K_RETURNS : ' RETURNS' ; // non-reserved
115- K_REVOKE : ' REVOKE' ; // reserved
116- K_ROLE : ' ROLE' ; // non-reserved
117- K_ROLES : ' ROLES' ; // non-reserved
118- K_SCHEMA : ' SCHEMA' ; // reserved
119- K_SELECT : ' SELECT' ; // reserved
120- K_SET : ' SET' ; // reserved
121- K_SFUNC : ' SFUNC' ; // non-reserved
122- K_SMALLINT : ' SMALLINT' ; // non-reserved
123- K_STATIC : ' STATIC' ; // non-reserved
124- K_STORAGE : ' STORAGE' ; // non-reserved
125- K_STYPE : ' STYPE' ; // non-reserved
126- K_SUPERUSER : ' SUPERUSER' ; // non-reserved
127- K_TABLE : ' TABLE' ; // reserved
128- K_TEXT : ' TEXT' ; // non-reserved
129- K_TIME : ' TIME' ; // non-reserved
130- K_TIMESTAMP : ' TIMESTAMP' ; // non-reserved
131- K_TIMEUUID : ' TIMEUUID' ; // non-reserved
132- K_TINYINT : ' TINYINT' ; // non-reserved
133- K_TO : ' TO' ; // reserved
134- K_TOKEN : ' TOKEN' ; // reserved
135- K_TRIGGER : ' TRIGGER' ; // non-reserved
136- K_TRUNCATE : ' TRUNCATE' ; // reserved
137- K_TTL : ' TTL' ; // non-reserved
138- K_TUPLE : ' TUPLE' ; // non-reserved
139- K_TYPE : ' TYPE' ; // non-reserved
140- K_UNLOGGED : ' UNLOGGED' ; // reserved
141- K_UPDATE : ' UPDATE' ; // reserved
142- K_USE : ' USE' ; // reserved
143- K_USER : ' USER' ; // non-reserved
144- K_USERS : ' USERS' ; // non-reserved
145- K_USING : ' USING' ; // reserved
146- K_UUID : ' UUID' ; // non-reserved
147- K_VALUES : ' VALUES' ; // non-reserved
148- K_VARCHAR : ' VARCHAR' ; // non-reserved
149- K_VARINT : ' VARINT' ; // non-reserved
150- K_WHERE : ' WHERE' ; // reserved
151- K_WITH : ' WITH' ; // reserved
152- K_WRITETIME : ' WRITETIME' ; // non-reserved
34+ K_ADD : ' ADD' ; // reserved
35+ K_AGGREGATE : ' AGGREGATE' ; // non-reserved
36+ K_ALL : ' ALL' ; // reserved (non-reserved in Cassandra)
37+ K_ALLOW : ' ALLOW' ; // reserved
38+ K_ALTER : ' ALTER' ; // reserved
39+ K_AND : ' AND' ; // reserved
40+ K_ANY : ' ANY' ; // reserved
41+ K_APPLY : ' APPLY' ; // reserved
42+ K_ARRAY : ' ARRAY' ; // reserved
43+ K_AS : ' AS' ; // reserved (non-reserved in Cassandra)
44+ K_ASC : ' ASC' ; // reserved
45+ K_ASCII : ' ASCII' ; // non-reserved
46+ K_ASSERT_ROWS_MODIFIED : ' ASSERT_ROWS_MODIFIED' ; // reserved
47+ K_AT : ' AT' ; // reserved
48+ K_AUTHORIZE : ' AUTHORIZE' ; // reserved
49+ K_BATCH : ' BATCH' ; // reserved
50+ K_BEGIN : ' BEGIN' ; // reserved
51+ K_BETWEEN : ' BETWEEN' ; // reserved
52+ K_BIGINT : ' BIGINT' ; // non-reserved
53+ K_BLOB : ' BLOB' ; // non-reserved
54+ K_BOOLEAN : ' BOOLEAN' ; // non-reserved
55+ K_BY : ' BY' ; // reserved
56+ K_CALLED : ' CALLED' ; // non-reserved
57+ K_CASE : ' CASE' ; // reserved
58+ K_CAST : ' CAST' ; // reserved
59+ K_CLUSTERING : ' CLUSTERING' ; // non-reserved
60+ K_COLLATE : ' COLLATE' ; // reserved
61+ K_COLUMNFAMILY : ' COLUMNFAMILY' ; // reserved
62+ K_COMPACT : ' COMPACT' ; // non-reserved
63+ K_CONTAINS : ' CONTAINS' ; // reserved (non-reserved in Cassandra)
64+ K_COUNT : ' COUNT' ; // non-reserved
65+ K_COUNTER : ' COUNTER' ; // non-reserved
66+ K_CREATE : ' CREATE' ; // reserved
67+ K_CROSS : ' CROSS' ; // reserved
68+ K_CUBE : ' CUBE' ; // reserved
69+ K_CURRENT : ' CURRENT' ; // reserved
70+ K_CUSTOM : ' CUSTOM' ; // non-reserved
71+ K_DATE : ' DATE' ; // non-reserved
72+ K_DECIMAL : ' DECIMAL' ; // non-reserved
73+ K_DEFAULT : ' DEFAULT' ; // reserved
74+ K_DEFINE : ' DEFINE' ; // reserved
75+ K_DELETE : ' DELETE' ; // reserved
76+ K_DESC : ' DESC' ; // reserved
77+ K_DESCRIBE : ' DESCRIBE' ; // reserved
78+ K_DISTINCT : ' DISTINCT' ; // reserved (non-reserved in Cassandra)
79+ K_DOUBLE : ' DOUBLE' ; // non-reserved
80+ K_DROP : ' DROP' ; // reserved
81+ K_ELSE : ' ELSE' ; // reserved
82+ K_END : ' END' ; // reserved
83+ K_ENTRIES : ' ENTRIES' ; // reserved
84+ K_ENUM : ' ENUM' ; // reserved
85+ K_ESCAPE : ' ESCAPE' ; // reserved
86+ K_EXCEPT : ' EXCEPT' ; // reserved
87+ K_EXCLUDE : ' EXCLUDE' ; // reserved
88+ K_EXECUTE : ' EXECUTE' ; // reserved
89+ K_EXISTS : ' EXISTS' ; // reserved (non-reserved in Cassandra)
90+ K_EXTRACT : ' EXTRACT' ; // reserved
91+ K_FALSE : ' FALSE' ; // reserved
92+ K_FETCH : ' FETCH' ; // reserved
93+ K_FILTERING : ' FILTERING' ; // non-reserved
94+ K_FINALFUNC : ' FINALFUNC' ; // non-reserved
95+ K_FLOAT : ' FLOAT' ; // non-reserved
96+ K_FOLLOWING : ' FOLLOWING' ; // reserved
97+ K_FOR : ' FOR' ; // reserved
98+ K_FROM : ' FROM' ; // reserved
99+ K_FROZEN : ' FROZEN' ; // non-reserved
100+ K_FULL : ' FULL' ; // reserved
101+ K_FUNCTION : ' FUNCTION' ; // non-reserved
102+ K_FUNCTIONS : ' FUNCTIONS' ; // non-reserved
103+ K_GRANT : ' GRANT' ; // reserved
104+ K_GROUP : ' GROUP' ; // reserved
105+ K_GROUPING : ' GROUPING' ; // reserved
106+ K_GROUPS : ' GROUPS' ; // reserved
107+ K_HASH : ' HASH' ; // reserved
108+ K_HAVING : ' HAVING' ; // reserved
109+ K_IF : ' IF' ; // reserved
110+ K_IGNORE : ' IGNORE' ; // reserved
111+ K_IN : ' IN' ; // reserved
112+ K_INDEX : ' INDEX' ; // reserved
113+ K_INET : ' INET' ; // non-reserved
114+ K_INFINITY : ' INFINITY' ; // reserved
115+ K_INITCOND : ' INITCOND' ; // non-reserved
116+ K_INNER : ' INNER' ; // reserved
117+ K_INPUT : ' INPUT' ; // non-reserved
118+ K_INSERT : ' INSERT' ; // reserved
119+ K_INT : ' INT' ; // non-reserved
120+ K_INTERSECT : ' INTERSECT' ; // reserved
121+ K_INTERVAL : ' INTERVAL' ; // reserved
122+ K_INTO : ' INTO' ; // reserved
123+ K_IS : ' IS' ; // reserved
124+ K_JOIN : ' JOIN' ; // reserved
125+ K_JSON : ' JSON' ; // non-reserved
126+ K_KEY : ' KEY' ; // non-reserved
127+ K_KEYS : ' KEYS' ; // non-reserved
128+ K_KEYSPACE : ' KEYSPACE' ; // reserved
129+ K_KEYSPACES : ' KEYSPACES' ; // non-reserved
130+ K_LANGUAGE : ' LANGUAGE' ; // non-reserved
131+ K_LATERAL : ' LATERAL' ; // reserved
132+ K_LEFT : ' LEFT' ; // reserved
133+ K_LIKE : ' LIKE' ; // reserved
134+ K_LIMIT : ' LIMIT' ; // reserved
135+ K_LIST : ' LIST' ; // non-reserved
136+ K_LOGIN : ' LOGIN' ; // non-reserved
137+ K_LOOKUP : ' LOOKUP' ; // reserved
138+ K_MAP : ' MAP' ; // non-reserved
139+ K_MERGE : ' MERGE' ; // reserved
140+ K_MODIFY : ' MODIFY' ; // reserved
141+ K_NAN : ' NAN' ; // reserved
142+ K_NATURAL : ' NATURAL' ; // reserved
143+ K_NEW : ' NEW' ; // reserved
144+ K_NO : ' NO' ; // reserved
145+ K_NOLOGIN : ' NOLOGIN' ; // non-reserved
146+ K_NORECURSIVE : ' NORECURSIVE' ; // reserved
147+ K_NOSUPERUSER : ' NOSUPERUSER' ; // non-reserved
148+ K_NOT : ' NOT' ; // reserved
149+ K_NULL : ' NULL' ; // reserved
150+ K_NULLS : ' NULLS' ; // reserved
151+ K_OF : ' OF' ; // reserved
152+ K_ON : ' ON' ; // reserved
153+ K_OPTIONS : ' OPTIONS' ; // non-reserved
154+ K_OR : ' OR' ; // reserved
155+ K_ORDER : ' ORDER' ; // reserved
156+ K_OUTER : ' OUTER' ; // reserved
157+ K_OVER : ' OVER' ; // reserved
158+ K_PARTITION : ' PARTITION' ; // reserved
159+ K_PASSWORD : ' PASSWORD' ; // non-reserved
160+ K_PERMISSION : ' PERMISSION' ; // non-reserved
161+ K_PERMISSIONS : ' PERMISSIONS' ; // non-reserved
162+ K_PRECEDING : ' PRECEDING' ; // reserved
163+ K_PRIMARY : ' PRIMARY' ; // reserved
164+ K_PROTO : ' PROTO' ; // reserved
165+ K_QUALIFY : ' QUALIFY' ; // reserved
166+ K_RANGE : ' RANGE' ; // reserved
167+ K_RECURSIVE : ' RECURSIVE' ; // reserved
168+ K_RENAME : ' RENAME' ; // reserved
169+ K_REPLACE : ' REPLACE' ; // reserved
170+ K_RESPECT : ' RESPECT' ; // reserved
171+ K_RETURNS : ' RETURNS' ; // non-reserved
172+ K_REVOKE : ' REVOKE' ; // reserved
173+ K_RIGHT : ' RIGHT' ; // reserved
174+ K_ROLE : ' ROLE' ; // non-reserved
175+ K_ROLES : ' ROLES' ; // non-reserved
176+ K_ROLLUP : ' ROLLUP' ; // reserved
177+ K_ROWS : ' ROWS' ; // reserved
178+ K_SCHEMA : ' SCHEMA' ; // reserved
179+ K_SELECT : ' SELECT' ; // reserved
180+ K_SET : ' SET' ; // reserved
181+ K_SFUNC : ' SFUNC' ; // non-reserved
182+ K_SMALLINT : ' SMALLINT' ; // non-reserved
183+ K_SOME : ' SOME' ; // reserved
184+ K_STATIC : ' STATIC' ; // non-reserved
185+ K_STORAGE : ' STORAGE' ; // non-reserved
186+ K_STRUCT : ' STRUCT' ; // reserved
187+ K_STYPE : ' STYPE' ; // non-reserved
188+ K_SUPERUSER : ' SUPERUSER' ; // non-reserved
189+ K_TABLE : ' TABLE' ; // reserved
190+ K_TABLESAMPLE : ' TABLESAMPLE' ; // reserved
191+ K_TEXT : ' TEXT' ; // non-reserved
192+ K_THEN : ' THEN' ; // reserved
193+ K_TIME : ' TIME' ; // non-reserved
194+ K_TIMESTAMP : ' TIMESTAMP' ; // non-reserved
195+ K_TIMEUUID : ' TIMEUUID' ; // non-reserved
196+ K_TINYINT : ' TINYINT' ; // non-reserved
197+ K_TO : ' TO' ; // reserved
198+ K_TOKEN : ' TOKEN' ; // reserved
199+ K_TREAT : ' TREAT' ; // reserved
200+ K_TRIGGER : ' TRIGGER' ; // non-reserved
201+ K_TRUE : ' TRUE' ; // reserved
202+ K_TRUNCATE : ' TRUNCATE' ; // reserved
203+ K_TTL : ' TTL' ; // non-reserved
204+ K_TUPLE : ' TUPLE' ; // non-reserved
205+ K_TYPE : ' TYPE' ; // non-reserved
206+ K_UNBOUNDED : ' UNBOUNDED' ; // reserved
207+ K_UNION : ' UNION' ; // reserved
208+ K_UNLOGGED : ' UNLOGGED' ; // reserved
209+ K_UNNEST : ' UNNEST' ; // reserved
210+ K_UPDATE : ' UPDATE' ; // reserved
211+ K_USE : ' USE' ; // reserved
212+ K_USER : ' USER' ; // non-reserved
213+ K_USERS : ' USERS' ; // non-reserved
214+ K_USING : ' USING' ; // reserved
215+ K_UUID : ' UUID' ; // non-reserved
216+ K_VALUES : ' VALUES' ; // non-reserved
217+ K_VARCHAR : ' VARCHAR' ; // non-reserved
218+ K_VARINT : ' VARINT' ; // non-reserved
219+ K_WHEN : ' WHEN' ; // reserved
220+ K_WHERE : ' WHERE' ; // reserved
221+ K_WINDOW : ' WINDOW' ; // reserved
222+ K_WITH : ' WITH' ; // reserved
223+ K_WITHIN : ' WITHIN' ; // reserved
224+ K_WRITETIME : ' WRITETIME' ; // non-reserved
225+ // The official Cassandra and Spanner appendix does not contain the below
226+ // keywords, although they are recognized as such.
153227K_MATERIALIZED : ' MATERIALIZED' ; // reserved
154228K_VIEW : ' VIEW' ; // reserved
155229
0 commit comments