1macro_rules! kw_def {
30 ($ident:ident = $string_keyword:expr) => {
31 pub const $ident: &'static str = $string_keyword;
32 };
33 ($ident:ident) => {
34 kw_def!($ident = stringify!($ident));
35 };
36}
37
38macro_rules! define_keywords {
41 ($(
42 $ident:ident $(= $string_keyword:expr)?
43 ),*) => {
44 $(kw_def!($ident $(= $string_keyword)?);)*
45
46 pub const ALL_KEYWORDS: &[&str] = &[
47 $($ident),*
48 ];
49 }
50}
51
52define_keywords!(
53 ABS,
54 ADD,
55 ASC,
56 ALL,
57 ALLOCATE,
58 ALTER,
59 AND,
60 ANY,
61 APPLY,
62 ARE,
63 ARRAY,
64 ARRAY_AGG,
65 ARRAY_MAX_CARDINALITY,
66 AS,
67 ASENSITIVE,
68 ASYMMETRIC,
69 AT,
70 ATOMIC,
71 AUTHORIZATION,
72 AVG,
73 BEGIN,
74 BEGIN_FRAME,
75 BEGIN_PARTITION,
76 BETWEEN,
77 BIGINT,
78 BINARY,
79 BLOB,
80 BOOLEAN,
81 BOTH,
82 BY,
83 BYTEA,
84 CALL,
85 CALLED,
86 CARDINALITY,
87 CASCADE,
88 CASCADED,
89 CASE,
90 CAST,
91 CEIL,
92 CEILING,
93 CHAIN,
94 CHAR,
95 CHAR_LENGTH,
96 CHARACTER,
97 CHARACTER_LENGTH,
98 CHECK,
99 CLOB,
100 CLOSE,
101 COALESCE,
102 COLLATE,
103 COLLECT,
104 COLUMN,
105 COLUMNS,
106 COMMIT,
107 COMMITTED,
108 CONDITION,
109 CONNECT,
110 CONSTRAINT,
111 CONTAINS,
112 CONVERT,
113 COPY,
114 CORR,
115 CORRESPONDING,
116 COUNT,
117 COVAR_POP,
118 COVAR_SAMP,
119 CREATE,
120 CROSS,
121 CSV,
122 CUBE,
123 CUME_DIST,
124 CURRENT,
125 CURRENT_CATALOG,
126 CURRENT_DATE,
127 CURRENT_DEFAULT_TRANSFORM_GROUP,
128 CURRENT_PATH,
129 CURRENT_ROLE,
130 CURRENT_ROW,
131 CURRENT_SCHEMA,
132 CURRENT_TIME,
133 CURRENT_TIMESTAMP,
134 CURRENT_TRANSFORM_GROUP_FOR_TYPE,
135 CURRENT_USER,
136 CURSOR,
137 CYCLE,
138 DATE,
139 DAY,
140 DEALLOCATE,
141 DEC,
142 DECIMAL,
143 DECLARE,
144 DEFAULT,
145 DELETE,
146 DENSE_RANK,
147 DEREF,
148 DESC,
149 DESCRIBE,
150 DETERMINISTIC,
151 DISCONNECT,
152 DISTINCT,
153 DOUBLE,
154 DROP,
155 DYNAMIC,
156 EACH,
157 ELEMENT,
158 ELSE,
159 END,
160 END_FRAME,
161 END_PARTITION,
162 EQUALS,
163 ESCAPE,
164 EVERY,
165 EXCEPT,
166 EXEC,
167 EXECUTE,
168 EXISTS,
169 EXP,
170 EXTENDED,
171 EXTERNAL,
172 EXTRACT,
173 FALSE,
174 FETCH,
175 FIELDS,
176 FIRST,
177 FILTER,
178 FIRST_VALUE,
179 FLOAT,
180 FLOOR,
181 FOLLOWING,
182 FOR,
183 FOREIGN,
184 FRAME_ROW,
185 FREE,
186 FROM,
187 FULL,
188 FUNCTION,
189 FUSION,
190 GET,
191 GLOBAL,
192 GRANT,
193 GROUP,
194 GROUPING,
195 GROUPS,
196 HAVING,
197 HEADER,
198 HOLD,
199 HOUR,
200 IDENTITY,
201 IF,
202 IN,
203 INDICATOR,
204 INNER,
205 INOUT,
206 INSENSITIVE,
207 INSERT,
208 INT,
209 INTEGER,
210 INTERSECT,
211 INTERSECTION,
212 INTERVAL,
213 INTO,
214 IS,
215 ISOLATION,
216 JOIN,
217 KEY,
218 LAG,
219 LANGUAGE,
220 LARGE,
221 LAST_VALUE,
222 LATERAL,
223 LEAD,
224 LEADING,
225 LEFT,
226 LEVEL,
227 LIKE,
228 LIKE_REGEX,
229 LIMIT,
230 LN,
231 LOCAL,
232 LOCALTIME,
233 LOCALTIMESTAMP,
234 LOCATION,
235 LOWER,
236 MATCH,
237 MATERIALIZED,
238 MAX,
239 MEMBER,
240 MERGE,
241 METHOD,
242 MIN,
243 MINUTE,
244 MOD,
245 MODIFIES,
246 MODULE,
247 MONTH,
248 MULTISET,
249 NATIONAL,
250 NATURAL,
251 NCHAR,
252 NCLOB,
253 NEXT,
254 NEW,
255 NO,
256 NONE,
257 NORMALIZE,
258 NOT,
259 NTH_VALUE,
260 NTILE,
261 NULL,
262 NULLIF,
263 NUMERIC,
264 OBJECT,
265 OCTET_LENGTH,
266 OCCURRENCES_REGEX,
267 OF,
268 OFFSET,
269 OLD,
270 ON,
271 ONLY,
272 OPEN,
273 OR,
274 ORDER,
275 OUT,
276 OUTER,
277 OVER,
278 OVERLAPS,
279 OVERLAY,
280 PARAMETER,
281 PARTITION,
282 PARQUET,
283 PERCENT,
284 PERCENT_RANK,
285 PERCENTILE_CONT,
286 PERCENTILE_DISC,
287 PERIOD,
288 PORTION,
289 POSITION,
290 POSITION_REGEX,
291 POWER,
292 PRECEDES,
293 PRECEDING,
294 PRECISION,
295 PREPARE,
296 PRIMARY,
297 PROCEDURE,
298 RANGE,
299 RANK,
300 READ,
301 READS,
302 REAL,
303 RECURSIVE,
304 REF,
305 REFERENCES,
306 REFERENCING,
307 REGCLASS,
308 REGR_AVGX,
309 REGR_AVGY,
310 REGR_COUNT,
311 REGR_INTERCEPT,
312 REGR_R2,
313 REGR_SLOPE,
314 REGR_SXX,
315 REGR_SXY,
316 REGR_SYY,
317 RELEASE,
318 REPEATABLE,
319 RESTRICT,
320 RESULT,
321 RETURN,
322 RETURNS,
323 REVOKE,
324 RIGHT,
325 ROLLBACK,
326 ROLLUP,
327 ROW,
328 ROW_NUMBER,
329 ROWS,
330 SAVEPOINT,
331 SCOPE,
332 SCROLL,
333 SEARCH,
334 SECOND,
335 SELECT,
336 SENSITIVE,
337 SERIALIZABLE,
338 SESSION,
339 SESSION_USER,
340 SET,
341 SHOW,
342 SIMILAR,
343 SMALLINT,
344 SOME,
345 SPECIFIC,
346 SPECIFICTYPE,
347 SQL,
348 SQLEXCEPTION,
349 SQLSTATE,
350 SQLWARNING,
351 SQRT,
352 START,
353 STATIC,
354 STDDEV_POP,
355 STDDEV_SAMP,
356 STDIN,
357 STORED,
358 SUBMULTISET,
359 SUBSTRING,
360 SUBSTRING_REGEX,
361 SUCCEEDS,
362 SUM,
363 SYMMETRIC,
364 SYSTEM,
365 SYSTEM_TIME,
366 SYSTEM_USER,
367 TABLE,
368 TABLESAMPLE,
369 TEXT,
370 THEN,
371 TIES,
372 TIME,
373 TIMESTAMP,
374 TIMEZONE_HOUR,
375 TIMEZONE_MINUTE,
376 TO,
377 TRAILING,
378 TRANSACTION,
379 TRANSLATE,
380 TRANSLATE_REGEX,
381 TRANSLATION,
382 TREAT,
383 TRIGGER,
384 TRUNCATE,
385 TRIM,
386 TRIM_ARRAY,
387 TRUE,
388 UESCAPE,
389 UNBOUNDED,
390 UNCOMMITTED,
391 UNION,
392 UNIQUE,
393 UNKNOWN,
394 UNNEST,
395 UPDATE,
396 UPPER,
397 USER,
398 USING,
399 UUID,
400 VALUE,
401 VALUES,
402 VALUE_OF,
403 VAR_POP,
404 VAR_SAMP,
405 VARBINARY,
406 VARCHAR,
407 VARYING,
408 VERSIONING,
409 VIEW,
410 WHEN,
411 WHENEVER,
412 WHERE,
413 WIDTH_BUCKET,
414 WINDOW,
415 WITH,
416 WITHIN,
417 WITHOUT,
418 WRITE,
419 WORK,
420 YEAR,
421 ZONE,
422 END_EXEC = "END-EXEC"
423);
424
425pub const RESERVED_FOR_TABLE_ALIAS: &[&str] = &[
428 WITH, SELECT, WHERE, GROUP, HAVING, ORDER, LIMIT, OFFSET, FETCH, UNION, EXCEPT, INTERSECT,
430 ON, JOIN, INNER, CROSS, FULL, LEFT, RIGHT, NATURAL, USING,
432 OUTER,
434];
435
436pub const RESERVED_FOR_COLUMN_ALIAS: &[&str] = &[
439 WITH, SELECT, WHERE, GROUP, HAVING, ORDER, LIMIT, OFFSET, FETCH, UNION, EXCEPT, INTERSECT,
441 FROM,
443];