| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001 |
- #
- # 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
- from sqlparse import tokens
- # object() only supports "is" and is useful as a marker
- # use this marker to specify that the given regex in SQL_REGEX
- # shall be processed further through a lookup in the KEYWORDS dictionaries
- PROCESS_AS_KEYWORD = object()
- SQL_REGEX = [
- (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'((?<![\w\"\$])\$(?:[_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),
- # 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'(ASC|DESC)(\s+NULLS\s+(FIRST|LAST))?\b', tokens.Keyword.Order),
- (r'(ASC|DESC)\b', tokens.Keyword.Order),
- (r'NULLS\s+(FIRST|LAST)\b', tokens.Keyword.Order),
- (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'PRIMARY\s+KEY\b', tokens.Keyword),
- (r'HANDLER\s+FOR\b', tokens.Keyword),
- (r'GO(\s\d+)\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'\w[$#\w]*', PROCESS_AS_KEYWORD),
- (r'[;:()\[\],\.]', tokens.Punctuation),
- # JSON operators
- (r'(\->>?|#>>?|@>|<@|\?\|?|\?&|\-|#\-)', tokens.Operator),
- (r'[<>=~!]+', tokens.Operator.Comparison),
- (r'[+/@#%^&|^-]+', tokens.Operator),
- ]
- 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,
- '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,
- '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,
- '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,
- '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,
- '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,
- '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,
- 'TRUNCATE': tokens.Keyword.DDL,
- 'GRANT': tokens.Keyword.DCL,
- 'REVOKE': tokens.Keyword.DCL,
- '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,
- }
- # MySQL
- KEYWORDS_MYSQL = {
- 'ROW': 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,
- }
- KEYWORDS_SNOWFLAKE = {
- 'ACCOUNT': tokens.Keyword,
- 'GSCLUSTER': tokens.Keyword,
- 'ISSUE': tokens.Keyword,
- 'ORGANIZATION': tokens.Keyword,
- 'PIVOT': tokens.Keyword,
- 'QUALIFY': tokens.Keyword,
- 'REGEXP': tokens.Keyword,
- 'RLIKE': tokens.Keyword,
- 'SAMPLE': tokens.Keyword,
- 'TRY_CAST': tokens.Keyword,
- 'UNPIVOT': tokens.Keyword,
- 'VARIANT': tokens.Name.Builtin,
- }
- KEYWORDS_BIGQUERY = {
- 'ASSERT_ROWS_MODIFIED': tokens.Keyword,
- 'DEFINE': tokens.Keyword,
- 'ENUM': tokens.Keyword,
- 'HASH': tokens.Keyword,
- 'LOOKUP': tokens.Keyword,
- 'PRECEDING': tokens.Keyword,
- 'PROTO': tokens.Keyword,
- 'RESPECT': tokens.Keyword,
- 'TABLESAMPLE': tokens.Keyword,
- 'BIGNUMERIC': tokens.Name.Builtin,
- }
|