1pub const RESERVED: u8 = 1 << 0;
15pub const UNRESERVED: u8 = 1 << 1;
17pub const COLUMN_NAME: u8 = 1 << 2;
19pub const FUNC_NAME: u8 = 1 << 3;
21pub const TYPE_NAME: u8 = 1 << 4;
23
24pub const LONGEST: usize = 15;
27
28pub static KEYWORDS: [(&str, u8); 514] = [
30 ("abort", UNRESERVED),
31 ("absolute", UNRESERVED),
32 ("access", UNRESERVED),
33 ("action", UNRESERVED),
34 ("add", UNRESERVED),
35 ("admin", UNRESERVED),
36 ("after", UNRESERVED),
37 ("aggregate", UNRESERVED),
38 ("alias", 0),
39 ("all", RESERVED),
40 ("also", UNRESERVED),
41 ("alter", UNRESERVED),
42 ("always", UNRESERVED),
43 ("analyse", RESERVED),
44 ("analyze", RESERVED),
45 ("and", RESERVED),
46 ("anti", TYPE_NAME),
47 ("any", RESERVED),
48 ("approx", UNRESERVED),
49 ("array", RESERVED),
50 ("as", RESERVED),
51 ("asc", RESERVED),
52 ("ascending", 0),
53 ("asof", FUNC_NAME | TYPE_NAME),
54 ("assertion", UNRESERVED),
55 ("assignment", UNRESERVED),
56 ("asymmetric", RESERVED),
57 ("at", FUNC_NAME | TYPE_NAME),
58 ("attach", UNRESERVED),
59 ("attribute", UNRESERVED),
60 ("authorization", FUNC_NAME | TYPE_NAME),
61 ("backward", UNRESERVED),
62 ("before", UNRESERVED),
63 ("begin", UNRESERVED),
64 ("between", COLUMN_NAME),
65 ("bigint", COLUMN_NAME),
66 ("binary", FUNC_NAME | TYPE_NAME),
67 ("bit", COLUMN_NAME),
68 ("boolean", COLUMN_NAME),
69 ("both", RESERVED),
70 ("by", TYPE_NAME),
71 ("cache", UNRESERVED),
72 ("call", UNRESERVED),
73 ("called", UNRESERVED),
74 ("cascade", UNRESERVED),
75 ("cascaded", UNRESERVED),
76 ("case", RESERVED),
77 ("cast", RESERVED),
78 ("catalog", UNRESERVED),
79 ("centuries", UNRESERVED),
80 ("century", UNRESERVED),
81 ("chain", UNRESERVED),
82 ("char", COLUMN_NAME),
83 ("character", COLUMN_NAME),
84 ("characteristics", UNRESERVED),
85 ("check", RESERVED),
86 ("checkpoint", UNRESERVED),
87 ("class", UNRESERVED),
88 ("close", UNRESERVED),
89 ("cluster", UNRESERVED),
90 ("coalesce", COLUMN_NAME),
91 ("collate", RESERVED),
92 ("collation", FUNC_NAME | TYPE_NAME),
93 ("column", RESERVED),
94 ("columns", COLUMN_NAME | TYPE_NAME),
95 ("comment", UNRESERVED),
96 ("comments", UNRESERVED),
97 ("commit", UNRESERVED),
98 ("committed", UNRESERVED),
99 ("compression", UNRESERVED),
100 ("concurrently", FUNC_NAME | TYPE_NAME),
101 ("configuration", UNRESERVED),
102 ("conflict", UNRESERVED),
103 ("connect", UNRESERVED),
104 ("connection", UNRESERVED),
105 ("constraint", RESERVED),
106 ("constraints", UNRESERVED),
107 ("content", UNRESERVED),
108 ("continue", UNRESERVED),
109 ("conversion", UNRESERVED),
110 ("copy", UNRESERVED),
111 ("cost", UNRESERVED),
112 ("create", RESERVED),
113 ("cross", FUNC_NAME | TYPE_NAME),
114 ("csv", UNRESERVED),
115 ("cube", UNRESERVED),
116 ("current", UNRESERVED),
117 ("cursor", UNRESERVED),
118 ("cycle", UNRESERVED),
119 ("data", UNRESERVED),
120 ("database", UNRESERVED),
121 ("databases", 0),
122 ("day", UNRESERVED),
123 ("days", UNRESERVED),
124 ("deallocate", UNRESERVED),
125 ("dec", COLUMN_NAME),
126 ("decade", UNRESERVED),
127 ("decades", UNRESERVED),
128 ("decimal", COLUMN_NAME),
129 ("declare", UNRESERVED),
130 ("default", RESERVED),
131 ("defaults", UNRESERVED),
132 ("deferrable", RESERVED),
133 ("deferred", UNRESERVED),
134 ("definer", UNRESERVED),
135 ("delete", UNRESERVED),
136 ("delimiter", UNRESERVED),
137 ("delimiters", UNRESERVED),
138 ("depends", UNRESERVED),
139 ("desc", RESERVED),
140 ("descending", 0),
141 ("describe", RESERVED),
142 ("destroy", 0),
143 ("detach", UNRESERVED),
144 ("dictionary", UNRESERVED),
145 ("disable", UNRESERVED),
146 ("discard", UNRESERVED),
147 ("disconnect", UNRESERVED),
148 ("distance", UNRESERVED),
149 ("distinct", RESERVED),
150 ("do", RESERVED),
151 ("document", UNRESERVED),
152 ("domain", UNRESERVED),
153 ("double", UNRESERVED),
154 ("drop", UNRESERVED),
155 ("each", UNRESERVED),
156 ("else", RESERVED),
157 ("enable", UNRESERVED),
158 ("encoding", UNRESERVED),
159 ("encrypted", UNRESERVED),
160 ("end", RESERVED),
161 ("enum", UNRESERVED),
162 ("error", UNRESERVED),
163 ("escape", UNRESERVED),
164 ("event", UNRESERVED),
165 ("exact", UNRESERVED),
166 ("except", RESERVED),
167 ("exclude", UNRESERVED),
168 ("excluding", UNRESERVED),
169 ("exclusive", UNRESERVED),
170 ("execute", UNRESERVED),
171 ("exists", COLUMN_NAME),
172 ("explain", UNRESERVED),
173 ("export", UNRESERVED),
174 ("export_state", UNRESERVED),
175 ("extension", UNRESERVED),
176 ("extensions", UNRESERVED),
177 ("external", UNRESERVED),
178 ("extract", COLUMN_NAME),
179 ("false", RESERVED),
180 ("family", UNRESERVED),
181 ("fetch", RESERVED),
182 ("filter", UNRESERVED),
183 ("first", UNRESERVED),
184 ("float", COLUMN_NAME),
185 ("following", UNRESERVED),
186 ("for", RESERVED),
187 ("force", UNRESERVED),
188 ("foreign", RESERVED),
189 ("forward", UNRESERVED),
190 ("freeze", FUNC_NAME | TYPE_NAME),
191 ("from", RESERVED),
192 ("full", FUNC_NAME | TYPE_NAME),
193 ("function", UNRESERVED),
194 ("functions", UNRESERVED),
195 ("generated", COLUMN_NAME | FUNC_NAME),
196 ("geometry", 0),
197 ("glob", FUNC_NAME | TYPE_NAME),
198 ("global", UNRESERVED),
199 ("grant", UNRESERVED),
200 ("granted", UNRESERVED),
201 ("group", RESERVED),
202 ("grouping", COLUMN_NAME),
203 ("grouping_id", COLUMN_NAME),
204 ("groups", UNRESERVED),
205 ("handler", UNRESERVED),
206 ("having", RESERVED),
207 ("header", UNRESERVED),
208 ("hold", UNRESERVED),
209 ("hour", UNRESERVED),
210 ("hours", UNRESERVED),
211 ("identity", UNRESERVED),
212 ("if", UNRESERVED),
213 ("ignore", UNRESERVED),
214 ("ilike", FUNC_NAME | TYPE_NAME),
215 ("immediate", UNRESERVED),
216 ("immutable", UNRESERVED),
217 ("implicit", UNRESERVED),
218 ("import", UNRESERVED),
219 ("in", RESERVED),
220 ("include", UNRESERVED),
221 ("including", UNRESERVED),
222 ("increment", UNRESERVED),
223 ("index", UNRESERVED),
224 ("indexes", UNRESERVED),
225 ("inherit", UNRESERVED),
226 ("inherits", UNRESERVED),
227 ("initially", RESERVED),
228 ("inline", UNRESERVED),
229 ("inner", FUNC_NAME | TYPE_NAME),
230 ("inout", COLUMN_NAME),
231 ("input", UNRESERVED),
232 ("insensitive", UNRESERVED),
233 ("insert", UNRESERVED),
234 ("install", UNRESERVED),
235 ("instead", UNRESERVED),
236 ("int", COLUMN_NAME),
237 ("integer", COLUMN_NAME),
238 ("intersect", RESERVED),
239 ("interval", COLUMN_NAME),
240 ("into", RESERVED),
241 ("invoker", UNRESERVED),
242 ("is", FUNC_NAME | TYPE_NAME),
243 ("isnull", FUNC_NAME | TYPE_NAME),
244 ("isolation", UNRESERVED),
245 ("join", FUNC_NAME | TYPE_NAME),
246 ("json", UNRESERVED),
247 ("key", UNRESERVED),
248 ("keys", 0),
249 ("label", UNRESERVED),
250 ("lambda", RESERVED),
251 ("language", UNRESERVED),
252 ("large", UNRESERVED),
253 ("last", UNRESERVED),
254 ("lateral", RESERVED),
255 ("leading", RESERVED),
256 ("leakproof", UNRESERVED),
257 ("left", FUNC_NAME | TYPE_NAME),
258 ("level", UNRESERVED),
259 ("like", FUNC_NAME | TYPE_NAME),
260 ("limit", RESERVED),
261 ("listen", UNRESERVED),
262 ("load", UNRESERVED),
263 ("local", UNRESERVED),
264 ("location", UNRESERVED),
265 ("lock", UNRESERVED),
266 ("locked", UNRESERVED),
267 ("logged", UNRESERVED),
268 ("macro", UNRESERVED),
269 ("map", COLUMN_NAME | FUNC_NAME),
270 ("mapping", UNRESERVED),
271 ("match", UNRESERVED),
272 ("matched", UNRESERVED),
273 ("materialized", UNRESERVED),
274 ("maxvalue", UNRESERVED),
275 ("merge", UNRESERVED),
276 ("method", UNRESERVED),
277 ("microsecond", UNRESERVED),
278 ("microseconds", UNRESERVED),
279 ("millennia", UNRESERVED),
280 ("millennium", UNRESERVED),
281 ("millisecond", UNRESERVED),
282 ("milliseconds", UNRESERVED),
283 ("minute", UNRESERVED),
284 ("minutes", UNRESERVED),
285 ("minvalue", UNRESERVED),
286 ("mode", UNRESERVED),
287 ("month", UNRESERVED),
288 ("months", UNRESERVED),
289 ("move", UNRESERVED),
290 ("name", UNRESERVED),
291 ("names", UNRESERVED),
292 ("national", COLUMN_NAME),
293 ("natural", FUNC_NAME | TYPE_NAME),
294 ("nchar", COLUMN_NAME),
295 ("nearest", UNRESERVED),
296 ("new", UNRESERVED),
297 ("next", UNRESERVED),
298 ("no", UNRESERVED),
299 ("none", COLUMN_NAME),
300 ("not", RESERVED),
301 ("nothing", UNRESERVED),
302 ("notify", UNRESERVED),
303 ("notnull", FUNC_NAME | TYPE_NAME),
304 ("nowait", UNRESERVED),
305 ("null", RESERVED),
306 ("nullif", COLUMN_NAME),
307 ("nulls", UNRESERVED),
308 ("numeric", COLUMN_NAME),
309 ("object", UNRESERVED),
310 ("of", UNRESERVED),
311 ("off", UNRESERVED),
312 ("offset", RESERVED),
313 ("oids", UNRESERVED),
314 ("old", UNRESERVED),
315 ("on", RESERVED),
316 ("only", RESERVED),
317 ("operator", UNRESERVED),
318 ("option", UNRESERVED),
319 ("options", UNRESERVED),
320 ("or", RESERVED),
321 ("order", RESERVED),
322 ("ordinality", UNRESERVED),
323 ("others", UNRESERVED),
324 ("out", COLUMN_NAME),
325 ("outer", FUNC_NAME | TYPE_NAME),
326 ("over", UNRESERVED),
327 ("overlaps", FUNC_NAME | TYPE_NAME),
328 ("overlay", COLUMN_NAME),
329 ("overriding", UNRESERVED),
330 ("owned", UNRESERVED),
331 ("owner", UNRESERVED),
332 ("parallel", UNRESERVED),
333 ("parser", UNRESERVED),
334 ("partial", UNRESERVED),
335 ("partition", UNRESERVED),
336 ("partitioned", UNRESERVED),
337 ("passing", UNRESERVED),
338 ("password", UNRESERVED),
339 ("percent", UNRESERVED),
340 ("persistent", UNRESERVED),
341 ("pivot", RESERVED),
342 ("pivot_longer", RESERVED),
343 ("pivot_wider", RESERVED),
344 ("placing", RESERVED),
345 ("plans", UNRESERVED),
346 ("policy", UNRESERVED),
347 ("position", COLUMN_NAME),
348 ("positional", FUNC_NAME | TYPE_NAME),
349 ("pragma", UNRESERVED),
350 ("preceding", UNRESERVED),
351 ("precision", COLUMN_NAME),
352 ("prefix", 0),
353 ("prepare", UNRESERVED),
354 ("prepared", UNRESERVED),
355 ("preserve", UNRESERVED),
356 ("primary", RESERVED),
357 ("prior", UNRESERVED),
358 ("privileges", UNRESERVED),
359 ("procedural", UNRESERVED),
360 ("procedure", UNRESERVED),
361 ("program", UNRESERVED),
362 ("public", 0),
363 ("publication", UNRESERVED),
364 ("qualify", RESERVED),
365 ("quarter", UNRESERVED),
366 ("quarters", UNRESERVED),
367 ("quote", UNRESERVED),
368 ("range", UNRESERVED),
369 ("read", UNRESERVED),
370 ("real", COLUMN_NAME),
371 ("reassign", UNRESERVED),
372 ("recheck", UNRESERVED),
373 ("recursive", UNRESERVED),
374 ("ref", UNRESERVED),
375 ("references", RESERVED),
376 ("referencing", UNRESERVED),
377 ("refresh", UNRESERVED),
378 ("register", 0),
379 ("reindex", UNRESERVED),
380 ("relative", UNRESERVED),
381 ("release", UNRESERVED),
382 ("rename", UNRESERVED),
383 ("repeatable", UNRESERVED),
384 ("replace", UNRESERVED),
385 ("replica", UNRESERVED),
386 ("repository", 0),
387 ("reset", UNRESERVED),
388 ("resource", UNRESERVED),
389 ("resources", 0),
390 ("respect", UNRESERVED),
391 ("restart", UNRESERVED),
392 ("restrict", UNRESERVED),
393 ("returning", RESERVED),
394 ("returns", UNRESERVED),
395 ("revoke", UNRESERVED),
396 ("right", FUNC_NAME | TYPE_NAME),
397 ("role", UNRESERVED),
398 ("rollback", UNRESERVED),
399 ("rollup", UNRESERVED),
400 ("row", COLUMN_NAME),
401 ("rows", UNRESERVED),
402 ("rule", UNRESERVED),
403 ("sample", UNRESERVED),
404 ("savepoint", UNRESERVED),
405 ("schema", UNRESERVED),
406 ("schemas", UNRESERVED),
407 ("scope", UNRESERVED),
408 ("scroll", UNRESERVED),
409 ("search", UNRESERVED),
410 ("second", UNRESERVED),
411 ("seconds", UNRESERVED),
412 ("secret", UNRESERVED),
413 ("secure", UNRESERVED),
414 ("security", UNRESERVED),
415 ("select", RESERVED),
416 ("semi", TYPE_NAME),
417 ("sequence", UNRESERVED),
418 ("sequences", UNRESERVED),
419 ("serializable", UNRESERVED),
420 ("server", UNRESERVED),
421 ("session", UNRESERVED),
422 ("set", UNRESERVED),
423 ("setof", COLUMN_NAME),
424 ("sets", UNRESERVED),
425 ("share", UNRESERVED),
426 ("show", RESERVED),
427 ("similar", FUNC_NAME | TYPE_NAME),
428 ("similarity", UNRESERVED),
429 ("simple", UNRESERVED),
430 ("skip", UNRESERVED),
431 ("smallint", COLUMN_NAME),
432 ("snapshot", UNRESERVED),
433 ("some", RESERVED),
434 ("sorted", UNRESERVED),
435 ("source", UNRESERVED),
436 ("sql", UNRESERVED),
437 ("stable", UNRESERVED),
438 ("standalone", UNRESERVED),
439 ("start", UNRESERVED),
440 ("statement", UNRESERVED),
441 ("statistics", UNRESERVED),
442 ("stdin", UNRESERVED),
443 ("stdout", UNRESERVED),
444 ("storage", UNRESERVED),
445 ("stored", UNRESERVED),
446 ("strict", UNRESERVED),
447 ("strip", UNRESERVED),
448 ("struct", COLUMN_NAME | FUNC_NAME),
449 ("subscription", UNRESERVED),
450 ("substring", COLUMN_NAME),
451 ("summarize", RESERVED),
452 ("symmetric", RESERVED),
453 ("sysid", UNRESERVED),
454 ("system", UNRESERVED),
455 ("table", RESERVED),
456 ("tables", UNRESERVED),
457 ("tablesample", FUNC_NAME | TYPE_NAME),
458 ("tablespace", UNRESERVED),
459 ("target", UNRESERVED),
460 ("temp", UNRESERVED),
461 ("template", UNRESERVED),
462 ("temporary", UNRESERVED),
463 ("text", UNRESERVED),
464 ("then", RESERVED),
465 ("ties", UNRESERVED),
466 ("time", COLUMN_NAME),
467 ("timestamp", COLUMN_NAME),
468 ("to", RESERVED),
469 ("trailing", RESERVED),
470 ("transaction", UNRESERVED),
471 ("transform", UNRESERVED),
472 ("treat", COLUMN_NAME),
473 ("trigger", UNRESERVED),
474 ("trim", COLUMN_NAME),
475 ("true", RESERVED),
476 ("truncate", UNRESERVED),
477 ("trusted", UNRESERVED),
478 ("try", 0),
479 ("try_cast", COLUMN_NAME | TYPE_NAME),
480 ("tuple", COLUMN_NAME | FUNC_NAME),
481 ("type", UNRESERVED),
482 ("types", UNRESERVED),
483 ("unbounded", UNRESERVED),
484 ("uncommitted", UNRESERVED),
485 ("unencrypted", UNRESERVED),
486 ("union", RESERVED),
487 ("unique", RESERVED),
488 ("unknown", UNRESERVED),
489 ("unlisten", UNRESERVED),
490 ("unlogged", UNRESERVED),
491 ("unpack", TYPE_NAME),
492 ("unpivot", RESERVED),
493 ("until", UNRESERVED),
494 ("update", UNRESERVED),
495 ("use", UNRESERVED),
496 ("user", UNRESERVED),
497 ("using", RESERVED),
498 ("vacuum", UNRESERVED),
499 ("valid", UNRESERVED),
500 ("validate", UNRESERVED),
501 ("validator", UNRESERVED),
502 ("value", UNRESERVED),
503 ("values", COLUMN_NAME),
504 ("varchar", COLUMN_NAME),
505 ("variable", UNRESERVED),
506 ("variables", 0),
507 ("variadic", RESERVED),
508 ("variant", 0),
509 ("varying", UNRESERVED),
510 ("verbose", FUNC_NAME | TYPE_NAME),
511 ("version", UNRESERVED),
512 ("view", UNRESERVED),
513 ("views", UNRESERVED),
514 ("virtual", UNRESERVED),
515 ("volatile", UNRESERVED),
516 ("week", UNRESERVED),
517 ("weeks", UNRESERVED),
518 ("when", RESERVED),
519 ("where", RESERVED),
520 ("whitespace", UNRESERVED),
521 ("window", RESERVED),
522 ("with", RESERVED),
523 ("within", UNRESERVED),
524 ("without", UNRESERVED),
525 ("work", UNRESERVED),
526 ("wrapper", UNRESERVED),
527 ("write", UNRESERVED),
528 ("xml", UNRESERVED),
529 ("xmlattributes", COLUMN_NAME),
530 ("xmlconcat", COLUMN_NAME),
531 ("xmlelement", COLUMN_NAME),
532 ("xmlexists", COLUMN_NAME),
533 ("xmlforest", COLUMN_NAME),
534 ("xmlnamespaces", COLUMN_NAME),
535 ("xmlparse", COLUMN_NAME),
536 ("xmlpi", COLUMN_NAME),
537 ("xmlroot", COLUMN_NAME),
538 ("xmlserialize", COLUMN_NAME),
539 ("xmltable", COLUMN_NAME),
540 ("year", UNRESERVED),
541 ("years", UNRESERVED),
542 ("yes", UNRESERVED),
543 ("zone", UNRESERVED),
544];