Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/sqlparse/keywords.py: 88%
14 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1#
2# Copyright (C) 2009-2020 the sqlparse authors and contributors
3# <see AUTHORS file>
4#
5# This module is part of python-sqlparse and is released under
6# the BSD License: https://opensource.org/licenses/BSD-3-Clause
8import re
10from sqlparse import tokens
13def is_keyword(value):
14 """Checks for a keyword.
16 If the given value is in one of the KEYWORDS_* dictionary
17 it's considered a keyword. Otherwise tokens.Name is returned.
18 """
19 val = value.upper()
20 return (KEYWORDS_COMMON.get(val)
21 or KEYWORDS_ORACLE.get(val)
22 or KEYWORDS_PLPGSQL.get(val)
23 or KEYWORDS_HQL.get(val)
24 or KEYWORDS_MSACCESS.get(val)
25 or KEYWORDS.get(val, tokens.Name)), value
28SQL_REGEX = {
29 'root': [
30 (r'(--|# )\+.*?(\r\n|\r|\n|$)', tokens.Comment.Single.Hint),
31 (r'/\*\+[\s\S]*?\*/', tokens.Comment.Multiline.Hint),
33 (r'(--|# ).*?(\r\n|\r|\n|$)', tokens.Comment.Single),
34 (r'/\*[\s\S]*?\*/', tokens.Comment.Multiline),
36 (r'(\r\n|\r|\n)', tokens.Newline),
37 (r'\s+?', tokens.Whitespace),
39 (r':=', tokens.Assignment),
40 (r'::', tokens.Punctuation),
42 (r'\*', tokens.Wildcard),
44 (r"`(``|[^`])*`", tokens.Name),
45 (r"´(´´|[^´])*´", tokens.Name),
46 (r'((?<!\S)\$(?:[_A-ZÀ-Ü]\w*)?\$)[\s\S]*?\1', tokens.Literal),
48 (r'\?', tokens.Name.Placeholder),
49 (r'%(\(\w+\))?s', tokens.Name.Placeholder),
50 (r'(?<!\w)[$:?]\w+', tokens.Name.Placeholder),
52 (r'\\\w+', tokens.Command),
53 (r'(NOT\s+)?(IN)\b', tokens.Operator.Comparison),
54 # FIXME(andi): VALUES shouldn't be listed here
55 # see https://github.com/andialbrecht/sqlparse/pull/64
56 # AS and IN are special, it may be followed by a parenthesis, but
57 # are never functions, see issue183 and issue507
58 (r'(CASE|IN|VALUES|USING|FROM|AS)\b', tokens.Keyword),
60 (r'(@|##|#)[A-ZÀ-Ü]\w+', tokens.Name),
62 # see issue #39
63 # Spaces around period `schema . name` are valid identifier
64 # TODO: Spaces before period not implemented
65 (r'[A-ZÀ-Ü]\w*(?=\s*\.)', tokens.Name), # 'Name'.
66 # FIXME(atronah): never match,
67 # because `re.match` doesn't work with look-behind regexp feature
68 (r'(?<=\.)[A-ZÀ-Ü]\w*', tokens.Name), # .'Name'
69 (r'[A-ZÀ-Ü]\w*(?=\()', tokens.Name), # side effect: change kw to func
70 (r'-?0x[\dA-F]+', tokens.Number.Hexadecimal),
71 (r'-?\d+(\.\d+)?E-?\d+', tokens.Number.Float),
72 (r'(?![_A-ZÀ-Ü])-?(\d+(\.\d*)|\.\d+)(?![_A-ZÀ-Ü])',
73 tokens.Number.Float),
74 (r'(?![_A-ZÀ-Ü])-?\d+(?![_A-ZÀ-Ü])', tokens.Number.Integer),
75 (r"'(''|\\\\|\\'|[^'])*'", tokens.String.Single),
76 # not a real string literal in ANSI SQL:
77 (r'"(""|\\\\|\\"|[^"])*"', tokens.String.Symbol),
78 (r'(""|".*?[^\\]")', tokens.String.Symbol),
79 # sqlite names can be escaped with [square brackets]. left bracket
80 # cannot be preceded by word character or a right bracket --
81 # otherwise it's probably an array index
82 (r'(?<![\w\])])(\[[^\]\[]+\])', tokens.Name),
83 (r'((LEFT\s+|RIGHT\s+|FULL\s+)?(INNER\s+|OUTER\s+|STRAIGHT\s+)?'
84 r'|(CROSS\s+|NATURAL\s+)?)?JOIN\b', tokens.Keyword),
85 (r'END(\s+IF|\s+LOOP|\s+WHILE)?\b', tokens.Keyword),
86 (r'NOT\s+NULL\b', tokens.Keyword),
87 (r'NULLS\s+(FIRST|LAST)\b', tokens.Keyword),
88 (r'UNION\s+ALL\b', tokens.Keyword),
89 (r'CREATE(\s+OR\s+REPLACE)?\b', tokens.Keyword.DDL),
90 (r'DOUBLE\s+PRECISION\b', tokens.Name.Builtin),
91 (r'GROUP\s+BY\b', tokens.Keyword),
92 (r'ORDER\s+BY\b', tokens.Keyword),
93 (r'HANDLER\s+FOR\b', tokens.Keyword),
94 (r'(LATERAL\s+VIEW\s+)'
95 r'(EXPLODE|INLINE|PARSE_URL_TUPLE|POSEXPLODE|STACK)\b',
96 tokens.Keyword),
97 (r"(AT|WITH')\s+TIME\s+ZONE\s+'[^']+'", tokens.Keyword.TZCast),
98 (r'(NOT\s+)?(LIKE|ILIKE|RLIKE)\b', tokens.Operator.Comparison),
99 (r'(NOT\s+)?(REGEXP)\b', tokens.Operator.Comparison),
100 # Check for keywords, also returns tokens.Name if regex matches
101 # but the match isn't a keyword.
102 (r'[0-9_\w][_$#\w]*', is_keyword),
103 (r'[;:()\[\],\.]', tokens.Punctuation),
104 (r'[<>=~!]+', tokens.Operator.Comparison),
105 (r'[+/@#%^&|^-]+', tokens.Operator),
106 ]}
108FLAGS = re.IGNORECASE | re.UNICODE
109SQL_REGEX = [(re.compile(rx, FLAGS).match, tt) for rx, tt in SQL_REGEX['root']]
111KEYWORDS = {
112 'ABORT': tokens.Keyword,
113 'ABS': tokens.Keyword,
114 'ABSOLUTE': tokens.Keyword,
115 'ACCESS': tokens.Keyword,
116 'ADA': tokens.Keyword,
117 'ADD': tokens.Keyword,
118 'ADMIN': tokens.Keyword,
119 'AFTER': tokens.Keyword,
120 'AGGREGATE': tokens.Keyword,
121 'ALIAS': tokens.Keyword,
122 'ALL': tokens.Keyword,
123 'ALLOCATE': tokens.Keyword,
124 'ANALYSE': tokens.Keyword,
125 'ANALYZE': tokens.Keyword,
126 'ANY': tokens.Keyword,
127 'ARRAYLEN': tokens.Keyword,
128 'ARE': tokens.Keyword,
129 'ASC': tokens.Keyword.Order,
130 'ASENSITIVE': tokens.Keyword,
131 'ASSERTION': tokens.Keyword,
132 'ASSIGNMENT': tokens.Keyword,
133 'ASYMMETRIC': tokens.Keyword,
134 'AT': tokens.Keyword,
135 'ATOMIC': tokens.Keyword,
136 'AUDIT': tokens.Keyword,
137 'AUTHORIZATION': tokens.Keyword,
138 'AUTO_INCREMENT': tokens.Keyword,
139 'AVG': tokens.Keyword,
141 'BACKWARD': tokens.Keyword,
142 'BEFORE': tokens.Keyword,
143 'BEGIN': tokens.Keyword,
144 'BETWEEN': tokens.Keyword,
145 'BITVAR': tokens.Keyword,
146 'BIT_LENGTH': tokens.Keyword,
147 'BOTH': tokens.Keyword,
148 'BREADTH': tokens.Keyword,
150 # 'C': tokens.Keyword, # most likely this is an alias
151 'CACHE': tokens.Keyword,
152 'CALL': tokens.Keyword,
153 'CALLED': tokens.Keyword,
154 'CARDINALITY': tokens.Keyword,
155 'CASCADE': tokens.Keyword,
156 'CASCADED': tokens.Keyword,
157 'CAST': tokens.Keyword,
158 'CATALOG': tokens.Keyword,
159 'CATALOG_NAME': tokens.Keyword,
160 'CHAIN': tokens.Keyword,
161 'CHARACTERISTICS': tokens.Keyword,
162 'CHARACTER_LENGTH': tokens.Keyword,
163 'CHARACTER_SET_CATALOG': tokens.Keyword,
164 'CHARACTER_SET_NAME': tokens.Keyword,
165 'CHARACTER_SET_SCHEMA': tokens.Keyword,
166 'CHAR_LENGTH': tokens.Keyword,
167 'CHARSET': tokens.Keyword,
168 'CHECK': tokens.Keyword,
169 'CHECKED': tokens.Keyword,
170 'CHECKPOINT': tokens.Keyword,
171 'CLASS': tokens.Keyword,
172 'CLASS_ORIGIN': tokens.Keyword,
173 'CLOB': tokens.Keyword,
174 'CLOSE': tokens.Keyword,
175 'CLUSTER': tokens.Keyword,
176 'COALESCE': tokens.Keyword,
177 'COBOL': tokens.Keyword,
178 'COLLATE': tokens.Keyword,
179 'COLLATION': tokens.Keyword,
180 'COLLATION_CATALOG': tokens.Keyword,
181 'COLLATION_NAME': tokens.Keyword,
182 'COLLATION_SCHEMA': tokens.Keyword,
183 'COLLECT': tokens.Keyword,
184 'COLUMN': tokens.Keyword,
185 'COLUMN_NAME': tokens.Keyword,
186 'COMPRESS': tokens.Keyword,
187 'COMMAND_FUNCTION': tokens.Keyword,
188 'COMMAND_FUNCTION_CODE': tokens.Keyword,
189 'COMMENT': tokens.Keyword,
190 'COMMIT': tokens.Keyword.DML,
191 'COMMITTED': tokens.Keyword,
192 'COMPLETION': tokens.Keyword,
193 'CONCURRENTLY': tokens.Keyword,
194 'CONDITION_NUMBER': tokens.Keyword,
195 'CONNECT': tokens.Keyword,
196 'CONNECTION': tokens.Keyword,
197 'CONNECTION_NAME': tokens.Keyword,
198 'CONSTRAINT': tokens.Keyword,
199 'CONSTRAINTS': tokens.Keyword,
200 'CONSTRAINT_CATALOG': tokens.Keyword,
201 'CONSTRAINT_NAME': tokens.Keyword,
202 'CONSTRAINT_SCHEMA': tokens.Keyword,
203 'CONSTRUCTOR': tokens.Keyword,
204 'CONTAINS': tokens.Keyword,
205 'CONTINUE': tokens.Keyword,
206 'CONVERSION': tokens.Keyword,
207 'CONVERT': tokens.Keyword,
208 'COPY': tokens.Keyword,
209 'CORRESPONDING': tokens.Keyword,
210 'COUNT': tokens.Keyword,
211 'CREATEDB': tokens.Keyword,
212 'CREATEUSER': tokens.Keyword,
213 'CROSS': tokens.Keyword,
214 'CUBE': tokens.Keyword,
215 'CURRENT': tokens.Keyword,
216 'CURRENT_DATE': tokens.Keyword,
217 'CURRENT_PATH': tokens.Keyword,
218 'CURRENT_ROLE': tokens.Keyword,
219 'CURRENT_TIME': tokens.Keyword,
220 'CURRENT_TIMESTAMP': tokens.Keyword,
221 'CURRENT_USER': tokens.Keyword,
222 'CURSOR': tokens.Keyword,
223 'CURSOR_NAME': tokens.Keyword,
224 'CYCLE': tokens.Keyword,
226 'DATA': tokens.Keyword,
227 'DATABASE': tokens.Keyword,
228 'DATETIME_INTERVAL_CODE': tokens.Keyword,
229 'DATETIME_INTERVAL_PRECISION': tokens.Keyword,
230 'DAY': tokens.Keyword,
231 'DEALLOCATE': tokens.Keyword,
232 'DECLARE': tokens.Keyword,
233 'DEFAULT': tokens.Keyword,
234 'DEFAULTS': tokens.Keyword,
235 'DEFERRABLE': tokens.Keyword,
236 'DEFERRED': tokens.Keyword,
237 'DEFINED': tokens.Keyword,
238 'DEFINER': tokens.Keyword,
239 'DELIMITER': tokens.Keyword,
240 'DELIMITERS': tokens.Keyword,
241 'DEREF': tokens.Keyword,
242 'DESC': tokens.Keyword.Order,
243 'DESCRIBE': tokens.Keyword,
244 'DESCRIPTOR': tokens.Keyword,
245 'DESTROY': tokens.Keyword,
246 'DESTRUCTOR': tokens.Keyword,
247 'DETERMINISTIC': tokens.Keyword,
248 'DIAGNOSTICS': tokens.Keyword,
249 'DICTIONARY': tokens.Keyword,
250 'DISABLE': tokens.Keyword,
251 'DISCONNECT': tokens.Keyword,
252 'DISPATCH': tokens.Keyword,
253 'DIV': tokens.Operator,
254 'DO': tokens.Keyword,
255 'DOMAIN': tokens.Keyword,
256 'DYNAMIC': tokens.Keyword,
257 'DYNAMIC_FUNCTION': tokens.Keyword,
258 'DYNAMIC_FUNCTION_CODE': tokens.Keyword,
260 'EACH': tokens.Keyword,
261 'ENABLE': tokens.Keyword,
262 'ENCODING': tokens.Keyword,
263 'ENCRYPTED': tokens.Keyword,
264 'END-EXEC': tokens.Keyword,
265 'ENGINE': tokens.Keyword,
266 'EQUALS': tokens.Keyword,
267 'ESCAPE': tokens.Keyword,
268 'EVERY': tokens.Keyword,
269 'EXCEPT': tokens.Keyword,
270 'EXCEPTION': tokens.Keyword,
271 'EXCLUDING': tokens.Keyword,
272 'EXCLUSIVE': tokens.Keyword,
273 'EXEC': tokens.Keyword,
274 'EXECUTE': tokens.Keyword,
275 'EXISTING': tokens.Keyword,
276 'EXISTS': tokens.Keyword,
277 'EXPLAIN': tokens.Keyword,
278 'EXTERNAL': tokens.Keyword,
279 'EXTRACT': tokens.Keyword,
281 'FALSE': tokens.Keyword,
282 'FETCH': tokens.Keyword,
283 'FILE': tokens.Keyword,
284 'FINAL': tokens.Keyword,
285 'FIRST': tokens.Keyword,
286 'FORCE': tokens.Keyword,
287 'FOREACH': tokens.Keyword,
288 'FOREIGN': tokens.Keyword,
289 'FORTRAN': tokens.Keyword,
290 'FORWARD': tokens.Keyword,
291 'FOUND': tokens.Keyword,
292 'FREE': tokens.Keyword,
293 'FREEZE': tokens.Keyword,
294 'FULL': tokens.Keyword,
295 'FUNCTION': tokens.Keyword,
297 # 'G': tokens.Keyword,
298 'GENERAL': tokens.Keyword,
299 'GENERATED': tokens.Keyword,
300 'GET': tokens.Keyword,
301 'GLOBAL': tokens.Keyword,
302 'GO': tokens.Keyword,
303 'GOTO': tokens.Keyword,
304 'GRANT': tokens.Keyword,
305 'GRANTED': tokens.Keyword,
306 'GROUPING': tokens.Keyword,
308 'HAVING': tokens.Keyword,
309 'HIERARCHY': tokens.Keyword,
310 'HOLD': tokens.Keyword,
311 'HOUR': tokens.Keyword,
312 'HOST': tokens.Keyword,
314 'IDENTIFIED': tokens.Keyword,
315 'IDENTITY': tokens.Keyword,
316 'IGNORE': tokens.Keyword,
317 'ILIKE': tokens.Keyword,
318 'IMMEDIATE': tokens.Keyword,
319 'IMMUTABLE': tokens.Keyword,
321 'IMPLEMENTATION': tokens.Keyword,
322 'IMPLICIT': tokens.Keyword,
323 'INCLUDING': tokens.Keyword,
324 'INCREMENT': tokens.Keyword,
325 'INDEX': tokens.Keyword,
327 'INDICATOR': tokens.Keyword,
328 'INFIX': tokens.Keyword,
329 'INHERITS': tokens.Keyword,
330 'INITIAL': tokens.Keyword,
331 'INITIALIZE': tokens.Keyword,
332 'INITIALLY': tokens.Keyword,
333 'INOUT': tokens.Keyword,
334 'INPUT': tokens.Keyword,
335 'INSENSITIVE': tokens.Keyword,
336 'INSTANTIABLE': tokens.Keyword,
337 'INSTEAD': tokens.Keyword,
338 'INTERSECT': tokens.Keyword,
339 'INTO': tokens.Keyword,
340 'INVOKER': tokens.Keyword,
341 'IS': tokens.Keyword,
342 'ISNULL': tokens.Keyword,
343 'ISOLATION': tokens.Keyword,
344 'ITERATE': tokens.Keyword,
346 # 'K': tokens.Keyword,
347 'KEY': tokens.Keyword,
348 'KEY_MEMBER': tokens.Keyword,
349 'KEY_TYPE': tokens.Keyword,
351 'LANCOMPILER': tokens.Keyword,
352 'LANGUAGE': tokens.Keyword,
353 'LARGE': tokens.Keyword,
354 'LAST': tokens.Keyword,
355 'LATERAL': tokens.Keyword,
356 'LEADING': tokens.Keyword,
357 'LENGTH': tokens.Keyword,
358 'LESS': tokens.Keyword,
359 'LEVEL': tokens.Keyword,
360 'LIMIT': tokens.Keyword,
361 'LISTEN': tokens.Keyword,
362 'LOAD': tokens.Keyword,
363 'LOCAL': tokens.Keyword,
364 'LOCALTIME': tokens.Keyword,
365 'LOCALTIMESTAMP': tokens.Keyword,
366 'LOCATION': tokens.Keyword,
367 'LOCATOR': tokens.Keyword,
368 'LOCK': tokens.Keyword,
369 'LOWER': tokens.Keyword,
371 # 'M': tokens.Keyword,
372 'MAP': tokens.Keyword,
373 'MATCH': tokens.Keyword,
374 'MAXEXTENTS': tokens.Keyword,
375 'MAXVALUE': tokens.Keyword,
376 'MESSAGE_LENGTH': tokens.Keyword,
377 'MESSAGE_OCTET_LENGTH': tokens.Keyword,
378 'MESSAGE_TEXT': tokens.Keyword,
379 'METHOD': tokens.Keyword,
380 'MINUTE': tokens.Keyword,
381 'MINUS': tokens.Keyword,
382 'MINVALUE': tokens.Keyword,
383 'MOD': tokens.Keyword,
384 'MODE': tokens.Keyword,
385 'MODIFIES': tokens.Keyword,
386 'MODIFY': tokens.Keyword,
387 'MONTH': tokens.Keyword,
388 'MORE': tokens.Keyword,
389 'MOVE': tokens.Keyword,
390 'MUMPS': tokens.Keyword,
392 'NAMES': tokens.Keyword,
393 'NATIONAL': tokens.Keyword,
394 'NATURAL': tokens.Keyword,
395 'NCHAR': tokens.Keyword,
396 'NCLOB': tokens.Keyword,
397 'NEW': tokens.Keyword,
398 'NEXT': tokens.Keyword,
399 'NO': tokens.Keyword,
400 'NOAUDIT': tokens.Keyword,
401 'NOCOMPRESS': tokens.Keyword,
402 'NOCREATEDB': tokens.Keyword,
403 'NOCREATEUSER': tokens.Keyword,
404 'NONE': tokens.Keyword,
405 'NOT': tokens.Keyword,
406 'NOTFOUND': tokens.Keyword,
407 'NOTHING': tokens.Keyword,
408 'NOTIFY': tokens.Keyword,
409 'NOTNULL': tokens.Keyword,
410 'NOWAIT': tokens.Keyword,
411 'NULL': tokens.Keyword,
412 'NULLABLE': tokens.Keyword,
413 'NULLIF': tokens.Keyword,
415 'OBJECT': tokens.Keyword,
416 'OCTET_LENGTH': tokens.Keyword,
417 'OF': tokens.Keyword,
418 'OFF': tokens.Keyword,
419 'OFFLINE': tokens.Keyword,
420 'OFFSET': tokens.Keyword,
421 'OIDS': tokens.Keyword,
422 'OLD': tokens.Keyword,
423 'ONLINE': tokens.Keyword,
424 'ONLY': tokens.Keyword,
425 'OPEN': tokens.Keyword,
426 'OPERATION': tokens.Keyword,
427 'OPERATOR': tokens.Keyword,
428 'OPTION': tokens.Keyword,
429 'OPTIONS': tokens.Keyword,
430 'ORDINALITY': tokens.Keyword,
431 'OUT': tokens.Keyword,
432 'OUTPUT': tokens.Keyword,
433 'OVERLAPS': tokens.Keyword,
434 'OVERLAY': tokens.Keyword,
435 'OVERRIDING': tokens.Keyword,
436 'OWNER': tokens.Keyword,
438 'QUARTER': tokens.Keyword,
440 'PAD': tokens.Keyword,
441 'PARAMETER': tokens.Keyword,
442 'PARAMETERS': tokens.Keyword,
443 'PARAMETER_MODE': tokens.Keyword,
444 'PARAMETER_NAME': tokens.Keyword,
445 'PARAMETER_ORDINAL_POSITION': tokens.Keyword,
446 'PARAMETER_SPECIFIC_CATALOG': tokens.Keyword,
447 'PARAMETER_SPECIFIC_NAME': tokens.Keyword,
448 'PARAMETER_SPECIFIC_SCHEMA': tokens.Keyword,
449 'PARTIAL': tokens.Keyword,
450 'PASCAL': tokens.Keyword,
451 'PCTFREE': tokens.Keyword,
452 'PENDANT': tokens.Keyword,
453 'PLACING': tokens.Keyword,
454 'PLI': tokens.Keyword,
455 'POSITION': tokens.Keyword,
456 'POSTFIX': tokens.Keyword,
457 'PRECISION': tokens.Keyword,
458 'PREFIX': tokens.Keyword,
459 'PREORDER': tokens.Keyword,
460 'PREPARE': tokens.Keyword,
461 'PRESERVE': tokens.Keyword,
462 'PRIMARY': tokens.Keyword,
463 'PRIOR': tokens.Keyword,
464 'PRIVILEGES': tokens.Keyword,
465 'PROCEDURAL': tokens.Keyword,
466 'PROCEDURE': tokens.Keyword,
467 'PUBLIC': tokens.Keyword,
469 'RAISE': tokens.Keyword,
470 'RAW': tokens.Keyword,
471 'READ': tokens.Keyword,
472 'READS': tokens.Keyword,
473 'RECHECK': tokens.Keyword,
474 'RECURSIVE': tokens.Keyword,
475 'REF': tokens.Keyword,
476 'REFERENCES': tokens.Keyword,
477 'REFERENCING': tokens.Keyword,
478 'REINDEX': tokens.Keyword,
479 'RELATIVE': tokens.Keyword,
480 'RENAME': tokens.Keyword,
481 'REPEATABLE': tokens.Keyword,
482 'RESET': tokens.Keyword,
483 'RESOURCE': tokens.Keyword,
484 'RESTART': tokens.Keyword,
485 'RESTRICT': tokens.Keyword,
486 'RESULT': tokens.Keyword,
487 'RETURN': tokens.Keyword,
488 'RETURNED_LENGTH': tokens.Keyword,
489 'RETURNED_OCTET_LENGTH': tokens.Keyword,
490 'RETURNED_SQLSTATE': tokens.Keyword,
491 'RETURNING': tokens.Keyword,
492 'RETURNS': tokens.Keyword,
493 'REVOKE': tokens.Keyword,
494 'RIGHT': tokens.Keyword,
495 'ROLE': tokens.Keyword,
496 'ROLLBACK': tokens.Keyword.DML,
497 'ROLLUP': tokens.Keyword,
498 'ROUTINE': tokens.Keyword,
499 'ROUTINE_CATALOG': tokens.Keyword,
500 'ROUTINE_NAME': tokens.Keyword,
501 'ROUTINE_SCHEMA': tokens.Keyword,
502 'ROW': tokens.Keyword,
503 'ROWS': tokens.Keyword,
504 'ROW_COUNT': tokens.Keyword,
505 'RULE': tokens.Keyword,
507 'SAVE_POINT': tokens.Keyword,
508 'SCALE': tokens.Keyword,
509 'SCHEMA': tokens.Keyword,
510 'SCHEMA_NAME': tokens.Keyword,
511 'SCOPE': tokens.Keyword,
512 'SCROLL': tokens.Keyword,
513 'SEARCH': tokens.Keyword,
514 'SECOND': tokens.Keyword,
515 'SECURITY': tokens.Keyword,
516 'SELF': tokens.Keyword,
517 'SENSITIVE': tokens.Keyword,
518 'SEQUENCE': tokens.Keyword,
519 'SERIALIZABLE': tokens.Keyword,
520 'SERVER_NAME': tokens.Keyword,
521 'SESSION': tokens.Keyword,
522 'SESSION_USER': tokens.Keyword,
523 'SETOF': tokens.Keyword,
524 'SETS': tokens.Keyword,
525 'SHARE': tokens.Keyword,
526 'SHOW': tokens.Keyword,
527 'SIMILAR': tokens.Keyword,
528 'SIMPLE': tokens.Keyword,
529 'SIZE': tokens.Keyword,
530 'SOME': tokens.Keyword,
531 'SOURCE': tokens.Keyword,
532 'SPACE': tokens.Keyword,
533 'SPECIFIC': tokens.Keyword,
534 'SPECIFICTYPE': tokens.Keyword,
535 'SPECIFIC_NAME': tokens.Keyword,
536 'SQL': tokens.Keyword,
537 'SQLBUF': tokens.Keyword,
538 'SQLCODE': tokens.Keyword,
539 'SQLERROR': tokens.Keyword,
540 'SQLEXCEPTION': tokens.Keyword,
541 'SQLSTATE': tokens.Keyword,
542 'SQLWARNING': tokens.Keyword,
543 'STABLE': tokens.Keyword,
544 'START': tokens.Keyword.DML,
545 # 'STATE': tokens.Keyword,
546 'STATEMENT': tokens.Keyword,
547 'STATIC': tokens.Keyword,
548 'STATISTICS': tokens.Keyword,
549 'STDIN': tokens.Keyword,
550 'STDOUT': tokens.Keyword,
551 'STORAGE': tokens.Keyword,
552 'STRICT': tokens.Keyword,
553 'STRUCTURE': tokens.Keyword,
554 'STYPE': tokens.Keyword,
555 'SUBCLASS_ORIGIN': tokens.Keyword,
556 'SUBLIST': tokens.Keyword,
557 'SUBSTRING': tokens.Keyword,
558 'SUCCESSFUL': tokens.Keyword,
559 'SUM': tokens.Keyword,
560 'SYMMETRIC': tokens.Keyword,
561 'SYNONYM': tokens.Keyword,
562 'SYSID': tokens.Keyword,
563 'SYSTEM': tokens.Keyword,
564 'SYSTEM_USER': tokens.Keyword,
566 'TABLE': tokens.Keyword,
567 'TABLE_NAME': tokens.Keyword,
568 'TEMP': tokens.Keyword,
569 'TEMPLATE': tokens.Keyword,
570 'TEMPORARY': tokens.Keyword,
571 'TERMINATE': tokens.Keyword,
572 'THAN': tokens.Keyword,
573 'TIMESTAMP': tokens.Keyword,
574 'TIMEZONE_HOUR': tokens.Keyword,
575 'TIMEZONE_MINUTE': tokens.Keyword,
576 'TO': tokens.Keyword,
577 'TOAST': tokens.Keyword,
578 'TRAILING': tokens.Keyword,
579 'TRANSATION': tokens.Keyword,
580 'TRANSACTIONS_COMMITTED': tokens.Keyword,
581 'TRANSACTIONS_ROLLED_BACK': tokens.Keyword,
582 'TRANSATION_ACTIVE': tokens.Keyword,
583 'TRANSFORM': tokens.Keyword,
584 'TRANSFORMS': tokens.Keyword,
585 'TRANSLATE': tokens.Keyword,
586 'TRANSLATION': tokens.Keyword,
587 'TREAT': tokens.Keyword,
588 'TRIGGER': tokens.Keyword,
589 'TRIGGER_CATALOG': tokens.Keyword,
590 'TRIGGER_NAME': tokens.Keyword,
591 'TRIGGER_SCHEMA': tokens.Keyword,
592 'TRIM': tokens.Keyword,
593 'TRUE': tokens.Keyword,
594 'TRUNCATE': tokens.Keyword,
595 'TRUSTED': tokens.Keyword,
596 'TYPE': tokens.Keyword,
598 'UID': tokens.Keyword,
599 'UNCOMMITTED': tokens.Keyword,
600 'UNDER': tokens.Keyword,
601 'UNENCRYPTED': tokens.Keyword,
602 'UNION': tokens.Keyword,
603 'UNIQUE': tokens.Keyword,
604 'UNKNOWN': tokens.Keyword,
605 'UNLISTEN': tokens.Keyword,
606 'UNNAMED': tokens.Keyword,
607 'UNNEST': tokens.Keyword,
608 'UNTIL': tokens.Keyword,
609 'UPPER': tokens.Keyword,
610 'USAGE': tokens.Keyword,
611 'USE': tokens.Keyword,
612 'USER': tokens.Keyword,
613 'USER_DEFINED_TYPE_CATALOG': tokens.Keyword,
614 'USER_DEFINED_TYPE_NAME': tokens.Keyword,
615 'USER_DEFINED_TYPE_SCHEMA': tokens.Keyword,
616 'USING': tokens.Keyword,
618 'VACUUM': tokens.Keyword,
619 'VALID': tokens.Keyword,
620 'VALIDATE': tokens.Keyword,
621 'VALIDATOR': tokens.Keyword,
622 'VALUES': tokens.Keyword,
623 'VARIABLE': tokens.Keyword,
624 'VERBOSE': tokens.Keyword,
625 'VERSION': tokens.Keyword,
626 'VIEW': tokens.Keyword,
627 'VOLATILE': tokens.Keyword,
629 'WEEK': tokens.Keyword,
630 'WHENEVER': tokens.Keyword,
631 'WITH': tokens.Keyword.CTE,
632 'WITHOUT': tokens.Keyword,
633 'WORK': tokens.Keyword,
634 'WRITE': tokens.Keyword,
636 'YEAR': tokens.Keyword,
638 'ZONE': tokens.Keyword,
640 # Name.Builtin
641 'ARRAY': tokens.Name.Builtin,
642 'BIGINT': tokens.Name.Builtin,
643 'BINARY': tokens.Name.Builtin,
644 'BIT': tokens.Name.Builtin,
645 'BLOB': tokens.Name.Builtin,
646 'BOOLEAN': tokens.Name.Builtin,
647 'CHAR': tokens.Name.Builtin,
648 'CHARACTER': tokens.Name.Builtin,
649 'DATE': tokens.Name.Builtin,
650 'DEC': tokens.Name.Builtin,
651 'DECIMAL': tokens.Name.Builtin,
652 'FILE_TYPE': tokens.Name.Builtin,
653 'FLOAT': tokens.Name.Builtin,
654 'INT': tokens.Name.Builtin,
655 'INT8': tokens.Name.Builtin,
656 'INTEGER': tokens.Name.Builtin,
657 'INTERVAL': tokens.Name.Builtin,
658 'LONG': tokens.Name.Builtin,
659 'NATURALN': tokens.Name.Builtin,
660 'NVARCHAR': tokens.Name.Builtin,
661 'NUMBER': tokens.Name.Builtin,
662 'NUMERIC': tokens.Name.Builtin,
663 'PLS_INTEGER': tokens.Name.Builtin,
664 'POSITIVE': tokens.Name.Builtin,
665 'POSITIVEN': tokens.Name.Builtin,
666 'REAL': tokens.Name.Builtin,
667 'ROWID': tokens.Name.Builtin,
668 'ROWLABEL': tokens.Name.Builtin,
669 'ROWNUM': tokens.Name.Builtin,
670 'SERIAL': tokens.Name.Builtin,
671 'SERIAL8': tokens.Name.Builtin,
672 'SIGNED': tokens.Name.Builtin,
673 'SIGNTYPE': tokens.Name.Builtin,
674 'SIMPLE_DOUBLE': tokens.Name.Builtin,
675 'SIMPLE_FLOAT': tokens.Name.Builtin,
676 'SIMPLE_INTEGER': tokens.Name.Builtin,
677 'SMALLINT': tokens.Name.Builtin,
678 'SYS_REFCURSOR': tokens.Name.Builtin,
679 'SYSDATE': tokens.Name,
680 'TEXT': tokens.Name.Builtin,
681 'TINYINT': tokens.Name.Builtin,
682 'UNSIGNED': tokens.Name.Builtin,
683 'UROWID': tokens.Name.Builtin,
684 'UTL_FILE': tokens.Name.Builtin,
685 'VARCHAR': tokens.Name.Builtin,
686 'VARCHAR2': tokens.Name.Builtin,
687 'VARYING': tokens.Name.Builtin,
688}
690KEYWORDS_COMMON = {
691 'SELECT': tokens.Keyword.DML,
692 'INSERT': tokens.Keyword.DML,
693 'DELETE': tokens.Keyword.DML,
694 'UPDATE': tokens.Keyword.DML,
695 'UPSERT': tokens.Keyword.DML,
696 'REPLACE': tokens.Keyword.DML,
697 'MERGE': tokens.Keyword.DML,
698 'DROP': tokens.Keyword.DDL,
699 'CREATE': tokens.Keyword.DDL,
700 'ALTER': tokens.Keyword.DDL,
702 'WHERE': tokens.Keyword,
703 'FROM': tokens.Keyword,
704 'INNER': tokens.Keyword,
705 'JOIN': tokens.Keyword,
706 'STRAIGHT_JOIN': tokens.Keyword,
707 'AND': tokens.Keyword,
708 'OR': tokens.Keyword,
709 'LIKE': tokens.Keyword,
710 'ON': tokens.Keyword,
711 'IN': tokens.Keyword,
712 'SET': tokens.Keyword,
714 'BY': tokens.Keyword,
715 'GROUP': tokens.Keyword,
716 'ORDER': tokens.Keyword,
717 'LEFT': tokens.Keyword,
718 'OUTER': tokens.Keyword,
719 'FULL': tokens.Keyword,
721 'IF': tokens.Keyword,
722 'END': tokens.Keyword,
723 'THEN': tokens.Keyword,
724 'LOOP': tokens.Keyword,
725 'AS': tokens.Keyword,
726 'ELSE': tokens.Keyword,
727 'FOR': tokens.Keyword,
728 'WHILE': tokens.Keyword,
730 'CASE': tokens.Keyword,
731 'WHEN': tokens.Keyword,
732 'MIN': tokens.Keyword,
733 'MAX': tokens.Keyword,
734 'DISTINCT': tokens.Keyword,
735}
737KEYWORDS_ORACLE = {
738 'ARCHIVE': tokens.Keyword,
739 'ARCHIVELOG': tokens.Keyword,
741 'BACKUP': tokens.Keyword,
742 'BECOME': tokens.Keyword,
743 'BLOCK': tokens.Keyword,
744 'BODY': tokens.Keyword,
746 'CANCEL': tokens.Keyword,
747 'CHANGE': tokens.Keyword,
748 'COMPILE': tokens.Keyword,
749 'CONTENTS': tokens.Keyword,
750 'CONTROLFILE': tokens.Keyword,
752 'DATAFILE': tokens.Keyword,
753 'DBA': tokens.Keyword,
754 'DISMOUNT': tokens.Keyword,
755 'DOUBLE': tokens.Keyword,
756 'DUMP': tokens.Keyword,
758 'ELSIF': tokens.Keyword,
759 'EVENTS': tokens.Keyword,
760 'EXCEPTIONS': tokens.Keyword,
761 'EXPLAIN': tokens.Keyword,
762 'EXTENT': tokens.Keyword,
763 'EXTERNALLY': tokens.Keyword,
765 'FLUSH': tokens.Keyword,
766 'FREELIST': tokens.Keyword,
767 'FREELISTS': tokens.Keyword,
769 # groups seems too common as table name
770 # 'GROUPS': tokens.Keyword,
772 'INDICATOR': tokens.Keyword,
773 'INITRANS': tokens.Keyword,
774 'INSTANCE': tokens.Keyword,
776 'LAYER': tokens.Keyword,
777 'LINK': tokens.Keyword,
778 'LISTS': tokens.Keyword,
779 'LOGFILE': tokens.Keyword,
781 'MANAGE': tokens.Keyword,
782 'MANUAL': tokens.Keyword,
783 'MAXDATAFILES': tokens.Keyword,
784 'MAXINSTANCES': tokens.Keyword,
785 'MAXLOGFILES': tokens.Keyword,
786 'MAXLOGHISTORY': tokens.Keyword,
787 'MAXLOGMEMBERS': tokens.Keyword,
788 'MAXTRANS': tokens.Keyword,
789 'MINEXTENTS': tokens.Keyword,
790 'MODULE': tokens.Keyword,
791 'MOUNT': tokens.Keyword,
793 'NOARCHIVELOG': tokens.Keyword,
794 'NOCACHE': tokens.Keyword,
795 'NOCYCLE': tokens.Keyword,
796 'NOMAXVALUE': tokens.Keyword,
797 'NOMINVALUE': tokens.Keyword,
798 'NOORDER': tokens.Keyword,
799 'NORESETLOGS': tokens.Keyword,
800 'NORMAL': tokens.Keyword,
801 'NOSORT': tokens.Keyword,
803 'OPTIMAL': tokens.Keyword,
804 'OWN': tokens.Keyword,
806 'PACKAGE': tokens.Keyword,
807 'PARALLEL': tokens.Keyword,
808 'PCTINCREASE': tokens.Keyword,
809 'PCTUSED': tokens.Keyword,
810 'PLAN': tokens.Keyword,
811 'PRIVATE': tokens.Keyword,
812 'PROFILE': tokens.Keyword,
814 'QUOTA': tokens.Keyword,
816 'RECOVER': tokens.Keyword,
817 'RESETLOGS': tokens.Keyword,
818 'RESTRICTED': tokens.Keyword,
819 'REUSE': tokens.Keyword,
820 'ROLES': tokens.Keyword,
822 'SAVEPOINT': tokens.Keyword,
823 'SCN': tokens.Keyword,
824 'SECTION': tokens.Keyword,
825 'SEGMENT': tokens.Keyword,
826 'SHARED': tokens.Keyword,
827 'SNAPSHOT': tokens.Keyword,
828 'SORT': tokens.Keyword,
829 'STATEMENT_ID': tokens.Keyword,
830 'STOP': tokens.Keyword,
831 'SWITCH': tokens.Keyword,
833 'TABLES': tokens.Keyword,
834 'TABLESPACE': tokens.Keyword,
835 'THREAD': tokens.Keyword,
836 'TIME': tokens.Keyword,
837 'TRACING': tokens.Keyword,
838 'TRANSACTION': tokens.Keyword,
839 'TRIGGERS': tokens.Keyword,
841 'UNLIMITED': tokens.Keyword,
842 'UNLOCK': tokens.Keyword,
843}
845# PostgreSQL Syntax
846KEYWORDS_PLPGSQL = {
847 'CONFLICT': tokens.Keyword,
848 'WINDOW': tokens.Keyword,
849 'PARTITION': tokens.Keyword,
850 'OVER': tokens.Keyword,
851 'PERFORM': tokens.Keyword,
852 'NOTICE': tokens.Keyword,
853 'PLPGSQL': tokens.Keyword,
854 'INHERIT': tokens.Keyword,
855 'INDEXES': tokens.Keyword,
856 'ON_ERROR_STOP': tokens.Keyword,
858 'BYTEA': tokens.Keyword,
859 'BIGSERIAL': tokens.Keyword,
860 'BIT VARYING': tokens.Keyword,
861 'BOX': tokens.Keyword,
862 'CHARACTER': tokens.Keyword,
863 'CHARACTER VARYING': tokens.Keyword,
864 'CIDR': tokens.Keyword,
865 'CIRCLE': tokens.Keyword,
866 'DOUBLE PRECISION': tokens.Keyword,
867 'INET': tokens.Keyword,
868 'JSON': tokens.Keyword,
869 'JSONB': tokens.Keyword,
870 'LINE': tokens.Keyword,
871 'LSEG': tokens.Keyword,
872 'MACADDR': tokens.Keyword,
873 'MONEY': tokens.Keyword,
874 'PATH': tokens.Keyword,
875 'PG_LSN': tokens.Keyword,
876 'POINT': tokens.Keyword,
877 'POLYGON': tokens.Keyword,
878 'SMALLSERIAL': tokens.Keyword,
879 'TSQUERY': tokens.Keyword,
880 'TSVECTOR': tokens.Keyword,
881 'TXID_SNAPSHOT': tokens.Keyword,
882 'UUID': tokens.Keyword,
883 'XML': tokens.Keyword,
885 'FOR': tokens.Keyword,
886 'IN': tokens.Keyword,
887 'LOOP': tokens.Keyword,
888}
890# Hive Syntax
891KEYWORDS_HQL = {
892 'EXPLODE': tokens.Keyword,
893 'DIRECTORY': tokens.Keyword,
894 'DISTRIBUTE': tokens.Keyword,
895 'INCLUDE': tokens.Keyword,
896 'LOCATE': tokens.Keyword,
897 'OVERWRITE': tokens.Keyword,
898 'POSEXPLODE': tokens.Keyword,
900 'ARRAY_CONTAINS': tokens.Keyword,
901 'CMP': tokens.Keyword,
902 'COLLECT_LIST': tokens.Keyword,
903 'CONCAT': tokens.Keyword,
904 'CONDITION': tokens.Keyword,
905 'DATE_ADD': tokens.Keyword,
906 'DATE_SUB': tokens.Keyword,
907 'DECODE': tokens.Keyword,
908 'DBMS_OUTPUT': tokens.Keyword,
909 'ELEMENTS': tokens.Keyword,
910 'EXCHANGE': tokens.Keyword,
911 'EXTENDED': tokens.Keyword,
912 'FLOOR': tokens.Keyword,
913 'FOLLOWING': tokens.Keyword,
914 'FROM_UNIXTIME': tokens.Keyword,
915 'FTP': tokens.Keyword,
916 'HOUR': tokens.Keyword,
917 'INLINE': tokens.Keyword,
918 'INSTR': tokens.Keyword,
919 'LEN': tokens.Keyword,
920 'MAP': tokens.Name.Builtin,
921 'MAXELEMENT': tokens.Keyword,
922 'MAXINDEX': tokens.Keyword,
923 'MAX_PART_DATE': tokens.Keyword,
924 'MAX_PART_INT': tokens.Keyword,
925 'MAX_PART_STRING': tokens.Keyword,
926 'MINELEMENT': tokens.Keyword,
927 'MININDEX': tokens.Keyword,
928 'MIN_PART_DATE': tokens.Keyword,
929 'MIN_PART_INT': tokens.Keyword,
930 'MIN_PART_STRING': tokens.Keyword,
931 'NOW': tokens.Keyword,
932 'NVL': tokens.Keyword,
933 'NVL2': tokens.Keyword,
934 'PARSE_URL_TUPLE': tokens.Keyword,
935 'PART_LOC': tokens.Keyword,
936 'PART_COUNT': tokens.Keyword,
937 'PART_COUNT_BY': tokens.Keyword,
938 'PRINT': tokens.Keyword,
939 'PUT_LINE': tokens.Keyword,
940 'RANGE': tokens.Keyword,
941 'REDUCE': tokens.Keyword,
942 'REGEXP_REPLACE': tokens.Keyword,
943 'RESIGNAL': tokens.Keyword,
944 'RTRIM': tokens.Keyword,
945 'SIGN': tokens.Keyword,
946 'SIGNAL': tokens.Keyword,
947 'SIN': tokens.Keyword,
948 'SPLIT': tokens.Keyword,
949 'SQRT': tokens.Keyword,
950 'STACK': tokens.Keyword,
951 'STR': tokens.Keyword,
952 'STRING': tokens.Name.Builtin,
953 'STRUCT': tokens.Name.Builtin,
954 'SUBSTR': tokens.Keyword,
955 'SUMMARY': tokens.Keyword,
956 'TBLPROPERTIES': tokens.Keyword,
957 'TIMESTAMP': tokens.Name.Builtin,
958 'TIMESTAMP_ISO': tokens.Keyword,
959 'TO_CHAR': tokens.Keyword,
960 'TO_DATE': tokens.Keyword,
961 'TO_TIMESTAMP': tokens.Keyword,
962 'TRUNC': tokens.Keyword,
963 'UNBOUNDED': tokens.Keyword,
964 'UNIQUEJOIN': tokens.Keyword,
965 'UNIX_TIMESTAMP': tokens.Keyword,
966 'UTC_TIMESTAMP': tokens.Keyword,
967 'VIEWS': tokens.Keyword,
969 'EXIT': tokens.Keyword,
970 'BREAK': tokens.Keyword,
971 'LEAVE': tokens.Keyword,
972}
975KEYWORDS_MSACCESS = {
976 'DISTINCTROW': tokens.Keyword,
977}