# # Copyright (C) 2009-2020 the sqlparse authors and contributors # # # 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"((?=~!]+", 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, }