Archived
925 lines
29 KiB
Python
925 lines
29 KiB
Python
#
|
||
# Copyright (C) 2009-2020 the sqlparse authors and contributors
|
||
# <see AUTHORS file>
|
||
#
|
||
# This module is part of python-sqlparse and is released under
|
||
# the BSD License: https://opensource.org/licenses/BSD-3-Clause
|
||
|
||
import re
|
||
|
||
from sqlparse import tokens
|
||
|
||
|
||
def is_keyword(value):
|
||
"""Checks for a keyword.
|
||
|
||
If the given value is in one of the KEYWORDS_* dictionary
|
||
it's considered a keyword. Otherwise tokens.Name is returned.
|
||
"""
|
||
val = value.upper()
|
||
return (
|
||
KEYWORDS_COMMON.get(val)
|
||
or KEYWORDS_ORACLE.get(val)
|
||
or KEYWORDS_PLPGSQL.get(val)
|
||
or KEYWORDS_HQL.get(val)
|
||
or KEYWORDS_MSACCESS.get(val)
|
||
or KEYWORDS.get(val, tokens.Name)
|
||
), value
|
||
|
||
|
||
SQL_REGEX = {
|
||
"root": [
|
||
(r"(--|# )\+.*?(\r\n|\r|\n|$)", tokens.Comment.Single.Hint),
|
||
(r"/\*\+[\s\S]*?\*/", tokens.Comment.Multiline.Hint),
|
||
(r"(--|# ).*?(\r\n|\r|\n|$)", tokens.Comment.Single),
|
||
(r"/\*[\s\S]*?\*/", tokens.Comment.Multiline),
|
||
(r"(\r\n|\r|\n)", tokens.Newline),
|
||
(r"\s+?", tokens.Whitespace),
|
||
(r":=", tokens.Assignment),
|
||
(r"::", tokens.Punctuation),
|
||
(r"\*", tokens.Wildcard),
|
||
(r"`(``|[^`])*`", tokens.Name),
|
||
(r"´(´´|[^´])*´", tokens.Name),
|
||
(r"((?<!\S)\$(?:[_A-ZÀ-Ü]\w*)?\$)[\s\S]*?\1", tokens.Literal),
|
||
(r"\?", tokens.Name.Placeholder),
|
||
(r"%(\(\w+\))?s", tokens.Name.Placeholder),
|
||
(r"(?<!\w)[$:?]\w+", tokens.Name.Placeholder),
|
||
(r"\\\w+", tokens.Command),
|
||
(r"(NOT\s+)?(IN)\b", tokens.Operator.Comparison),
|
||
# FIXME(andi): VALUES shouldn't be listed here
|
||
# see https://github.com/andialbrecht/sqlparse/pull/64
|
||
# AS and IN are special, it may be followed by a parenthesis, but
|
||
# are never functions, see issue183 and issue507
|
||
(r"(CASE|IN|VALUES|USING|FROM|AS)\b", tokens.Keyword),
|
||
(r"(@|##|#)[A-ZÀ-Ü]\w+", tokens.Name),
|
||
# see issue #39
|
||
# Spaces around period `schema . name` are valid identifier
|
||
# TODO: Spaces before period not implemented
|
||
(r"[A-ZÀ-Ü]\w*(?=\s*\.)", tokens.Name), # 'Name'.
|
||
# FIXME(atronah): never match,
|
||
# because `re.match` doesn't work with look-behind regexp feature
|
||
(r"(?<=\.)[A-ZÀ-Ü]\w*", tokens.Name), # .'Name'
|
||
(r"[A-ZÀ-Ü]\w*(?=\()", tokens.Name), # side effect: change kw to func
|
||
(r"-?0x[\dA-F]+", tokens.Number.Hexadecimal),
|
||
(r"-?\d+(\.\d+)?E-?\d+", tokens.Number.Float),
|
||
(r"(?![_A-ZÀ-Ü])-?(\d+(\.\d*)|\.\d+)(?![_A-ZÀ-Ü])", tokens.Number.Float),
|
||
(r"(?![_A-ZÀ-Ü])-?\d+(?![_A-ZÀ-Ü])", tokens.Number.Integer),
|
||
(r"'(''|\\\\|\\'|[^'])*'", tokens.String.Single),
|
||
# not a real string literal in ANSI SQL:
|
||
(r'"(""|\\\\|\\"|[^"])*"', tokens.String.Symbol),
|
||
(r'(""|".*?[^\\]")', tokens.String.Symbol),
|
||
# sqlite names can be escaped with [square brackets]. left bracket
|
||
# cannot be preceded by word character or a right bracket --
|
||
# otherwise it's probably an array index
|
||
(r"(?<![\w\])])(\[[^\]\[]+\])", tokens.Name),
|
||
(
|
||
r"((LEFT\s+|RIGHT\s+|FULL\s+)?(INNER\s+|OUTER\s+|STRAIGHT\s+)?"
|
||
r"|(CROSS\s+|NATURAL\s+)?)?JOIN\b",
|
||
tokens.Keyword,
|
||
),
|
||
(r"END(\s+IF|\s+LOOP|\s+WHILE)?\b", tokens.Keyword),
|
||
(r"NOT\s+NULL\b", tokens.Keyword),
|
||
(r"NULLS\s+(FIRST|LAST)\b", tokens.Keyword),
|
||
(r"UNION\s+ALL\b", tokens.Keyword),
|
||
(r"CREATE(\s+OR\s+REPLACE)?\b", tokens.Keyword.DDL),
|
||
(r"DOUBLE\s+PRECISION\b", tokens.Name.Builtin),
|
||
(r"GROUP\s+BY\b", tokens.Keyword),
|
||
(r"ORDER\s+BY\b", tokens.Keyword),
|
||
(r"HANDLER\s+FOR\b", tokens.Keyword),
|
||
(
|
||
r"(LATERAL\s+VIEW\s+)"
|
||
r"(EXPLODE|INLINE|PARSE_URL_TUPLE|POSEXPLODE|STACK)\b",
|
||
tokens.Keyword,
|
||
),
|
||
(r"(AT|WITH')\s+TIME\s+ZONE\s+'[^']+'", tokens.Keyword.TZCast),
|
||
(r"(NOT\s+)?(LIKE|ILIKE|RLIKE)\b", tokens.Operator.Comparison),
|
||
(r"(NOT\s+)?(REGEXP)\b", tokens.Operator.Comparison),
|
||
# Check for keywords, also returns tokens.Name if regex matches
|
||
# but the match isn't a keyword.
|
||
(r"[0-9_\w][_$#\w]*", is_keyword),
|
||
(r"[;:()\[\],\.]", tokens.Punctuation),
|
||
(r"[<>=~!]+", tokens.Operator.Comparison),
|
||
(r"[+/@#%^&|^-]+", tokens.Operator),
|
||
]
|
||
}
|
||
|
||
FLAGS = re.IGNORECASE | re.UNICODE
|
||
SQL_REGEX = [(re.compile(rx, FLAGS).match, tt) for rx, tt in SQL_REGEX["root"]]
|
||
|
||
KEYWORDS = {
|
||
"ABORT": tokens.Keyword,
|
||
"ABS": tokens.Keyword,
|
||
"ABSOLUTE": tokens.Keyword,
|
||
"ACCESS": tokens.Keyword,
|
||
"ADA": tokens.Keyword,
|
||
"ADD": tokens.Keyword,
|
||
"ADMIN": tokens.Keyword,
|
||
"AFTER": tokens.Keyword,
|
||
"AGGREGATE": tokens.Keyword,
|
||
"ALIAS": tokens.Keyword,
|
||
"ALL": tokens.Keyword,
|
||
"ALLOCATE": tokens.Keyword,
|
||
"ANALYSE": tokens.Keyword,
|
||
"ANALYZE": tokens.Keyword,
|
||
"ANY": tokens.Keyword,
|
||
"ARRAYLEN": tokens.Keyword,
|
||
"ARE": tokens.Keyword,
|
||
"ASC": tokens.Keyword.Order,
|
||
"ASENSITIVE": tokens.Keyword,
|
||
"ASSERTION": tokens.Keyword,
|
||
"ASSIGNMENT": tokens.Keyword,
|
||
"ASYMMETRIC": tokens.Keyword,
|
||
"AT": tokens.Keyword,
|
||
"ATOMIC": tokens.Keyword,
|
||
"AUDIT": tokens.Keyword,
|
||
"AUTHORIZATION": tokens.Keyword,
|
||
"AUTO_INCREMENT": tokens.Keyword,
|
||
"AVG": tokens.Keyword,
|
||
"BACKWARD": tokens.Keyword,
|
||
"BEFORE": tokens.Keyword,
|
||
"BEGIN": tokens.Keyword,
|
||
"BETWEEN": tokens.Keyword,
|
||
"BITVAR": tokens.Keyword,
|
||
"BIT_LENGTH": tokens.Keyword,
|
||
"BOTH": tokens.Keyword,
|
||
"BREADTH": tokens.Keyword,
|
||
# 'C': tokens.Keyword, # most likely this is an alias
|
||
"CACHE": tokens.Keyword,
|
||
"CALL": tokens.Keyword,
|
||
"CALLED": tokens.Keyword,
|
||
"CARDINALITY": tokens.Keyword,
|
||
"CASCADE": tokens.Keyword,
|
||
"CASCADED": tokens.Keyword,
|
||
"CAST": tokens.Keyword,
|
||
"CATALOG": tokens.Keyword,
|
||
"CATALOG_NAME": tokens.Keyword,
|
||
"CHAIN": tokens.Keyword,
|
||
"CHARACTERISTICS": tokens.Keyword,
|
||
"CHARACTER_LENGTH": tokens.Keyword,
|
||
"CHARACTER_SET_CATALOG": tokens.Keyword,
|
||
"CHARACTER_SET_NAME": tokens.Keyword,
|
||
"CHARACTER_SET_SCHEMA": tokens.Keyword,
|
||
"CHAR_LENGTH": tokens.Keyword,
|
||
"CHARSET": tokens.Keyword,
|
||
"CHECK": tokens.Keyword,
|
||
"CHECKED": tokens.Keyword,
|
||
"CHECKPOINT": tokens.Keyword,
|
||
"CLASS": tokens.Keyword,
|
||
"CLASS_ORIGIN": tokens.Keyword,
|
||
"CLOB": tokens.Keyword,
|
||
"CLOSE": tokens.Keyword,
|
||
"CLUSTER": tokens.Keyword,
|
||
"COALESCE": tokens.Keyword,
|
||
"COBOL": tokens.Keyword,
|
||
"COLLATE": tokens.Keyword,
|
||
"COLLATION": tokens.Keyword,
|
||
"COLLATION_CATALOG": tokens.Keyword,
|
||
"COLLATION_NAME": tokens.Keyword,
|
||
"COLLATION_SCHEMA": tokens.Keyword,
|
||
"COLLECT": tokens.Keyword,
|
||
"COLUMN": tokens.Keyword,
|
||
"COLUMN_NAME": tokens.Keyword,
|
||
"COMPRESS": tokens.Keyword,
|
||
"COMMAND_FUNCTION": tokens.Keyword,
|
||
"COMMAND_FUNCTION_CODE": tokens.Keyword,
|
||
"COMMENT": tokens.Keyword,
|
||
"COMMIT": tokens.Keyword.DML,
|
||
"COMMITTED": tokens.Keyword,
|
||
"COMPLETION": tokens.Keyword,
|
||
"CONCURRENTLY": tokens.Keyword,
|
||
"CONDITION_NUMBER": tokens.Keyword,
|
||
"CONNECT": tokens.Keyword,
|
||
"CONNECTION": tokens.Keyword,
|
||
"CONNECTION_NAME": tokens.Keyword,
|
||
"CONSTRAINT": tokens.Keyword,
|
||
"CONSTRAINTS": tokens.Keyword,
|
||
"CONSTRAINT_CATALOG": tokens.Keyword,
|
||
"CONSTRAINT_NAME": tokens.Keyword,
|
||
"CONSTRAINT_SCHEMA": tokens.Keyword,
|
||
"CONSTRUCTOR": tokens.Keyword,
|
||
"CONTAINS": tokens.Keyword,
|
||
"CONTINUE": tokens.Keyword,
|
||
"CONVERSION": tokens.Keyword,
|
||
"CONVERT": tokens.Keyword,
|
||
"COPY": tokens.Keyword,
|
||
"CORRESPONDING": tokens.Keyword,
|
||
"COUNT": tokens.Keyword,
|
||
"CREATEDB": tokens.Keyword,
|
||
"CREATEUSER": tokens.Keyword,
|
||
"CROSS": tokens.Keyword,
|
||
"CUBE": tokens.Keyword,
|
||
"CURRENT": tokens.Keyword,
|
||
"CURRENT_DATE": tokens.Keyword,
|
||
"CURRENT_PATH": tokens.Keyword,
|
||
"CURRENT_ROLE": tokens.Keyword,
|
||
"CURRENT_TIME": tokens.Keyword,
|
||
"CURRENT_TIMESTAMP": tokens.Keyword,
|
||
"CURRENT_USER": tokens.Keyword,
|
||
"CURSOR": tokens.Keyword,
|
||
"CURSOR_NAME": tokens.Keyword,
|
||
"CYCLE": tokens.Keyword,
|
||
"DATA": tokens.Keyword,
|
||
"DATABASE": tokens.Keyword,
|
||
"DATETIME_INTERVAL_CODE": tokens.Keyword,
|
||
"DATETIME_INTERVAL_PRECISION": tokens.Keyword,
|
||
"DAY": tokens.Keyword,
|
||
"DEALLOCATE": tokens.Keyword,
|
||
"DECLARE": tokens.Keyword,
|
||
"DEFAULT": tokens.Keyword,
|
||
"DEFAULTS": tokens.Keyword,
|
||
"DEFERRABLE": tokens.Keyword,
|
||
"DEFERRED": tokens.Keyword,
|
||
"DEFINED": tokens.Keyword,
|
||
"DEFINER": tokens.Keyword,
|
||
"DELIMITER": tokens.Keyword,
|
||
"DELIMITERS": tokens.Keyword,
|
||
"DEREF": tokens.Keyword,
|
||
"DESC": tokens.Keyword.Order,
|
||
"DESCRIBE": tokens.Keyword,
|
||
"DESCRIPTOR": tokens.Keyword,
|
||
"DESTROY": tokens.Keyword,
|
||
"DESTRUCTOR": tokens.Keyword,
|
||
"DETERMINISTIC": tokens.Keyword,
|
||
"DIAGNOSTICS": tokens.Keyword,
|
||
"DICTIONARY": tokens.Keyword,
|
||
"DISABLE": tokens.Keyword,
|
||
"DISCONNECT": tokens.Keyword,
|
||
"DISPATCH": tokens.Keyword,
|
||
"DIV": tokens.Operator,
|
||
"DO": tokens.Keyword,
|
||
"DOMAIN": tokens.Keyword,
|
||
"DYNAMIC": tokens.Keyword,
|
||
"DYNAMIC_FUNCTION": tokens.Keyword,
|
||
"DYNAMIC_FUNCTION_CODE": tokens.Keyword,
|
||
"EACH": tokens.Keyword,
|
||
"ENABLE": tokens.Keyword,
|
||
"ENCODING": tokens.Keyword,
|
||
"ENCRYPTED": tokens.Keyword,
|
||
"END-EXEC": tokens.Keyword,
|
||
"ENGINE": tokens.Keyword,
|
||
"EQUALS": tokens.Keyword,
|
||
"ESCAPE": tokens.Keyword,
|
||
"EVERY": tokens.Keyword,
|
||
"EXCEPT": tokens.Keyword,
|
||
"EXCEPTION": tokens.Keyword,
|
||
"EXCLUDING": tokens.Keyword,
|
||
"EXCLUSIVE": tokens.Keyword,
|
||
"EXEC": tokens.Keyword,
|
||
"EXECUTE": tokens.Keyword,
|
||
"EXISTING": tokens.Keyword,
|
||
"EXISTS": tokens.Keyword,
|
||
"EXPLAIN": tokens.Keyword,
|
||
"EXTERNAL": tokens.Keyword,
|
||
"EXTRACT": tokens.Keyword,
|
||
"FALSE": tokens.Keyword,
|
||
"FETCH": tokens.Keyword,
|
||
"FILE": tokens.Keyword,
|
||
"FINAL": tokens.Keyword,
|
||
"FIRST": tokens.Keyword,
|
||
"FORCE": tokens.Keyword,
|
||
"FOREACH": tokens.Keyword,
|
||
"FOREIGN": tokens.Keyword,
|
||
"FORTRAN": tokens.Keyword,
|
||
"FORWARD": tokens.Keyword,
|
||
"FOUND": tokens.Keyword,
|
||
"FREE": tokens.Keyword,
|
||
"FREEZE": tokens.Keyword,
|
||
"FULL": tokens.Keyword,
|
||
"FUNCTION": tokens.Keyword,
|
||
# 'G': tokens.Keyword,
|
||
"GENERAL": tokens.Keyword,
|
||
"GENERATED": tokens.Keyword,
|
||
"GET": tokens.Keyword,
|
||
"GLOBAL": tokens.Keyword,
|
||
"GO": tokens.Keyword,
|
||
"GOTO": tokens.Keyword,
|
||
"GRANT": tokens.Keyword,
|
||
"GRANTED": tokens.Keyword,
|
||
"GROUPING": tokens.Keyword,
|
||
"HAVING": tokens.Keyword,
|
||
"HIERARCHY": tokens.Keyword,
|
||
"HOLD": tokens.Keyword,
|
||
"HOUR": tokens.Keyword,
|
||
"HOST": tokens.Keyword,
|
||
"IDENTIFIED": tokens.Keyword,
|
||
"IDENTITY": tokens.Keyword,
|
||
"IGNORE": tokens.Keyword,
|
||
"ILIKE": tokens.Keyword,
|
||
"IMMEDIATE": tokens.Keyword,
|
||
"IMMUTABLE": tokens.Keyword,
|
||
"IMPLEMENTATION": tokens.Keyword,
|
||
"IMPLICIT": tokens.Keyword,
|
||
"INCLUDING": tokens.Keyword,
|
||
"INCREMENT": tokens.Keyword,
|
||
"INDEX": tokens.Keyword,
|
||
"INDICATOR": tokens.Keyword,
|
||
"INFIX": tokens.Keyword,
|
||
"INHERITS": tokens.Keyword,
|
||
"INITIAL": tokens.Keyword,
|
||
"INITIALIZE": tokens.Keyword,
|
||
"INITIALLY": tokens.Keyword,
|
||
"INOUT": tokens.Keyword,
|
||
"INPUT": tokens.Keyword,
|
||
"INSENSITIVE": tokens.Keyword,
|
||
"INSTANTIABLE": tokens.Keyword,
|
||
"INSTEAD": tokens.Keyword,
|
||
"INTERSECT": tokens.Keyword,
|
||
"INTO": tokens.Keyword,
|
||
"INVOKER": tokens.Keyword,
|
||
"IS": tokens.Keyword,
|
||
"ISNULL": tokens.Keyword,
|
||
"ISOLATION": tokens.Keyword,
|
||
"ITERATE": tokens.Keyword,
|
||
# 'K': tokens.Keyword,
|
||
"KEY": tokens.Keyword,
|
||
"KEY_MEMBER": tokens.Keyword,
|
||
"KEY_TYPE": tokens.Keyword,
|
||
"LANCOMPILER": tokens.Keyword,
|
||
"LANGUAGE": tokens.Keyword,
|
||
"LARGE": tokens.Keyword,
|
||
"LAST": tokens.Keyword,
|
||
"LATERAL": tokens.Keyword,
|
||
"LEADING": tokens.Keyword,
|
||
"LENGTH": tokens.Keyword,
|
||
"LESS": tokens.Keyword,
|
||
"LEVEL": tokens.Keyword,
|
||
"LIMIT": tokens.Keyword,
|
||
"LISTEN": tokens.Keyword,
|
||
"LOAD": tokens.Keyword,
|
||
"LOCAL": tokens.Keyword,
|
||
"LOCALTIME": tokens.Keyword,
|
||
"LOCALTIMESTAMP": tokens.Keyword,
|
||
"LOCATION": tokens.Keyword,
|
||
"LOCATOR": tokens.Keyword,
|
||
"LOCK": tokens.Keyword,
|
||
"LOWER": tokens.Keyword,
|
||
# 'M': tokens.Keyword,
|
||
"MAP": tokens.Keyword,
|
||
"MATCH": tokens.Keyword,
|
||
"MAXEXTENTS": tokens.Keyword,
|
||
"MAXVALUE": tokens.Keyword,
|
||
"MESSAGE_LENGTH": tokens.Keyword,
|
||
"MESSAGE_OCTET_LENGTH": tokens.Keyword,
|
||
"MESSAGE_TEXT": tokens.Keyword,
|
||
"METHOD": tokens.Keyword,
|
||
"MINUTE": tokens.Keyword,
|
||
"MINUS": tokens.Keyword,
|
||
"MINVALUE": tokens.Keyword,
|
||
"MOD": tokens.Keyword,
|
||
"MODE": tokens.Keyword,
|
||
"MODIFIES": tokens.Keyword,
|
||
"MODIFY": tokens.Keyword,
|
||
"MONTH": tokens.Keyword,
|
||
"MORE": tokens.Keyword,
|
||
"MOVE": tokens.Keyword,
|
||
"MUMPS": tokens.Keyword,
|
||
"NAMES": tokens.Keyword,
|
||
"NATIONAL": tokens.Keyword,
|
||
"NATURAL": tokens.Keyword,
|
||
"NCHAR": tokens.Keyword,
|
||
"NCLOB": tokens.Keyword,
|
||
"NEW": tokens.Keyword,
|
||
"NEXT": tokens.Keyword,
|
||
"NO": tokens.Keyword,
|
||
"NOAUDIT": tokens.Keyword,
|
||
"NOCOMPRESS": tokens.Keyword,
|
||
"NOCREATEDB": tokens.Keyword,
|
||
"NOCREATEUSER": tokens.Keyword,
|
||
"NONE": tokens.Keyword,
|
||
"NOT": tokens.Keyword,
|
||
"NOTFOUND": tokens.Keyword,
|
||
"NOTHING": tokens.Keyword,
|
||
"NOTIFY": tokens.Keyword,
|
||
"NOTNULL": tokens.Keyword,
|
||
"NOWAIT": tokens.Keyword,
|
||
"NULL": tokens.Keyword,
|
||
"NULLABLE": tokens.Keyword,
|
||
"NULLIF": tokens.Keyword,
|
||
"OBJECT": tokens.Keyword,
|
||
"OCTET_LENGTH": tokens.Keyword,
|
||
"OF": tokens.Keyword,
|
||
"OFF": tokens.Keyword,
|
||
"OFFLINE": tokens.Keyword,
|
||
"OFFSET": tokens.Keyword,
|
||
"OIDS": tokens.Keyword,
|
||
"OLD": tokens.Keyword,
|
||
"ONLINE": tokens.Keyword,
|
||
"ONLY": tokens.Keyword,
|
||
"OPEN": tokens.Keyword,
|
||
"OPERATION": tokens.Keyword,
|
||
"OPERATOR": tokens.Keyword,
|
||
"OPTION": tokens.Keyword,
|
||
"OPTIONS": tokens.Keyword,
|
||
"ORDINALITY": tokens.Keyword,
|
||
"OUT": tokens.Keyword,
|
||
"OUTPUT": tokens.Keyword,
|
||
"OVERLAPS": tokens.Keyword,
|
||
"OVERLAY": tokens.Keyword,
|
||
"OVERRIDING": tokens.Keyword,
|
||
"OWNER": tokens.Keyword,
|
||
"QUARTER": tokens.Keyword,
|
||
"PAD": tokens.Keyword,
|
||
"PARAMETER": tokens.Keyword,
|
||
"PARAMETERS": tokens.Keyword,
|
||
"PARAMETER_MODE": tokens.Keyword,
|
||
"PARAMETER_NAME": tokens.Keyword,
|
||
"PARAMETER_ORDINAL_POSITION": tokens.Keyword,
|
||
"PARAMETER_SPECIFIC_CATALOG": tokens.Keyword,
|
||
"PARAMETER_SPECIFIC_NAME": tokens.Keyword,
|
||
"PARAMETER_SPECIFIC_SCHEMA": tokens.Keyword,
|
||
"PARTIAL": tokens.Keyword,
|
||
"PASCAL": tokens.Keyword,
|
||
"PCTFREE": tokens.Keyword,
|
||
"PENDANT": tokens.Keyword,
|
||
"PLACING": tokens.Keyword,
|
||
"PLI": tokens.Keyword,
|
||
"POSITION": tokens.Keyword,
|
||
"POSTFIX": tokens.Keyword,
|
||
"PRECISION": tokens.Keyword,
|
||
"PREFIX": tokens.Keyword,
|
||
"PREORDER": tokens.Keyword,
|
||
"PREPARE": tokens.Keyword,
|
||
"PRESERVE": tokens.Keyword,
|
||
"PRIMARY": tokens.Keyword,
|
||
"PRIOR": tokens.Keyword,
|
||
"PRIVILEGES": tokens.Keyword,
|
||
"PROCEDURAL": tokens.Keyword,
|
||
"PROCEDURE": tokens.Keyword,
|
||
"PUBLIC": tokens.Keyword,
|
||
"RAISE": tokens.Keyword,
|
||
"RAW": tokens.Keyword,
|
||
"READ": tokens.Keyword,
|
||
"READS": tokens.Keyword,
|
||
"RECHECK": tokens.Keyword,
|
||
"RECURSIVE": tokens.Keyword,
|
||
"REF": tokens.Keyword,
|
||
"REFERENCES": tokens.Keyword,
|
||
"REFERENCING": tokens.Keyword,
|
||
"REINDEX": tokens.Keyword,
|
||
"RELATIVE": tokens.Keyword,
|
||
"RENAME": tokens.Keyword,
|
||
"REPEATABLE": tokens.Keyword,
|
||
"RESET": tokens.Keyword,
|
||
"RESOURCE": tokens.Keyword,
|
||
"RESTART": tokens.Keyword,
|
||
"RESTRICT": tokens.Keyword,
|
||
"RESULT": tokens.Keyword,
|
||
"RETURN": tokens.Keyword,
|
||
"RETURNED_LENGTH": tokens.Keyword,
|
||
"RETURNED_OCTET_LENGTH": tokens.Keyword,
|
||
"RETURNED_SQLSTATE": tokens.Keyword,
|
||
"RETURNING": tokens.Keyword,
|
||
"RETURNS": tokens.Keyword,
|
||
"REVOKE": tokens.Keyword,
|
||
"RIGHT": tokens.Keyword,
|
||
"ROLE": tokens.Keyword,
|
||
"ROLLBACK": tokens.Keyword.DML,
|
||
"ROLLUP": tokens.Keyword,
|
||
"ROUTINE": tokens.Keyword,
|
||
"ROUTINE_CATALOG": tokens.Keyword,
|
||
"ROUTINE_NAME": tokens.Keyword,
|
||
"ROUTINE_SCHEMA": tokens.Keyword,
|
||
"ROW": tokens.Keyword,
|
||
"ROWS": tokens.Keyword,
|
||
"ROW_COUNT": tokens.Keyword,
|
||
"RULE": tokens.Keyword,
|
||
"SAVE_POINT": tokens.Keyword,
|
||
"SCALE": tokens.Keyword,
|
||
"SCHEMA": tokens.Keyword,
|
||
"SCHEMA_NAME": tokens.Keyword,
|
||
"SCOPE": tokens.Keyword,
|
||
"SCROLL": tokens.Keyword,
|
||
"SEARCH": tokens.Keyword,
|
||
"SECOND": tokens.Keyword,
|
||
"SECURITY": tokens.Keyword,
|
||
"SELF": tokens.Keyword,
|
||
"SENSITIVE": tokens.Keyword,
|
||
"SEQUENCE": tokens.Keyword,
|
||
"SERIALIZABLE": tokens.Keyword,
|
||
"SERVER_NAME": tokens.Keyword,
|
||
"SESSION": tokens.Keyword,
|
||
"SESSION_USER": tokens.Keyword,
|
||
"SETOF": tokens.Keyword,
|
||
"SETS": tokens.Keyword,
|
||
"SHARE": tokens.Keyword,
|
||
"SHOW": tokens.Keyword,
|
||
"SIMILAR": tokens.Keyword,
|
||
"SIMPLE": tokens.Keyword,
|
||
"SIZE": tokens.Keyword,
|
||
"SOME": tokens.Keyword,
|
||
"SOURCE": tokens.Keyword,
|
||
"SPACE": tokens.Keyword,
|
||
"SPECIFIC": tokens.Keyword,
|
||
"SPECIFICTYPE": tokens.Keyword,
|
||
"SPECIFIC_NAME": tokens.Keyword,
|
||
"SQL": tokens.Keyword,
|
||
"SQLBUF": tokens.Keyword,
|
||
"SQLCODE": tokens.Keyword,
|
||
"SQLERROR": tokens.Keyword,
|
||
"SQLEXCEPTION": tokens.Keyword,
|
||
"SQLSTATE": tokens.Keyword,
|
||
"SQLWARNING": tokens.Keyword,
|
||
"STABLE": tokens.Keyword,
|
||
"START": tokens.Keyword.DML,
|
||
# 'STATE': tokens.Keyword,
|
||
"STATEMENT": tokens.Keyword,
|
||
"STATIC": tokens.Keyword,
|
||
"STATISTICS": tokens.Keyword,
|
||
"STDIN": tokens.Keyword,
|
||
"STDOUT": tokens.Keyword,
|
||
"STORAGE": tokens.Keyword,
|
||
"STRICT": tokens.Keyword,
|
||
"STRUCTURE": tokens.Keyword,
|
||
"STYPE": tokens.Keyword,
|
||
"SUBCLASS_ORIGIN": tokens.Keyword,
|
||
"SUBLIST": tokens.Keyword,
|
||
"SUBSTRING": tokens.Keyword,
|
||
"SUCCESSFUL": tokens.Keyword,
|
||
"SUM": tokens.Keyword,
|
||
"SYMMETRIC": tokens.Keyword,
|
||
"SYNONYM": tokens.Keyword,
|
||
"SYSID": tokens.Keyword,
|
||
"SYSTEM": tokens.Keyword,
|
||
"SYSTEM_USER": tokens.Keyword,
|
||
"TABLE": tokens.Keyword,
|
||
"TABLE_NAME": tokens.Keyword,
|
||
"TEMP": tokens.Keyword,
|
||
"TEMPLATE": tokens.Keyword,
|
||
"TEMPORARY": tokens.Keyword,
|
||
"TERMINATE": tokens.Keyword,
|
||
"THAN": tokens.Keyword,
|
||
"TIMESTAMP": tokens.Keyword,
|
||
"TIMEZONE_HOUR": tokens.Keyword,
|
||
"TIMEZONE_MINUTE": tokens.Keyword,
|
||
"TO": tokens.Keyword,
|
||
"TOAST": tokens.Keyword,
|
||
"TRAILING": tokens.Keyword,
|
||
"TRANSATION": tokens.Keyword,
|
||
"TRANSACTIONS_COMMITTED": tokens.Keyword,
|
||
"TRANSACTIONS_ROLLED_BACK": tokens.Keyword,
|
||
"TRANSATION_ACTIVE": tokens.Keyword,
|
||
"TRANSFORM": tokens.Keyword,
|
||
"TRANSFORMS": tokens.Keyword,
|
||
"TRANSLATE": tokens.Keyword,
|
||
"TRANSLATION": tokens.Keyword,
|
||
"TREAT": tokens.Keyword,
|
||
"TRIGGER": tokens.Keyword,
|
||
"TRIGGER_CATALOG": tokens.Keyword,
|
||
"TRIGGER_NAME": tokens.Keyword,
|
||
"TRIGGER_SCHEMA": tokens.Keyword,
|
||
"TRIM": tokens.Keyword,
|
||
"TRUE": tokens.Keyword,
|
||
"TRUNCATE": tokens.Keyword,
|
||
"TRUSTED": tokens.Keyword,
|
||
"TYPE": tokens.Keyword,
|
||
"UID": tokens.Keyword,
|
||
"UNCOMMITTED": tokens.Keyword,
|
||
"UNDER": tokens.Keyword,
|
||
"UNENCRYPTED": tokens.Keyword,
|
||
"UNION": tokens.Keyword,
|
||
"UNIQUE": tokens.Keyword,
|
||
"UNKNOWN": tokens.Keyword,
|
||
"UNLISTEN": tokens.Keyword,
|
||
"UNNAMED": tokens.Keyword,
|
||
"UNNEST": tokens.Keyword,
|
||
"UNTIL": tokens.Keyword,
|
||
"UPPER": tokens.Keyword,
|
||
"USAGE": tokens.Keyword,
|
||
"USE": tokens.Keyword,
|
||
"USER": tokens.Keyword,
|
||
"USER_DEFINED_TYPE_CATALOG": tokens.Keyword,
|
||
"USER_DEFINED_TYPE_NAME": tokens.Keyword,
|
||
"USER_DEFINED_TYPE_SCHEMA": tokens.Keyword,
|
||
"USING": tokens.Keyword,
|
||
"VACUUM": tokens.Keyword,
|
||
"VALID": tokens.Keyword,
|
||
"VALIDATE": tokens.Keyword,
|
||
"VALIDATOR": tokens.Keyword,
|
||
"VALUES": tokens.Keyword,
|
||
"VARIABLE": tokens.Keyword,
|
||
"VERBOSE": tokens.Keyword,
|
||
"VERSION": tokens.Keyword,
|
||
"VIEW": tokens.Keyword,
|
||
"VOLATILE": tokens.Keyword,
|
||
"WEEK": tokens.Keyword,
|
||
"WHENEVER": tokens.Keyword,
|
||
"WITH": tokens.Keyword.CTE,
|
||
"WITHOUT": tokens.Keyword,
|
||
"WORK": tokens.Keyword,
|
||
"WRITE": tokens.Keyword,
|
||
"YEAR": tokens.Keyword,
|
||
"ZONE": tokens.Keyword,
|
||
# Name.Builtin
|
||
"ARRAY": tokens.Name.Builtin,
|
||
"BIGINT": tokens.Name.Builtin,
|
||
"BINARY": tokens.Name.Builtin,
|
||
"BIT": tokens.Name.Builtin,
|
||
"BLOB": tokens.Name.Builtin,
|
||
"BOOLEAN": tokens.Name.Builtin,
|
||
"CHAR": tokens.Name.Builtin,
|
||
"CHARACTER": tokens.Name.Builtin,
|
||
"DATE": tokens.Name.Builtin,
|
||
"DEC": tokens.Name.Builtin,
|
||
"DECIMAL": tokens.Name.Builtin,
|
||
"FILE_TYPE": tokens.Name.Builtin,
|
||
"FLOAT": tokens.Name.Builtin,
|
||
"INT": tokens.Name.Builtin,
|
||
"INT8": tokens.Name.Builtin,
|
||
"INTEGER": tokens.Name.Builtin,
|
||
"INTERVAL": tokens.Name.Builtin,
|
||
"LONG": tokens.Name.Builtin,
|
||
"NATURALN": tokens.Name.Builtin,
|
||
"NVARCHAR": tokens.Name.Builtin,
|
||
"NUMBER": tokens.Name.Builtin,
|
||
"NUMERIC": tokens.Name.Builtin,
|
||
"PLS_INTEGER": tokens.Name.Builtin,
|
||
"POSITIVE": tokens.Name.Builtin,
|
||
"POSITIVEN": tokens.Name.Builtin,
|
||
"REAL": tokens.Name.Builtin,
|
||
"ROWID": tokens.Name.Builtin,
|
||
"ROWLABEL": tokens.Name.Builtin,
|
||
"ROWNUM": tokens.Name.Builtin,
|
||
"SERIAL": tokens.Name.Builtin,
|
||
"SERIAL8": tokens.Name.Builtin,
|
||
"SIGNED": tokens.Name.Builtin,
|
||
"SIGNTYPE": tokens.Name.Builtin,
|
||
"SIMPLE_DOUBLE": tokens.Name.Builtin,
|
||
"SIMPLE_FLOAT": tokens.Name.Builtin,
|
||
"SIMPLE_INTEGER": tokens.Name.Builtin,
|
||
"SMALLINT": tokens.Name.Builtin,
|
||
"SYS_REFCURSOR": tokens.Name.Builtin,
|
||
"SYSDATE": tokens.Name,
|
||
"TEXT": tokens.Name.Builtin,
|
||
"TINYINT": tokens.Name.Builtin,
|
||
"UNSIGNED": tokens.Name.Builtin,
|
||
"UROWID": tokens.Name.Builtin,
|
||
"UTL_FILE": tokens.Name.Builtin,
|
||
"VARCHAR": tokens.Name.Builtin,
|
||
"VARCHAR2": tokens.Name.Builtin,
|
||
"VARYING": tokens.Name.Builtin,
|
||
}
|
||
|
||
KEYWORDS_COMMON = {
|
||
"SELECT": tokens.Keyword.DML,
|
||
"INSERT": tokens.Keyword.DML,
|
||
"DELETE": tokens.Keyword.DML,
|
||
"UPDATE": tokens.Keyword.DML,
|
||
"UPSERT": tokens.Keyword.DML,
|
||
"REPLACE": tokens.Keyword.DML,
|
||
"MERGE": tokens.Keyword.DML,
|
||
"DROP": tokens.Keyword.DDL,
|
||
"CREATE": tokens.Keyword.DDL,
|
||
"ALTER": tokens.Keyword.DDL,
|
||
"WHERE": tokens.Keyword,
|
||
"FROM": tokens.Keyword,
|
||
"INNER": tokens.Keyword,
|
||
"JOIN": tokens.Keyword,
|
||
"STRAIGHT_JOIN": tokens.Keyword,
|
||
"AND": tokens.Keyword,
|
||
"OR": tokens.Keyword,
|
||
"LIKE": tokens.Keyword,
|
||
"ON": tokens.Keyword,
|
||
"IN": tokens.Keyword,
|
||
"SET": tokens.Keyword,
|
||
"BY": tokens.Keyword,
|
||
"GROUP": tokens.Keyword,
|
||
"ORDER": tokens.Keyword,
|
||
"LEFT": tokens.Keyword,
|
||
"OUTER": tokens.Keyword,
|
||
"FULL": tokens.Keyword,
|
||
"IF": tokens.Keyword,
|
||
"END": tokens.Keyword,
|
||
"THEN": tokens.Keyword,
|
||
"LOOP": tokens.Keyword,
|
||
"AS": tokens.Keyword,
|
||
"ELSE": tokens.Keyword,
|
||
"FOR": tokens.Keyword,
|
||
"WHILE": tokens.Keyword,
|
||
"CASE": tokens.Keyword,
|
||
"WHEN": tokens.Keyword,
|
||
"MIN": tokens.Keyword,
|
||
"MAX": tokens.Keyword,
|
||
"DISTINCT": tokens.Keyword,
|
||
}
|
||
|
||
KEYWORDS_ORACLE = {
|
||
"ARCHIVE": tokens.Keyword,
|
||
"ARCHIVELOG": tokens.Keyword,
|
||
"BACKUP": tokens.Keyword,
|
||
"BECOME": tokens.Keyword,
|
||
"BLOCK": tokens.Keyword,
|
||
"BODY": tokens.Keyword,
|
||
"CANCEL": tokens.Keyword,
|
||
"CHANGE": tokens.Keyword,
|
||
"COMPILE": tokens.Keyword,
|
||
"CONTENTS": tokens.Keyword,
|
||
"CONTROLFILE": tokens.Keyword,
|
||
"DATAFILE": tokens.Keyword,
|
||
"DBA": tokens.Keyword,
|
||
"DISMOUNT": tokens.Keyword,
|
||
"DOUBLE": tokens.Keyword,
|
||
"DUMP": tokens.Keyword,
|
||
"ELSIF": tokens.Keyword,
|
||
"EVENTS": tokens.Keyword,
|
||
"EXCEPTIONS": tokens.Keyword,
|
||
"EXPLAIN": tokens.Keyword,
|
||
"EXTENT": tokens.Keyword,
|
||
"EXTERNALLY": tokens.Keyword,
|
||
"FLUSH": tokens.Keyword,
|
||
"FREELIST": tokens.Keyword,
|
||
"FREELISTS": tokens.Keyword,
|
||
# groups seems too common as table name
|
||
# 'GROUPS': tokens.Keyword,
|
||
"INDICATOR": tokens.Keyword,
|
||
"INITRANS": tokens.Keyword,
|
||
"INSTANCE": tokens.Keyword,
|
||
"LAYER": tokens.Keyword,
|
||
"LINK": tokens.Keyword,
|
||
"LISTS": tokens.Keyword,
|
||
"LOGFILE": tokens.Keyword,
|
||
"MANAGE": tokens.Keyword,
|
||
"MANUAL": tokens.Keyword,
|
||
"MAXDATAFILES": tokens.Keyword,
|
||
"MAXINSTANCES": tokens.Keyword,
|
||
"MAXLOGFILES": tokens.Keyword,
|
||
"MAXLOGHISTORY": tokens.Keyword,
|
||
"MAXLOGMEMBERS": tokens.Keyword,
|
||
"MAXTRANS": tokens.Keyword,
|
||
"MINEXTENTS": tokens.Keyword,
|
||
"MODULE": tokens.Keyword,
|
||
"MOUNT": tokens.Keyword,
|
||
"NOARCHIVELOG": tokens.Keyword,
|
||
"NOCACHE": tokens.Keyword,
|
||
"NOCYCLE": tokens.Keyword,
|
||
"NOMAXVALUE": tokens.Keyword,
|
||
"NOMINVALUE": tokens.Keyword,
|
||
"NOORDER": tokens.Keyword,
|
||
"NORESETLOGS": tokens.Keyword,
|
||
"NORMAL": tokens.Keyword,
|
||
"NOSORT": tokens.Keyword,
|
||
"OPTIMAL": tokens.Keyword,
|
||
"OWN": tokens.Keyword,
|
||
"PACKAGE": tokens.Keyword,
|
||
"PARALLEL": tokens.Keyword,
|
||
"PCTINCREASE": tokens.Keyword,
|
||
"PCTUSED": tokens.Keyword,
|
||
"PLAN": tokens.Keyword,
|
||
"PRIVATE": tokens.Keyword,
|
||
"PROFILE": tokens.Keyword,
|
||
"QUOTA": tokens.Keyword,
|
||
"RECOVER": tokens.Keyword,
|
||
"RESETLOGS": tokens.Keyword,
|
||
"RESTRICTED": tokens.Keyword,
|
||
"REUSE": tokens.Keyword,
|
||
"ROLES": tokens.Keyword,
|
||
"SAVEPOINT": tokens.Keyword,
|
||
"SCN": tokens.Keyword,
|
||
"SECTION": tokens.Keyword,
|
||
"SEGMENT": tokens.Keyword,
|
||
"SHARED": tokens.Keyword,
|
||
"SNAPSHOT": tokens.Keyword,
|
||
"SORT": tokens.Keyword,
|
||
"STATEMENT_ID": tokens.Keyword,
|
||
"STOP": tokens.Keyword,
|
||
"SWITCH": tokens.Keyword,
|
||
"TABLES": tokens.Keyword,
|
||
"TABLESPACE": tokens.Keyword,
|
||
"THREAD": tokens.Keyword,
|
||
"TIME": tokens.Keyword,
|
||
"TRACING": tokens.Keyword,
|
||
"TRANSACTION": tokens.Keyword,
|
||
"TRIGGERS": tokens.Keyword,
|
||
"UNLIMITED": tokens.Keyword,
|
||
"UNLOCK": tokens.Keyword,
|
||
}
|
||
|
||
# PostgreSQL Syntax
|
||
KEYWORDS_PLPGSQL = {
|
||
"CONFLICT": tokens.Keyword,
|
||
"WINDOW": tokens.Keyword,
|
||
"PARTITION": tokens.Keyword,
|
||
"OVER": tokens.Keyword,
|
||
"PERFORM": tokens.Keyword,
|
||
"NOTICE": tokens.Keyword,
|
||
"PLPGSQL": tokens.Keyword,
|
||
"INHERIT": tokens.Keyword,
|
||
"INDEXES": tokens.Keyword,
|
||
"ON_ERROR_STOP": tokens.Keyword,
|
||
"BYTEA": tokens.Keyword,
|
||
"BIGSERIAL": tokens.Keyword,
|
||
"BIT VARYING": tokens.Keyword,
|
||
"BOX": tokens.Keyword,
|
||
"CHARACTER": tokens.Keyword,
|
||
"CHARACTER VARYING": tokens.Keyword,
|
||
"CIDR": tokens.Keyword,
|
||
"CIRCLE": tokens.Keyword,
|
||
"DOUBLE PRECISION": tokens.Keyword,
|
||
"INET": tokens.Keyword,
|
||
"JSON": tokens.Keyword,
|
||
"JSONB": tokens.Keyword,
|
||
"LINE": tokens.Keyword,
|
||
"LSEG": tokens.Keyword,
|
||
"MACADDR": tokens.Keyword,
|
||
"MONEY": tokens.Keyword,
|
||
"PATH": tokens.Keyword,
|
||
"PG_LSN": tokens.Keyword,
|
||
"POINT": tokens.Keyword,
|
||
"POLYGON": tokens.Keyword,
|
||
"SMALLSERIAL": tokens.Keyword,
|
||
"TSQUERY": tokens.Keyword,
|
||
"TSVECTOR": tokens.Keyword,
|
||
"TXID_SNAPSHOT": tokens.Keyword,
|
||
"UUID": tokens.Keyword,
|
||
"XML": tokens.Keyword,
|
||
"FOR": tokens.Keyword,
|
||
"IN": tokens.Keyword,
|
||
"LOOP": tokens.Keyword,
|
||
}
|
||
|
||
# Hive Syntax
|
||
KEYWORDS_HQL = {
|
||
"EXPLODE": tokens.Keyword,
|
||
"DIRECTORY": tokens.Keyword,
|
||
"DISTRIBUTE": tokens.Keyword,
|
||
"INCLUDE": tokens.Keyword,
|
||
"LOCATE": tokens.Keyword,
|
||
"OVERWRITE": tokens.Keyword,
|
||
"POSEXPLODE": tokens.Keyword,
|
||
"ARRAY_CONTAINS": tokens.Keyword,
|
||
"CMP": tokens.Keyword,
|
||
"COLLECT_LIST": tokens.Keyword,
|
||
"CONCAT": tokens.Keyword,
|
||
"CONDITION": tokens.Keyword,
|
||
"DATE_ADD": tokens.Keyword,
|
||
"DATE_SUB": tokens.Keyword,
|
||
"DECODE": tokens.Keyword,
|
||
"DBMS_OUTPUT": tokens.Keyword,
|
||
"ELEMENTS": tokens.Keyword,
|
||
"EXCHANGE": tokens.Keyword,
|
||
"EXTENDED": tokens.Keyword,
|
||
"FLOOR": tokens.Keyword,
|
||
"FOLLOWING": tokens.Keyword,
|
||
"FROM_UNIXTIME": tokens.Keyword,
|
||
"FTP": tokens.Keyword,
|
||
"HOUR": tokens.Keyword,
|
||
"INLINE": tokens.Keyword,
|
||
"INSTR": tokens.Keyword,
|
||
"LEN": tokens.Keyword,
|
||
"MAP": tokens.Name.Builtin,
|
||
"MAXELEMENT": tokens.Keyword,
|
||
"MAXINDEX": tokens.Keyword,
|
||
"MAX_PART_DATE": tokens.Keyword,
|
||
"MAX_PART_INT": tokens.Keyword,
|
||
"MAX_PART_STRING": tokens.Keyword,
|
||
"MINELEMENT": tokens.Keyword,
|
||
"MININDEX": tokens.Keyword,
|
||
"MIN_PART_DATE": tokens.Keyword,
|
||
"MIN_PART_INT": tokens.Keyword,
|
||
"MIN_PART_STRING": tokens.Keyword,
|
||
"NOW": tokens.Keyword,
|
||
"NVL": tokens.Keyword,
|
||
"NVL2": tokens.Keyword,
|
||
"PARSE_URL_TUPLE": tokens.Keyword,
|
||
"PART_LOC": tokens.Keyword,
|
||
"PART_COUNT": tokens.Keyword,
|
||
"PART_COUNT_BY": tokens.Keyword,
|
||
"PRINT": tokens.Keyword,
|
||
"PUT_LINE": tokens.Keyword,
|
||
"RANGE": tokens.Keyword,
|
||
"REDUCE": tokens.Keyword,
|
||
"REGEXP_REPLACE": tokens.Keyword,
|
||
"RESIGNAL": tokens.Keyword,
|
||
"RTRIM": tokens.Keyword,
|
||
"SIGN": tokens.Keyword,
|
||
"SIGNAL": tokens.Keyword,
|
||
"SIN": tokens.Keyword,
|
||
"SPLIT": tokens.Keyword,
|
||
"SQRT": tokens.Keyword,
|
||
"STACK": tokens.Keyword,
|
||
"STR": tokens.Keyword,
|
||
"STRING": tokens.Name.Builtin,
|
||
"STRUCT": tokens.Name.Builtin,
|
||
"SUBSTR": tokens.Keyword,
|
||
"SUMMARY": tokens.Keyword,
|
||
"TBLPROPERTIES": tokens.Keyword,
|
||
"TIMESTAMP": tokens.Name.Builtin,
|
||
"TIMESTAMP_ISO": tokens.Keyword,
|
||
"TO_CHAR": tokens.Keyword,
|
||
"TO_DATE": tokens.Keyword,
|
||
"TO_TIMESTAMP": tokens.Keyword,
|
||
"TRUNC": tokens.Keyword,
|
||
"UNBOUNDED": tokens.Keyword,
|
||
"UNIQUEJOIN": tokens.Keyword,
|
||
"UNIX_TIMESTAMP": tokens.Keyword,
|
||
"UTC_TIMESTAMP": tokens.Keyword,
|
||
"VIEWS": tokens.Keyword,
|
||
"EXIT": tokens.Keyword,
|
||
"BREAK": tokens.Keyword,
|
||
"LEAVE": tokens.Keyword,
|
||
}
|
||
|
||
|
||
KEYWORDS_MSACCESS = {
|
||
"DISTINCTROW": tokens.Keyword,
|
||
}
|