diff --git a/src/common/constants.ts b/src/common/constants.ts new file mode 100644 index 00000000..dddd1da7 --- /dev/null +++ b/src/common/constants.ts @@ -0,0 +1,28 @@ +export const tokenClassConsts = { + COMMENT: 'comment', + COMMENT_QUOTE: 'comment.quote', + DELIMITER: 'delimiter', + DELIMITER_CURLY: 'delimiter.curly', + DELIMITER_PAREN: 'delimiter.paren', + DELIMITER_SQUARE: 'delimiter.square', + IDENTIFIER: 'identifier', + IDENTIFIER_QUOTE: 'identifier.quote', + KEYWORD: 'keyword', + KEYWORD_SCOPE: 'keyword.scope', + NUMBER: 'number', + NUMBER_FLOAT: 'number.float', + NUMBER_BINARY: 'number.binary', + NUMBER_OCTAL: 'number.octal', + NUMBER_HEX: 'number.hex', + OPERATOR: 'operators', + OPERATOR_KEYWORD: 'operators.keyword', + OPERATOR_SYMBOL: 'operators.symbol', + PREDEFINED: 'predefined', + STRING: 'string', + STRING_ESCAPE: 'string.escape', + TYPE: 'type', + VARIABLE: 'variable', + WHITE: 'white' +}; + +export const postfixTokenClass = (token: string) => token + '.sql'; diff --git a/src/flinksql/flinksql.ts b/src/flinksql/flinksql.ts index 1624ca8a..2e1a5565 100644 --- a/src/flinksql/flinksql.ts +++ b/src/flinksql/flinksql.ts @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import type { languages } from '../fillers/monaco-editor-core'; +import { tokenClassConsts } from '../common/constants'; export const conf: languages.LanguageConfiguration = { comments: { @@ -20,1297 +21,765 @@ export const conf: languages.LanguageConfiguration = { { open: '[', close: ']' }, { open: '(', close: ')' }, { open: '"', close: '"' }, - { open: "'", close: "'" } + { open: "'", close: "'" }, + { open: '`', close: '`' } ], surroundingPairs: [ { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' }, { open: '"', close: '"' }, - { open: "'", close: "'" } - ] + { open: "'", close: "'" }, + { open: '`', close: '`' } + ], + folding: { + markers: { + start: /((EXECUTE\s+)?BEGIN\s+STATEMENT\s+SET\b)|((EXECUTE\s+)?STATEMENT\s+SET\s+BEGIN\b)/i, + end: /END\b/i + } + } }; export const language = { defaultToken: '', tokenPostfix: '.sql', ignoreCase: true, - brackets: [ - { open: '[', close: ']', token: 'delimiter.square' }, - { open: '(', close: ')', token: 'delimiter.parenthesis' } + { open: '[', close: ']', token: tokenClassConsts.DELIMITER_SQUARE }, + { open: '(', close: ')', token: tokenClassConsts.DELIMITER_PAREN }, + { open: '{', close: '}', token: tokenClassConsts.DELIMITER_CURLY } ], - keywords: [ - 'ABORT_AFTER_WAIT', - 'ABSENT', - 'ABSOLUTE', - 'ACCENT_SENSITIVITY', - 'ACTION', - 'ACTIVATION', - 'ACTIVE', + 'ABS', 'ADD', - 'ADDRESS', - 'ADMIN', - 'AES', - 'AES_128', - 'AES_192', - 'AES_256', - 'AFFINITY', 'AFTER', - 'AGGREGATE', - 'ALGORITHM', - 'ALL_CONSTRAINTS', - 'ALL_ERRORMSGS', - 'ALL_INDEXES', - 'ALL_LEVELS', - 'ALL_SPARSE_COLUMNS', - 'ALLOW_CONNECTIONS', - 'ALLOW_MULTIPLE_EVENT_LOSS', - 'ALLOW_PAGE_LOCKS', - 'ALLOW_ROW_LOCKS', - 'ALLOW_SINGLE_EVENT_LOSS', - 'ALLOW_SNAPSHOT_ISOLATION', - 'ALLOWED', + 'ALL', + 'ALLOCATE', + 'ALLOW', 'ALTER', - 'ANONYMOUS', - 'ANSI_DEFAULTS', - 'ANSI_NULL_DEFAULT', - 'ANSI_NULL_DFLT_OFF', - 'ANSI_NULL_DFLT_ON', - 'ANSI_NULLS', - 'ANSI_PADDING', - 'ANSI_WARNINGS', - 'APPEND', - 'APPLICATION', - 'APPLICATION_LOG', - 'ARITHABORT', - 'ARITHIGNORE', + 'ANALYZE', + 'AND', + 'ANY', + 'ARE', + 'ARRAY', + 'ARRAY_AGG', + 'ARRAY_CONCAT_AGG', + 'ARRAY_MAX_CARDINALITY', 'AS', 'ASC', - 'ASSEMBLY', + 'ASENSITIVE', 'ASYMMETRIC', - 'ASYNCHRONOUS_COMMIT', 'AT', 'ATOMIC', - 'ATTACH', - 'ATTACH_REBUILD_LOG', - 'AUDIT', - 'AUDIT_GUID', - 'AUTHENTICATION', 'AUTHORIZATION', - 'AUTO', - 'AUTO_CLEANUP', - 'AUTO_CLOSE', - 'AUTO_CREATE_STATISTICS', - 'AUTO_SHRINK', - 'AUTO_UPDATE_STATISTICS', - 'AUTO_UPDATE_STATISTICS_ASYNC', - 'AUTOMATED_BACKUP_PREFERENCE', - 'AUTOMATIC', - 'AVAILABILITY', - 'AVAILABILITY_MODE', - 'BACKUP', - 'BACKUP_PRIORITY', - 'BASE64', - 'BATCHSIZE', + 'AVG', 'BEGIN', - 'BEGIN_DIALOG', + 'BEGIN_FRAME', + 'BEGIN_PARTITION', + 'BETWEEN', 'BIGINT', 'BINARY', - 'BINDING', 'BIT', - 'BLOCKERS', - 'BLOCKSIZE', - 'BOUNDING_BOX', - 'BREAK', - 'BROKER', - 'BROKER_INSTANCE', - 'BROWSE', - 'BUCKET_COUNT', - 'BUFFER', - 'BUFFERCOUNT', - 'BULK', - 'BULK_LOGGED', + 'BLOB', + 'BOOLEAN', + 'BOTH', 'BY', - 'CACHE', + 'BYTES', 'CALL', 'CALLED', - 'CALLER', - 'CAP_CPU_PERCENT', + 'CARDINALITY', 'CASCADE', + 'CASCADED', 'CASE', + 'CAST', 'CATALOG', - 'CATCH', - 'CELLS_PER_OBJECT', - 'CERTIFICATE', - 'CHANGE_RETENTION', - 'CHANGE_TRACKING', - 'CHANGES', + 'CATALOGS', + 'CEIL', + 'CEILING', + 'CENTURY', + 'CHANGELOG_MODE', 'CHAR', 'CHARACTER', + 'CHARACTER_LENGTH', + 'CHAR_LENGTH', 'CHECK', - 'CHECK_CONSTRAINTS', - 'CHECK_EXPIRATION', - 'CHECK_POLICY', - 'CHECKALLOC', - 'CHECKCATALOG', - 'CHECKCONSTRAINTS', - 'CHECKDB', - 'CHECKFILEGROUP', - 'CHECKIDENT', - 'CHECKPOINT', - 'CHECKTABLE', - 'CLASSIFIER_FUNCTION', - 'CLEANTABLE', - 'CLEANUP', - 'CLEAR', + 'CLASSIFIER', + 'CLOB', 'CLOSE', - 'CLUSTER', - 'CLUSTERED', - 'CODEPAGE', + 'COALESCE', 'COLLATE', - 'COLLECTION', + 'COLLECT', 'COLUMN', - 'COLUMN_SET', 'COLUMNS', - 'COLUMNSTORE', - 'COLUMNSTORE_ARCHIVE', + 'COMMENT', 'COMMIT', - 'COMMITTED', - 'COMPATIBILITY_LEVEL', - 'COMPRESSION', 'COMPUTE', - 'CONCAT', - 'CONCAT_NULL_YIELDS_NULL', - 'CONFIGURATION', + 'CONDITION', + 'CONFIG', 'CONNECT', 'CONSTRAINT', - 'CONTAINMENT', - 'CONTENT', - 'CONTEXT', - 'CONTINUE', - 'CONTINUE_AFTER_ERROR', - 'CONTRACT', - 'CONTRACT_NAME', - 'CONTROL', - 'CONVERSATION', - 'COOKIE', - 'COPY_ONLY', - 'COUNTER', - 'CPU', + 'CONSTRAINTS', + 'CONTAINS', + 'CONVERT', + 'CORR', + 'CORRESPONDING', + 'COUNT', + 'COVAR_POP', + 'COVAR_SAMP', 'CREATE', - 'CREATE_NEW', - 'CREATION_DISPOSITION', - 'CREDENTIAL', - 'CRYPTOGRAPHIC', + 'CROSS', 'CUBE', + 'CUME_DIST', + 'CUMULATE', 'CURRENT', + 'CURRENT_CATALOG', 'CURRENT_DATE', + 'CURRENT_DEFAULT_TRANSFORM_GROUP', + 'CURRENT_PATH', + 'CURRENT_ROLE', + 'CURRENT_ROW', + 'CURRENT_SCHEMA', + 'CURRENT_TIME', + 'CURRENT_TIMESTAMP', + 'CURRENT_TRANSFORM_GROUP_FOR_TYPE', + 'CURRENT_USER', 'CURSOR', - 'CURSOR_CLOSE_ON_COMMIT', - 'CURSOR_DEFAULT', 'CYCLE', 'DATA', - 'DATA_COMPRESSION', - 'DATA_PURITY', 'DATABASE', - 'DATABASE_DEFAULT', - 'DATABASE_MIRRORING', - 'DATABASE_SNAPSHOT', - 'DATAFILETYPE', + 'DATABASES', 'DATE', - 'DATE_CORRELATION_OPTIMIZATION', - 'DATEFIRST', - 'DATEFORMAT', 'DATETIME', - 'DATETIME2', - 'DATETIMEOFFSET', + 'DATETIME_DIFF', + 'DATETIME_TRUNC', + 'DATE_DIFF', + 'DATE_TRUNC', 'DAY', + 'DAYOFWEEK', 'DAYOFYEAR', 'DAYS', - 'DB_CHAINING', - 'DBCC', - 'DBREINDEX', - 'DDL_DATABASE_LEVEL_EVENTS', - 'DEADLOCK_PRIORITY', 'DEALLOCATE', 'DEC', + 'DECADE', 'DECIMAL', 'DECLARE', - 'DECRYPTION', 'DEFAULT', - 'DEFAULT_DATABASE', - 'DEFAULT_FULLTEXT_LANGUAGE', - 'DEFAULT_LANGUAGE', - 'DEFAULT_SCHEMA', - 'DEFINITION', - 'DELAY', - 'DELAYED_DURABILITY', + 'DEFINE', 'DELETE', - 'DELETED', - 'DENSITY_VECTOR', - 'DENY', - 'DEPENDENTS', - 'DES', + 'DENSE_RANK', + 'DEREF', 'DESC', - 'DESCRIPTION', - 'DESX', - 'DHCP', - 'DIAGNOSTICS', - 'DIALOG', - 'DIFFERENTIAL', - 'DIRECTORY_NAME', - 'DISABLE', - 'DISABLE_BROKER', - 'DISABLED', - 'DISK', + 'DESCRIBE', + 'DESCRIPTOR', + 'DETERMINISTIC', + 'DISALLOW', + 'DISCONNECT', 'DISTINCT', - 'DISTRIBUTED', - 'DOCUMENT', + 'DIV', + 'DOT', 'DOUBLE', 'DROP', - 'DROP_EXISTING', - 'DROPCLEANBUFFERS', - 'DUMP', - 'DURABILITY', 'DYNAMIC', - 'EDITION', - 'ELEMENTS', + 'EACH', + 'ELEMENT', 'ELSE', - 'EMERGENCY', 'EMPTY', - 'EMPTYFILE', - 'ENABLE', - 'ENABLE_BROKER', - 'ENABLED', - 'ENCRYPTION', 'END', - 'ENDPOINT', - 'ENDPOINT_URL', - 'ERRLVL', - 'ERROR', - 'ERROR_BROKER_CONVERSATIONS', - 'ERRORFILE', + 'END-EXEC', + 'END_FRAME', + 'END_PARTITION', + 'ENFORCED', + 'ENGINE', + 'EPOCH', + 'EQUALS', 'ESCAPE', - 'ESTIMATEONLY', - 'EVENT', - 'EVENT_RETENTION_MODE', + 'ESTIMATED_COST', + 'EVERY', + 'EXCEPT', + 'EXCLUDING', 'EXEC', - 'EXECUTABLE', 'EXECUTE', - 'EXIT', - 'EXPAND', - 'EXPIREDATE', - 'EXPIRY_DATE', - 'EXPLICIT', - 'EXTENDED_LOGICAL_CHECKS', - 'EXTENSION', + 'EXISTS', + 'EXP', + 'EXPLAIN', + 'EXTEND', + 'EXTENDED', 'EXTERNAL', - 'EXTERNAL_ACCESS', - 'FAIL_OPERATION', - 'FAILOVER', - 'FAILOVER_MODE', - 'FAILURE_CONDITION_LEVEL', + 'EXTRACT', 'FALSE', - 'FAN_IN', - 'FAST', - 'FAST_FORWARD', 'FETCH', - 'FIELDTERMINATOR', 'FILE', - 'FILEGROUP', - 'FILEGROWTH', - 'FILELISTONLY', - 'FILENAME', - 'FILEPATH', - 'FILESTREAM', - 'FILESTREAM_ON', - 'FILETABLE_COLLATE_FILENAME', - 'FILETABLE_DIRECTORY', - 'FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME', - 'FILETABLE_NAMESPACE', - 'FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME', - 'FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME', - 'FILLFACTOR', - 'FILTERING', - 'FIRE_TRIGGERS', + 'FILTER', 'FIRST', - 'FIRSTROW', + 'FIRST_VALUE', 'FLOAT', - 'FMTONLY', - 'FOLLOWING', + 'FLOOR', 'FOR', - 'FORCE', - 'FORCE_FAILOVER_ALLOW_DATA_LOSS', - 'FORCE_SERVICE_ALLOW_DATA_LOSS', - 'FORCED', - 'FORCEPLAN', - 'FORCESCAN', - 'FORCESEEK', 'FOREIGN', - 'FORMATFILE', - 'FORMSOF', - 'FORWARD_ONLY', + 'FRAME_ROW', 'FREE', - 'FREEPROCCACHE', - 'FREESESSIONCACHE', - 'FREESYSTEMCACHE', + 'FRIDAY', 'FROM', 'FULL', - 'FULLSCAN', - 'FULLTEXT', 'FUNCTION', - 'GB', - 'GEOGRAPHY_AUTO_GRID', - 'GEOGRAPHY_GRID', - 'GEOMETRY_AUTO_GRID', - 'GEOMETRY_GRID', + 'FUNCTIONS', + 'FUSION', + 'GENERATED', 'GET', 'GLOBAL', - 'GO', - 'GOTO', - 'GOVERNOR', 'GRANT', - 'GRIDS', 'GROUP', - 'GROUP_MAX_REQUESTS', - 'HADR', - 'HASH', - 'HASHED', + 'GROUPING', + 'GROUPS', + 'GROUP_CONCAT', 'HAVING', - 'HEADERONLY', - 'HEALTH_CHECK_TIMEOUT', - 'HELP', - 'HIERARCHYID', - 'HIGH', - 'HINT', - 'HISTOGRAM', - 'HOLDLOCK', - 'HONOR_BROKER_PRIORITY', + 'HOLD', + 'HOP', 'HOUR', 'HOURS', 'IDENTITY', - 'IDENTITY_INSERT', - 'IDENTITY_VALUE', - 'IDENTITYCOL', 'IF', - 'IGNORE_CONSTRAINTS', - 'IGNORE_DUP_KEY', - 'IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX', - 'IGNORE_TRIGGERS', - 'IMAGE', - 'IMMEDIATE', - 'IMPERSONATE', - 'IMPLICIT_TRANSACTIONS', - 'IMPORTANCE', + 'IGNORE', + 'ILIKE', + 'IMPORT', + 'IN', 'INCLUDE', - 'INCREMENT', - 'INCREMENTAL', - 'INDEX', - 'INDEXDEFRAG', - 'INFINITE', - 'INFLECTIONAL', - 'INIT', - 'INITIATOR', - 'INPUT', - 'INPUTBUFFER', + 'INCLUDING', + 'INDICATOR', + 'INITIAL', + 'INNER', + 'INOUT', 'INSENSITIVE', 'INSERT', - 'INSERTED', - 'INSTEAD', 'INT', 'INTEGER', + 'INTERSECT', + 'INTERSECTION', + 'INTERVAL', 'INTO', - 'IO', - 'IP', - 'ISABOUT', - 'ISOLATION', - 'JOB', - 'KB', - 'KEEP', - 'KEEP_CDC', - 'KEEP_NULLS', - 'KEEP_REPLICATION', - 'KEEPDEFAULTS', - 'KEEPFIXED', - 'KEEPIDENTITY', - 'KEEPNULLS', - 'KERBEROS', + 'IS', + 'JAR', + 'JARS', + 'JAVA', + 'JOIN', + 'JSON_ARRAY', + 'JSON_ARRAYAGG', + 'JSON_EXECUTION_PLAN', + 'JSON_EXISTS', + 'JSON_OBJECT', + 'JSON_OBJECTAGG', + 'JSON_QUERY', + 'JSON_VALUE', 'KEY', - 'KEY_SOURCE', - 'KEYS', - 'KEYSET', - 'KILL', - 'KILOBYTES_PER_BATCH', - 'LABELONLY', + 'LAG', 'LANGUAGE', + 'LARGE', 'LAST', - 'LASTROW', - 'LEVEL', - 'LEVEL_1', - 'LEVEL_2', - 'LEVEL_3', - 'LEVEL_4', - 'LIFETIME', + 'LAST_VALUE', + 'LATERAL', + 'LEAD', + 'LEADING', + 'LEFT', + 'LIKE', + 'LIKE_REGEX', 'LIMIT', - 'LINENO', - 'LIST', - 'LISTENER', - 'LISTENER_IP', - 'LISTENER_PORT', + 'LN', 'LOAD', - 'LOADHISTORY', - 'LOB_COMPACTION', 'LOCAL', - 'LOCAL_SERVICE_NAME', - 'LOCK_ESCALATION', - 'LOCK_TIMEOUT', - 'LOGIN', - 'LOGSPACE', - 'LOOP', - 'LOW', - 'MANUAL', - 'MARK', - 'MARK_IN_USE_FOR_REMOVAL', - 'MASTER', - 'MAX_CPU_PERCENT', - 'MAX_DISPATCH_LATENCY', - 'MAX_DOP', - 'MAX_DURATION', - 'MAX_EVENT_SIZE', - 'MAX_FILES', - 'MAX_IOPS_PER_VOLUME', - 'MAX_MEMORY', - 'MAX_MEMORY_PERCENT', - 'MAX_QUEUE_READERS', - 'MAX_ROLLOVER_FILES', - 'MAX_SIZE', - 'MAXDOP', - 'MAXERRORS', - 'MAXLENGTH', - 'MAXRECURSION', - 'MAXSIZE', - 'MAXTRANSFERSIZE', - 'MAXVALUE', - 'MB', - 'MEDIADESCRIPTION', - 'MEDIANAME', - 'MEDIAPASSWORD', - 'MEDIUM', + 'LOCALTIME', + 'LOCALTIMESTAMP', + 'LOWER', + 'MAP', + 'MATCH', + 'MATCHES', + 'MATCH_NUMBER', + 'MATCH_RECOGNIZE', + 'MAX', + 'MEASURES', 'MEMBER', - 'MEMORY_OPTIMIZED', - 'MEMORY_OPTIMIZED_DATA', - 'MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT', - 'MEMORY_PARTITION_MODE', 'MERGE', - 'MESSAGE', - 'MESSAGE_FORWARD_SIZE', - 'MESSAGE_FORWARDING', + 'METADATA', + 'METHOD', 'MICROSECOND', + 'MILLENNIUM', 'MILLISECOND', - 'MIN_CPU_PERCENT', - 'MIN_IOPS_PER_VOLUME', - 'MIN_MEMORY_PERCENT', + 'MIN', + 'MINUS', 'MINUTE', 'MINUTES', - 'MINVALUE', - 'MIRROR', - 'MIRROR_ADDRESS', + 'MOD', + 'MODIFIES', 'MODIFY', - 'MONEY', + 'MODULE', + 'MODULES', + 'MONDAY', 'MONTH', - 'MOVE', - 'MULTI_USER', - 'MUST_CHANGE', - 'NAME', + 'MONTHS', + 'MORE', + 'MULTISET', 'NANOSECOND', 'NATIONAL', - 'NATIVE_COMPILATION', + 'NATURAL', 'NCHAR', - 'NEGOTIATE', - 'NESTED_TRIGGERS', - 'NEW_ACCOUNT', - 'NEW_BROKER', - 'NEW_PASSWORD', - 'NEWNAME', + 'NCLOB', + 'NEW', 'NEXT', 'NO', - 'NO_BROWSETABLE', - 'NO_CHECKSUM', - 'NO_COMPRESSION', - 'NO_EVENT_LOSS', - 'NO_INFOMSGS', - 'NO_TRUNCATE', - 'NO_WAIT', - 'NOCHECK', - 'NOCOUNT', - 'NOEXEC', - 'NOEXPAND', - 'NOFORMAT', - 'NOINDEX', - 'NOINIT', - 'NOLOCK', - 'NON', - 'NON_TRANSACTED_ACCESS', - 'NONCLUSTERED', 'NONE', - 'NORECOMPUTE', - 'NORECOVERY', - 'NORESEED', - 'NORESET', - 'NOREWIND', - 'NORMAL', - 'NOSKIP', - 'NOTIFICATION', - 'NOTRUNCATE', - 'NOUNLOAD', - 'NOWAIT', - 'NTEXT', - 'NTLM', - 'NUMANODE', + 'NORMALIZE', + 'NOT', + 'NTH_VALUE', + 'NTILE', + 'NULL', + 'NULLIF', + 'NULLS', 'NUMERIC', - 'NUMERIC_ROUNDABORT', - 'NVARCHAR', - 'OBJECT', + 'OCCURRENCES_REGEX', + 'OCTET_LENGTH', 'OF', - 'OFF', - 'OFFLINE', 'OFFSET', - 'OFFSETS', - 'OLD_ACCOUNT', - 'OLD_PASSWORD', + 'OLD', + 'OMIT', 'ON', - 'ON_FAILURE', - 'ONLINE', + 'ONE', 'ONLY', 'OPEN', - 'OPEN_EXISTING', - 'OPENTRAN', - 'OPTIMISTIC', - 'OPTIMIZE', - 'OPTION', + 'OPTIONS', + 'OR', 'ORDER', + 'ORDINAL', 'OUT', - 'OUTPUT', - 'OUTPUTBUFFER', + 'OUTER', 'OVER', - 'OVERRIDE', - 'OWNER', - 'OWNERSHIP', - 'PAD_INDEX', - 'PAGE', - 'PAGE_VERIFY', - 'PAGECOUNT', - 'PAGLOCK', - 'PARAMETERIZATION', - 'PARSEONLY', - 'PARTIAL', + 'OVERLAPS', + 'OVERLAY', + 'OVERWRITE', + 'OVERWRITING', + 'PARAMETER', 'PARTITION', + 'PARTITIONED', 'PARTITIONS', - 'PARTNER', - 'PASSWORD', - 'PATH', - 'PER_CPU', - 'PER_NODE', + 'PAST', + 'PATTERN', + 'PER', 'PERCENT', - 'PERMISSION_SET', - 'PERSISTED', - 'PHYSICAL_ONLY', + 'PERCENTILE_CONT', + 'PERCENTILE_DISC', + 'PERCENT_RANK', + 'PERIOD', + 'PERMUTE', + 'PIVOT', 'PLAN', - 'POISON_MESSAGE_HANDLING', - 'POOL', - 'POPULATION', - 'PORT', + 'PORTION', + 'POSITION', + 'POSITION_REGEX', + 'POWER', + 'PRECEDES', 'PRECEDING', 'PRECISION', + 'PREPARE', + 'PREV', 'PRIMARY', - 'PRIMARY_ROLE', - 'PRINT', - 'PRIOR', - 'PRIORITY', - 'PRIORITY_LEVEL', - 'PRIVATE', - 'PRIVILEGES', - 'PROC', - 'PROCCACHE', 'PROCEDURE', - 'PROCEDURE_NAME', - 'PROCESS', - 'PROFILE', - 'PROPERTY', - 'PROPERTY_DESCRIPTION', - 'PROPERTY_INT_ID', - 'PROPERTY_SET_GUID', - 'PROVIDER', - 'PROVIDER_KEY_NAME', - 'PUBLIC', - 'PUT', + 'PYTHON', + 'PYTHON_ARCHIVES', + 'PYTHON_DEPENDENCIES', + 'PYTHON_FILES', + 'PYTHON_JAR', + 'PYTHON_PARAMETER', + 'PYTHON_REQUIREMENTS', + 'QUALIFY', 'QUARTER', - 'QUERY', - 'QUERY_GOVERNOR_COST_LIMIT', - 'QUEUE', - 'QUEUE_DELAY', - 'QUOTED_IDENTIFIER', - 'RAISERROR', + 'QUARTERS', 'RANGE', + 'RANK', 'RAW', - 'RC2', - 'RC4', - 'RC4_128', - 'READ', - 'READ_COMMITTED_SNAPSHOT', - 'READ_ONLY', - 'READ_ONLY_ROUTING_LIST', - 'READ_ONLY_ROUTING_URL', - 'READ_WRITE', - 'READ_WRITE_FILEGROUPS', - 'READCOMMITTED', - 'READCOMMITTEDLOCK', - 'READONLY', - 'READPAST', - 'READTEXT', - 'READUNCOMMITTED', - 'READWRITE', + 'READS', 'REAL', - 'REBUILD', - 'RECEIVE', - 'RECOMPILE', - 'RECONFIGURE', - 'RECOVERY', 'RECURSIVE', - 'RECURSIVE_TRIGGERS', + 'REF', 'REFERENCES', - 'REGENERATE', - 'RELATED_CONVERSATION', - 'RELATED_CONVERSATION_GROUP', - 'RELATIVE', - 'REMOTE', - 'REMOTE_PROC_TRANSACTIONS', - 'REMOTE_SERVICE_NAME', + 'REFERENCING', + 'REGR_AVGX', + 'REGR_AVGY', + 'REGR_COUNT', + 'REGR_INTERCEPT', + 'REGR_R2', + 'REGR_SLOPE', + 'REGR_SXX', + 'REGR_SXY', + 'REGR_SYY', + 'RELEASE', 'REMOVE', - 'REORGANIZE', - 'REPAIR_ALLOW_DATA_LOSS', - 'REPAIR_FAST', - 'REPAIR_REBUILD', - 'REPEATABLE', - 'REPEATABLEREAD', - 'REPLICA', - 'REPLICATION', - 'REQUEST_MAX_CPU_TIME_SEC', - 'REQUEST_MAX_MEMORY_GRANT_PERCENT', - 'REQUEST_MEMORY_GRANT_TIMEOUT_SEC', - 'REQUIRED', - 'RESAMPLE', - 'RESEED', - 'RESERVE_DISK_SPACE', + 'RENAME', 'RESET', - 'RESOURCE', - 'RESTART', - 'RESTORE', 'RESTRICT', - 'RESTRICTED_USER', 'RESULT', - 'RESUME', - 'RETAINDAYS', - 'RETENTION', 'RETURN', 'RETURNS', - 'REVERT', 'REVOKE', - 'REWIND', - 'REWINDONLY', - 'ROBUST', - 'ROLE', + 'RIGHT', + 'RLIKE', 'ROLLBACK', 'ROLLUP', - 'ROOT', - 'ROUTE', 'ROW', - 'ROWCOUNT', - 'ROWGUIDCOL', - 'ROWLOCK', 'ROWS', - 'ROWS_PER_BATCH', - 'ROWTERMINATOR', - 'ROWVERSION', - 'RSA_1024', - 'RSA_2048', - 'RSA_512', - 'RULE', - 'SAFE', - 'SAFETY', - 'SAMPLE', - 'SAVE', - 'SCHEDULER', - 'SCHEMA', - 'SCHEMA_AND_DATA', - 'SCHEMA_ONLY', - 'SCHEMABINDING', - 'SCHEME', + 'ROW_NUMBER', + 'RUNNING', + 'SAFE_CAST', + 'SAFE_OFFSET', + 'SAFE_ORDINAL', + 'SATURDAY', + 'SAVEPOINT', + 'SCALA', + 'SCOPE', 'SCROLL', - 'SCROLL_LOCKS', 'SEARCH', 'SECOND', - 'SECONDARY', - 'SECONDARY_ONLY', - 'SECONDARY_ROLE', 'SECONDS', - 'SECRET', - 'SECURITY_LOG', - 'SECURITYAUDIT', + 'SEEK', 'SELECT', - 'SELECTIVE', - 'SELF', - 'SEND', - 'SENT', - 'SEQUENCE', - 'SERIALIZABLE', - 'SERVER', - 'SERVICE', - 'SERVICE_BROKER', - 'SERVICE_NAME', + 'SENSITIVE', + 'SEPARATOR', 'SESSION', - 'SESSION_TIMEOUT', + 'SESSION_USER', 'SET', 'SETS', - 'SETUSER', - 'SHOW_STATISTICS', - 'SHOWCONTIG', - 'SHOWPLAN', - 'SHOWPLAN_ALL', - 'SHOWPLAN_TEXT', - 'SHOWPLAN_XML', - 'SHRINKDATABASE', - 'SHRINKFILE', - 'SHUTDOWN', - 'SID', - 'SIGNATURE', - 'SIMPLE', - 'SINGLE_BLOB', - 'SINGLE_CLOB', - 'SINGLE_NCLOB', - 'SINGLE_USER', - 'SINGLETON', + 'SHOW', + 'SIMILAR', 'SIZE', 'SKIP', - 'SMALLDATETIME', + 'SLIDE', 'SMALLINT', - 'SMALLMONEY', - 'SNAPSHOT', - 'SORT_IN_TEMPDB', - 'SOURCE', - 'SPARSE', - 'SPATIAL', - 'SPATIAL_WINDOW_MAX_CELLS', - 'SPECIFICATION', - 'SPLIT', + 'SOME', + 'SPECIFIC', + 'SPECIFICTYPE', 'SQL', - 'SQL_VARIANT', - 'SQLPERF', - 'STANDBY', + 'SQLEXCEPTION', + 'SQLSTATE', + 'SQLWARNING', + 'SQRT', 'START', - 'START_DATE', - 'STARTED', - 'STARTUP_STATE', - 'STAT_HEADER', - 'STATE', 'STATEMENT', 'STATIC', - 'STATISTICAL_SEMANTICS', 'STATISTICS', - 'STATISTICS_INCREMENTAL', - 'STATISTICS_NORECOMPUTE', - 'STATS', - 'STATS_STREAM', - 'STATUS', - 'STATUSONLY', - 'STOP', - 'STOP_ON_ERROR', - 'STOPAT', - 'STOPATMARK', - 'STOPBEFOREMARK', - 'STOPLIST', - 'STOPPED', - 'SUBJECT', - 'SUBSCRIPTION', - 'SUPPORTED', - 'SUSPEND', - 'SWITCH', + 'STDDEV_POP', + 'STDDEV_SAMP', + 'STEP', + 'STREAM', + 'STRING', + 'STRING_AGG', + 'SUBMULTISET', + 'SUBSET', + 'SUBSTRING', + 'SUBSTRING_REGEX', + 'SUCCEEDS', + 'SUM', + 'SUNDAY', 'SYMMETRIC', - 'SYNCHRONOUS_COMMIT', - 'SYNONYM', - 'SYSNAME', 'SYSTEM', + 'SYSTEM_TIME', + 'SYSTEM_USER', 'TABLE', - 'TABLERESULTS', + 'TABLES', 'TABLESAMPLE', - 'TABLOCK', - 'TABLOCKX', - 'TAKE', - 'TAPE', - 'TARGET', - 'TARGET_RECOVERY_TIME', - 'TB', - 'TCP', - 'TEXT', - 'TEXTIMAGE_ON', - 'TEXTSIZE', + 'TEMPORARY', 'THEN', - 'THESAURUS', - 'THROW', - 'TIES', + 'THURSDAY', 'TIME', - 'TIMEOUT', - 'TIMER', + 'TIMECOL', 'TIMESTAMP', + 'TIMESTAMP_DIFF', + 'TIMESTAMP_LTZ', + 'TIMESTAMP_TRUNC', + 'TIMEZONE_HOUR', + 'TIMEZONE_MINUTE', + 'TIME_DIFF', + 'TIME_TRUNC', 'TINYINT', 'TO', - 'TOP', - 'TORN_PAGE_DETECTION', - 'TRACEOFF', - 'TRACEON', - 'TRACESTATUS', - 'TRACK_CAUSALITY', - 'TRACK_COLUMNS_UPDATED', - 'TRAN', - 'TRANSACTION', - 'TRANSFER', - 'TRANSFORM_NOISE_WORDS', + 'TRAILING', + 'TRANSLATE', + 'TRANSLATE_REGEX', + 'TRANSLATION', + 'TREAT', 'TRIGGER', - 'TRIPLE_DES', - 'TRIPLE_DES_3KEY', + 'TRIM', + 'TRIM_ARRAY', 'TRUE', 'TRUNCATE', - 'TRUNCATEONLY', - 'TRUSTWORTHY', - 'TRY', - 'TSQL', - 'TWO_DIGIT_YEAR_CUTOFF', - 'TYPE', - 'TYPE_WARNING', - 'UNBOUNDED', - 'UNCHECKED', - 'UNCOMMITTED', - 'UNDEFINED', + 'TRY_CAST', + 'TUESDAY', + 'TUMBLE', + 'UESCAPE', + 'UNION', 'UNIQUE', - 'UNIQUEIDENTIFIER', 'UNKNOWN', - 'UNLIMITED', 'UNLOAD', - 'UNSAFE', + 'UNNEST', + 'UNPIVOT', 'UPDATE', - 'UPDATETEXT', - 'UPDATEUSAGE', - 'UPDLOCK', - 'URL', + 'UPPER', + 'UPSERT', 'USE', - 'USED', 'USER', - 'USEROPTIONS', 'USING', - 'VALID_XML', - 'VALIDATION', 'VALUE', 'VALUES', + 'VALUE_OF', 'VARBINARY', 'VARCHAR', 'VARYING', - 'VERIFYONLY', - 'VERSION', + 'VAR_POP', + 'VAR_SAMP', + 'VERSIONING', 'VIEW', - 'VIEW_METADATA', 'VIEWS', - 'VISIBILITY', - 'WAIT_AT_LOW_PRIORITY', - 'WAITFOR', + 'VIRTUAL', + 'WATERMARK', + 'WATERMARKS', + 'WEDNESDAY', 'WEEK', - 'WEIGHT', - 'WELL_FORMED_XML', + 'WEEKS', 'WHEN', + 'WHENEVER', 'WHERE', - 'WHILE', - 'WINDOWS', + 'WIDTH_BUCKET', + 'WINDOW', 'WITH', 'WITHIN', 'WITHOUT', - 'WITNESS', - 'WORK', - 'WORKLOAD', - 'WRITETEXT', - 'XACT_ABORT', - 'XLOCK', - 'XMAX', - 'XMIN', - 'XML', - 'XMLDATA', - 'XMLNAMESPACES', - 'XMLSCHEMA', - 'XQUERY', - 'XSINIL', 'YEAR', - 'YMAX', - 'YMIN' + 'YEARS', + 'ZONE' ], operators: [ - // Logical - 'ALL', - 'AND', - 'ANY', - 'BETWEEN', - 'EXISTS', - 'IN', - 'LIKE', - 'NOT', - 'OR', - 'SOME', // Set 'EXCEPT', 'INTERSECT', 'UNION', + // Logical + 'AND', + 'OR', + 'NOT', + // Arithmetic + 'DIV', // Join - 'APPLY', - 'CROSS', + 'LEFT', + 'RIGHT', 'FULL', 'INNER', - 'JOIN', - 'LEFT', + 'CROSS', 'OUTER', - 'RIGHT', + 'JOIN', + 'NATURAL', // Predicates - 'CONTAINS', - 'FREETEXT', + 'EXISTS', 'IS', - 'NULL', - // Pivoting - 'PIVOT', - 'UNPIVOT', - // Merging - 'MATCHED' + 'ALL', + 'DISTINCT', + 'ANY', + 'BETWEEN', + 'IN', + 'LIKE', + 'RLIKE', + 'SIMILAR', + 'TO', + 'ESCAPE' ], builtinFunctions: [ - // Aggregate - 'AVG', - 'CHECKSUM_AGG', - 'COUNT', - 'COUNT_BIG', - 'GROUPING', - 'GROUPING_ID', - 'MAX', - 'MIN', - 'SUM', - 'STDEV', - 'STDEVP', - 'VAR', - 'VARP', - // Analytic - 'CUME_DIST', - 'FIRST_VALUE', - 'LAG', - 'LAST_VALUE', - 'LEAD', - 'PERCENTILE_CONT', - 'PERCENTILE_DISC', - 'PERCENT_RANK', - // Collation - 'COLLATE', - 'COLLATIONPROPERTY', - 'TERTIARY_WEIGHTS', - // Azure - 'FEDERATION_FILTERING_VALUE', - // Conversion - 'CAST', - 'CONVERT', - 'PARSE', - 'TRY_CAST', - 'TRY_CONVERT', - 'TRY_PARSE', - // Cryptographic - 'ASYMKEY_ID', - 'ASYMKEYPROPERTY', - 'CERTPROPERTY', - 'CERT_ID', - 'CRYPT_GEN_RANDOM', - 'DECRYPTBYASYMKEY', - 'DECRYPTBYCERT', - 'DECRYPTBYKEY', - 'DECRYPTBYKEYAUTOASYMKEY', - 'DECRYPTBYKEYAUTOCERT', - 'DECRYPTBYPASSPHRASE', - 'ENCRYPTBYASYMKEY', - 'ENCRYPTBYCERT', - 'ENCRYPTBYKEY', - 'ENCRYPTBYPASSPHRASE', - 'HASHBYTES', - 'IS_OBJECTSIGNED', - 'KEY_GUID', - 'KEY_ID', - 'KEY_NAME', - 'SIGNBYASYMKEY', - 'SIGNBYCERT', - 'SYMKEYPROPERTY', - 'VERIFYSIGNEDBYCERT', - 'VERIFYSIGNEDBYASYMKEY', - // Cursor - 'CURSOR_STATUS', - // Datatype - 'DATALENGTH', - 'IDENT_CURRENT', - 'IDENT_INCR', - 'IDENT_SEED', - 'IDENTITY', - 'SQL_VARIANT_PROPERTY', - // Datetime - 'CURRENT_TIMESTAMP', - 'DATEADD', - 'DATEDIFF', - 'DATEFROMPARTS', - 'DATENAME', - 'DATEPART', - 'DATETIME2FROMPARTS', - 'DATETIMEFROMPARTS', - 'DATETIMEOFFSETFROMPARTS', - 'DAY', - 'EOMONTH', - 'GETDATE', - 'GETUTCDATE', - 'ISDATE', - 'MONTH', - 'SMALLDATETIMEFROMPARTS', - 'SWITCHOFFSET', - 'SYSDATETIME', - 'SYSDATETIMEOFFSET', - 'SYSUTCDATETIME', - 'TIMEFROMPARTS', - 'TODATETIMEOFFSET', - 'YEAR', - // Logical - 'CHOOSE', - 'COALESCE', - 'IIF', - 'NULLIF', - // Mathematical + // https://nightlies.apache.org/flink/flink-docs-release-1.16/docs/dev/table/functions/systemfunctions/ + // Arithmetic Functions + 'POWER', 'ABS', - 'ACOS', - 'ASIN', - 'ATAN', - 'ATN2', + 'SORT', + 'LN', + 'LOG10', + 'LOG2', + 'LOG', + 'EXP', + 'CEIL', 'CEILING', + 'FLOOR', + 'SIN', + 'SINH', 'COS', + 'TAN', + 'TANH', 'COT', + 'ASIN', + 'ACOS', + 'ATAN', + 'ATAN2', + 'COSH', 'DEGREES', - 'EXP', - 'FLOOR', - 'LOG', - 'LOG10', - 'PI', - 'POWER', 'RADIANS', - 'RAND', - 'ROUND', 'SIGN', - 'SIN', - 'SQRT', - 'SQUARE', - 'TAN', - // Metadata - 'APP_NAME', - 'APPLOCK_MODE', - 'APPLOCK_TEST', - 'ASSEMBLYPROPERTY', - 'COL_LENGTH', - 'COL_NAME', - 'COLUMNPROPERTY', - 'DATABASE_PRINCIPAL_ID', - 'DATABASEPROPERTYEX', - 'DB_ID', - 'DB_NAME', - 'FILE_ID', - 'FILE_IDEX', - 'FILE_NAME', - 'FILEGROUP_ID', - 'FILEGROUP_NAME', - 'FILEGROUPPROPERTY', - 'FILEPROPERTY', - 'FULLTEXTCATALOGPROPERTY', - 'FULLTEXTSERVICEPROPERTY', - 'INDEX_COL', - 'INDEXKEY_PROPERTY', - 'INDEXPROPERTY', - 'OBJECT_DEFINITION', - 'OBJECT_ID', - 'OBJECT_NAME', - 'OBJECT_SCHEMA_NAME', - 'OBJECTPROPERTY', - 'OBJECTPROPERTYEX', - 'ORIGINAL_DB_NAME', - 'PARSENAME', - 'SCHEMA_ID', - 'SCHEMA_NAME', - 'SCOPE_IDENTITY', - 'SERVERPROPERTY', - 'STATS_DATE', - 'TYPE_ID', - 'TYPE_NAME', - 'TYPEPROPERTY', - // Ranking - 'DENSE_RANK', - 'NTILE', - 'RANK', - 'ROW_NUMBER', - // Replication - 'PUBLISHINGSERVERNAME', - // Rowset - 'OPENDATASOURCE', - 'OPENQUERY', - 'OPENROWSET', - 'OPENXML', - // Security - 'CERTENCODED', - 'CERTPRIVATEKEY', - 'CURRENT_USER', - 'HAS_DBACCESS', - 'HAS_PERMS_BY_NAME', - 'IS_MEMBER', - 'IS_ROLEMEMBER', - 'IS_SRVROLEMEMBER', - 'LOGINPROPERTY', - 'ORIGINAL_LOGIN', - 'PERMISSIONS', - 'PWDENCRYPT', - 'PWDCOMPARE', - 'SESSION_USER', - 'SESSIONPROPERTY', - 'SUSER_ID', - 'SUSER_NAME', - 'SUSER_SID', - 'SUSER_SNAME', - 'SYSTEM_USER', - 'USER', - 'USER_ID', - 'USER_NAME', - // String - 'ASCII', - 'CHAR', - 'CHARINDEX', - 'CONCAT', - 'DIFFERENCE', - 'FORMAT', - 'LEFT', - 'LEN', + 'ROUND', + 'PI', + 'E', + 'RAND', + 'RAND_INTEGER', + 'UUID', + 'BIN', + 'HEX', + 'TRUNCATE', + // String Functions + 'CHAR_LENGTH', + 'CHARACTER_LENGTH', + 'UPPER', 'LOWER', + 'POSITION', + 'TRIM', 'LTRIM', - 'NCHAR', - 'PATINDEX', - 'QUOTENAME', - 'REPLACE', - 'REPLICATE', - 'REVERSE', - 'RIGHT', 'RTRIM', - 'SOUNDEX', - 'SPACE', - 'STR', - 'STUFF', + 'REPEAT', + 'REGEXP_REPLACE', + 'OVERLAY', 'SUBSTRING', - 'UNICODE', - 'UPPER', - // System - 'BINARY_CHECKSUM', - 'CHECKSUM', - 'CONNECTIONPROPERTY', - 'CONTEXT_INFO', - 'CURRENT_REQUEST_ID', - 'ERROR_LINE', - 'ERROR_NUMBER', - 'ERROR_MESSAGE', - 'ERROR_PROCEDURE', - 'ERROR_SEVERITY', - 'ERROR_STATE', - 'FORMATMESSAGE', - 'GETANSINULL', - 'GET_FILESTREAM_TRANSACTION_CONTEXT', - 'HOST_ID', - 'HOST_NAME', - 'ISNULL', - 'ISNUMERIC', - 'MIN_ACTIVE_ROWVERSION', - 'NEWID', - 'NEWSEQUENTIALID', - 'ROWCOUNT_BIG', - 'XACT_STATE', - // TextImage - 'TEXTPTR', - 'TEXTVALID', - // Trigger - 'COLUMNS_UPDATED', - 'EVENTDATA', - 'TRIGGER_NESTLEVEL', - 'UPDATE', - // ChangeTracking - 'CHANGETABLE', - 'CHANGE_TRACKING_CONTEXT', - 'CHANGE_TRACKING_CURRENT_VERSION', - 'CHANGE_TRACKING_IS_COLUMN_IN_MASK', - 'CHANGE_TRACKING_MIN_VALID_VERSION', - // FullTextSearch - 'CONTAINSTABLE', - 'FREETEXTTABLE', - // SemanticTextSearch - 'SEMANTICKEYPHRASETABLE', - 'SEMANTICSIMILARITYDETAILSTABLE', - 'SEMANTICSIMILARITYTABLE', - // FileStream - 'FILETABLEROOTPATH', - 'GETFILENAMESPACEPATH', - 'GETPATHLOCATOR', - 'PATHNAME', - // ServiceBroker - 'GET_TRANSMISSION_STATUS' + 'REPLACE', + 'REGEXP_EXTRACT', + 'INITCAP', + 'CONCAT', + 'CONCAT_WS', + 'LPAD', + 'RPAD', + 'FROM_BASE64', + 'TO_BASE64', + 'ASCII', + 'CHR', + 'DECODE', + 'ENCODE', + 'INSTR', + 'LOCATE', + 'PARSE_URL', + 'REGEXP', + 'REVERSE', + 'SPLIT_INDEX', + 'STR_TO_MAP', + 'SUBSTR', + // Temporal Functions + 'NOW', + 'CURRENT_ROW_TIMESTAMP', + 'EXTRACT', + 'YEAR', + 'QUARTER', + 'MONTH', + 'WEEK', + 'DAYOFYEAR', + 'DAYOFMONTH', + 'DAYOFWEEK', + 'HOUR', + 'MINUTE', + 'SECOND', + 'FLOOR', + 'DATE_FORMAT', + 'TIMESTAMPADD', + 'TIMESTAMPDIFF', + 'CONVERT_TZ', + 'FROM_UNIXTIME', + 'UNIX_TIMESTAMP', + 'TO_DATE', + 'TO_TIMESTAMP_LTZ', + 'TO_TIMESTAMP', + 'CURRENT_WATERMARK', + // Conditional Functions + 'COALESCE', + 'IF', + 'IFNULL', + 'IS_ALPHA', + 'IS_DECIMAL', + 'IS_DIGIT', + 'GREATEST', + 'LEAST', + // Type Conversion Functions + 'CAST', + 'TRY_CAST', + 'TYPEOF', + // Collection Functions + 'CARDINALITY', + 'ELEMENT', + 'ARRAY_CONTAINS', + // JSON Functions + 'JSON_EXISTS', + 'JSON_STRING', + 'JSON_VALUE', + 'JSON_QUERY', + 'JSON_OBJECT', + 'JSON_OBJECTAGG', + 'JSON_ARRAY', + 'JSON_ARRAYAGG', + // Grouping Functions + 'GROUP_ID', + 'GROUPING', + // Hash Functions + 'MD5', + 'SHA1', + 'SHA224', + 'SHA256', + 'SHA384', + 'SHA512', + 'SHA2', + // Aggregate Functions + 'COUNT', + 'AVG', + 'SUM', + 'MAX', + 'MIN', + 'STDDEV_POP', + 'STDDEV_SAMP', + 'VAR_POP', + 'VAR_SAMP', + 'COLLECT', + 'VARIANCE', + 'RANK', + 'DENSE_RANK', + 'ROW_NUMBER', + 'LEAD', + 'LAG', + 'FIRST_VALUE', + 'LAST_VALUE', + 'LISTAGG', + 'CUME_DIST', + 'PERCENT_RANK', + 'NTILE' ], builtinVariables: [ - // Configuration - '@@DATEFIRST', - '@@DBTS', - '@@LANGID', - '@@LANGUAGE', - '@@LOCK_TIMEOUT', - '@@MAX_CONNECTIONS', - '@@MAX_PRECISION', - '@@NESTLEVEL', - '@@OPTIONS', - '@@REMSERVER', - '@@SERVERNAME', - '@@SERVICENAME', - '@@SPID', - '@@TEXTSIZE', - '@@VERSION', - // Cursor - '@@CURSOR_ROWS', - '@@FETCH_STATUS', - // Datetime - '@@DATEFIRST', - // Metadata - '@@PROCID', - // System - '@@ERROR', - '@@IDENTITY', - '@@ROWCOUNT', - '@@TRANCOUNT', - // Stats - '@@CONNECTIONS', - '@@CPU_BUSY', - '@@IDLE', - '@@IO_BUSY', - '@@PACKET_ERRORS', - '@@PACK_RECEIVED', - '@@PACK_SENT', - '@@TIMETICKS', - '@@TOTAL_ERRORS', - '@@TOTAL_READ', - '@@TOTAL_WRITE' + // Not support + ], + typeKeywords: [ + // https://nightlies.apache.org/flink/flink-docs-release-1.16/docs/dev/table/types/#list-of-data-types + 'CHAR', + 'VARCHAR', + 'STRING', + 'BOOLEAN', + 'BINARY', + 'VARBINARY', + 'BYTES', + 'DECIMAL', + 'TINYINT', + 'SMALLINT', + 'INTEGER', + 'BIGINT', + 'FLOAT', + 'DOUBLE', + 'DATE', + 'TIME', + 'TIMESTAMP', + 'TIMESTAMP_LTZ', + 'INTERVAL', + 'ARRAY', + 'MULTISET', + 'MAP', + 'ROW', + 'RAW', + 'DEC', + 'NUMERIC', + 'INTERVAL' + ], + pseudoColumns: [ + // Not support ], - pseudoColumns: ['$ACTION', '$IDENTITY', '$ROWGUID', '$PARTITION'], tokenizer: { root: [ { include: '@comments' }, @@ -1320,84 +789,74 @@ export const language = { { include: '@strings' }, { include: '@complexIdentifiers' }, { include: '@scopes' }, - [/[;,.]/, 'delimiter'], - [/[()]/, '@brackets'], + { include: '@complexDataTypes' }, + [/[;,.]/, tokenClassConsts.DELIMITER], + [/[\(\)\[\]\{\}]/, '@brackets'], [ /[\w@#$]+/, { cases: { - '@keywords': 'keyword', - '@operators': 'operator', - '@builtinVariables': 'predefined', - '@builtinFunctions': 'predefined', - '@default': 'identifier' + '@operators': tokenClassConsts.OPERATOR_KEYWORD, + '@typeKeywords': tokenClassConsts.TYPE, + '@builtinVariables': tokenClassConsts.VARIABLE, + '@builtinFunctions': tokenClassConsts.PREDEFINED, + '@keywords': tokenClassConsts.KEYWORD, + '@default': tokenClassConsts.IDENTIFIER } } ], - [/[<>=!%&+\-*/|~^]/, 'operator'] + [/[<>=!%&+\-*/|~^]/, tokenClassConsts.OPERATOR_SYMBOL] ], - whitespace: [[/\s+/, 'white']], + whitespace: [[/[\s\t\r\n]+/, 'white']], comments: [ - [/--+.*/, 'comment'], - [/\/\*/, { token: 'comment.quote', next: '@comment' }] + [/--+.*/, tokenClassConsts.COMMENT], + [/\/\*/, { token: tokenClassConsts.COMMENT_QUOTE, next: '@comment' }] ], comment: [ - [/[^*/]+/, 'comment'], - // Not supporting nested comments, as nested comments seem to not be standard? - // i.e. http://stackoverflow.com/questions/728172/are-there-multiline-comment-delimiters-in-sql-that-are-vendor-agnostic + [/[^*/]+/, tokenClassConsts.COMMENT], // [/\/\*/, { token: 'comment.quote', next: '@push' }], // nested comment not allowed :-( - [/\*\//, { token: 'comment.quote', next: '@pop' }], - [/./, 'comment'] + [/\*\//, { token: tokenClassConsts.COMMENT_QUOTE, next: '@pop' }], + [/./, tokenClassConsts.COMMENT] ], pseudoColumns: [ [ /[$][A-Za-z_][\w@#$]*/, { cases: { - '@pseudoColumns': 'predefined', - '@default': 'identifier' + '@pseudoColumns': tokenClassConsts.PREDEFINED, + '@default': tokenClassConsts.IDENTIFIER } } ] ], numbers: [ - [/0[xX][0-9a-fA-F]*/, 'number'], - [/[$][+-]*\d*(\.\d*)?/, 'number'], - [/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, 'number'] - ], - strings: [ - [/N'/, { token: 'string', next: '@string' }], - [/'/, { token: 'string', next: '@string' }] + [/0[xX][0-9a-fA-F]*/, tokenClassConsts.NUMBER_HEX], + [/[$][+-]*\d*(\.\d*)?/, tokenClassConsts.NUMBER], + [/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, tokenClassConsts.NUMBER] ], + strings: [[/'/, { token: tokenClassConsts.STRING, next: '@string' }]], string: [ - [/[^']+/, 'string'], - [/''/, 'string'], - [/'/, { token: 'string', next: '@pop' }] + [/[^']+/, tokenClassConsts.STRING_ESCAPE], + [/''/, tokenClassConsts.STRING], + [/'/, { token: tokenClassConsts.STRING, next: '@pop' }] ], complexIdentifiers: [ - [/\[/, { token: 'identifier.quote', next: '@bracketedIdentifier' }], - [/"/, { token: 'identifier.quote', next: '@quotedIdentifier' }] - ], - bracketedIdentifier: [ - [/[^\]]+/, 'identifier'], - [/]]/, 'identifier'], - [/]/, { token: 'identifier.quote', next: '@pop' }] + [/`/, { token: tokenClassConsts.IDENTIFIER_QUOTE, next: '@quotedIdentifier' }] ], quotedIdentifier: [ - [/[^"]+/, 'identifier'], - [/""/, 'identifier'], - [/"/, { token: 'identifier.quote', next: '@pop' }] + [/[^`]+/, tokenClassConsts.IDENTIFIER_QUOTE], + [/``/, tokenClassConsts.IDENTIFIER_QUOTE], + [/`/, { token: tokenClassConsts.IDENTIFIER_QUOTE, next: '@pop' }] ], scopes: [ - [/BEGIN\s+(DISTRIBUTED\s+)?TRAN(SACTION)?\b/i, 'keyword'], - [/BEGIN\s+TRY\b/i, { token: 'keyword.try' }], - [/END\s+TRY\b/i, { token: 'keyword.try' }], - [/BEGIN\s+CATCH\b/i, { token: 'keyword.catch' }], - [/END\s+CATCH\b/i, { token: 'keyword.catch' }], - [/(BEGIN|CASE)\b/i, { token: 'keyword.block' }], - [/END\b/i, { token: 'keyword.block' }], - [/WHEN\b/i, { token: 'keyword.choice' }], - [/THEN\b/i, { token: 'keyword.choice' }] + [/(EXECUTE\s+)?BEGIN\s+STATEMENT\s+SET/i, tokenClassConsts.KEYWORD_SCOPE], + [/(EXECUTE\s+)?STATEMENT\s+SET\s+BEGIN/i, tokenClassConsts.KEYWORD_SCOPE], + [/END\b/i, { token: tokenClassConsts.KEYWORD_SCOPE }] + ], + complexDataTypes: [ + [/DOUBLE\s+PRECISION\b/i, { token: tokenClassConsts.TYPE }], + [/WITHOUT\s+TIME\s+ZONE\b/i, { token: tokenClassConsts.TYPE }], + [/WITH\s+LOCAL\s+TIME\s+ZONE\b/i, { token: tokenClassConsts.TYPE }] ] } }; diff --git a/src/main.ts b/src/main.ts index 6affc4ab..fa9ec473 100644 --- a/src/main.ts +++ b/src/main.ts @@ -9,6 +9,7 @@ export * from './languageFeatures'; export * from './setupLanguageMode'; export * from './workerManager'; export * from './common/utils'; +export * from './common/constants'; export { SyntaxContextType } from 'dt-sql-parser';