/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
define('vs/basic-languages/sql/sql',["require", "exports"], function (require, exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.language = exports.conf = void 0;
    exports.conf = {
        comments: {
            lineComment: '--',
            blockComment: ['/*', '*/']
        },
        brackets: [
            ['{', '}'],
            ['[', ']'],
            ['(', ')']
        ],
        autoClosingPairs: [
            { open: '{', close: '}' },
            { open: '[', close: ']' },
            { open: '(', close: ')' },
            { open: '"', close: '"' },
            { open: "'", close: "'" }
        ],
        surroundingPairs: [
            { open: '{', close: '}' },
            { open: '[', close: ']' },
            { open: '(', close: ')' },
            { open: '"', close: '"' },
            { open: "'", close: "'" }
        ]
    };
    exports.language = {
        defaultToken: '',
        tokenPostfix: '.sql',
        ignoreCase: true,
        brackets: [
            { open: '[', close: ']', token: 'delimiter.square' },
            { open: '(', close: ')', token: 'delimiter.parenthesis' }
        ],
        keywords: [
            'ABORT_AFTER_WAIT',
            'ABSENT',
            'ABSOLUTE',
            'ACCENT_SENSITIVITY',
            'ACTION',
            'ACTIVATION',
            'ACTIVE',
            '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',
            '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',
            'AS',
            'ASC',
            'ASSEMBLY',
            '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',
            'BEGIN',
            'BEGIN_DIALOG',
            'BIGINT',
            'BINARY',
            'BINDING',
            'BIT',
            'BLOCKERS',
            'BLOCKSIZE',
            'BOUNDING_BOX',
            'BREAK',
            'BROKER',
            'BROKER_INSTANCE',
            'BROWSE',
            'BUCKET_COUNT',
            'BUFFER',
            'BUFFERCOUNT',
            'BULK',
            'BULK_LOGGED',
            'BY',
            'CACHE',
            'CALL',
            'CALLED',
            'CALLER',
            'CAP_CPU_PERCENT',
            'CASCADE',
            'CASE',
            'CATALOG',
            'CATCH',
            'CELLS_PER_OBJECT',
            'CERTIFICATE',
            'CHANGE_RETENTION',
            'CHANGE_TRACKING',
            'CHANGES',
            'CHAR',
            'CHARACTER',
            'CHECK',
            'CHECK_CONSTRAINTS',
            'CHECK_EXPIRATION',
            'CHECK_POLICY',
            'CHECKALLOC',
            'CHECKCATALOG',
            'CHECKCONSTRAINTS',
            'CHECKDB',
            'CHECKFILEGROUP',
            'CHECKIDENT',
            'CHECKPOINT',
            'CHECKTABLE',
            'CLASSIFIER_FUNCTION',
            'CLEANTABLE',
            'CLEANUP',
            'CLEAR',
            'CLOSE',
            'CLUSTER',
            'CLUSTERED',
            'CODEPAGE',
            'COLLATE',
            'COLLECTION',
            'COLUMN',
            'COLUMN_SET',
            'COLUMNS',
            'COLUMNSTORE',
            'COLUMNSTORE_ARCHIVE',
            'COMMIT',
            'COMMITTED',
            'COMPATIBILITY_LEVEL',
            'COMPRESSION',
            'COMPUTE',
            'CONCAT',
            'CONCAT_NULL_YIELDS_NULL',
            'CONFIGURATION',
            'CONNECT',
            'CONSTRAINT',
            'CONTAINMENT',
            'CONTENT',
            'CONTEXT',
            'CONTINUE',
            'CONTINUE_AFTER_ERROR',
            'CONTRACT',
            'CONTRACT_NAME',
            'CONTROL',
            'CONVERSATION',
            'COOKIE',
            'COPY_ONLY',
            'COUNTER',
            'CPU',
            'CREATE',
            'CREATE_NEW',
            'CREATION_DISPOSITION',
            'CREDENTIAL',
            'CRYPTOGRAPHIC',
            'CUBE',
            'CURRENT',
            'CURRENT_DATE',
            'CURSOR',
            'CURSOR_CLOSE_ON_COMMIT',
            'CURSOR_DEFAULT',
            'CYCLE',
            'DATA',
            'DATA_COMPRESSION',
            'DATA_PURITY',
            'DATABASE',
            'DATABASE_DEFAULT',
            'DATABASE_MIRRORING',
            'DATABASE_SNAPSHOT',
            'DATAFILETYPE',
            'DATE',
            'DATE_CORRELATION_OPTIMIZATION',
            'DATEFIRST',
            'DATEFORMAT',
            'DATETIME',
            'DATETIME2',
            'DATETIMEOFFSET',
            'DAY',
            'DAYOFYEAR',
            'DAYS',
            'DB_CHAINING',
            'DBCC',
            'DBREINDEX',
            'DDL_DATABASE_LEVEL_EVENTS',
            'DEADLOCK_PRIORITY',
            'DEALLOCATE',
            'DEC',
            'DECIMAL',
            'DECLARE',
            'DECRYPTION',
            'DEFAULT',
            'DEFAULT_DATABASE',
            'DEFAULT_FULLTEXT_LANGUAGE',
            'DEFAULT_LANGUAGE',
            'DEFAULT_SCHEMA',
            'DEFINITION',
            'DELAY',
            'DELAYED_DURABILITY',
            'DELETE',
            'DELETED',
            'DENSITY_VECTOR',
            'DENY',
            'DEPENDENTS',
            'DES',
            'DESC',
            'DESCRIPTION',
            'DESX',
            'DHCP',
            'DIAGNOSTICS',
            'DIALOG',
            'DIFFERENTIAL',
            'DIRECTORY_NAME',
            'DISABLE',
            'DISABLE_BROKER',
            'DISABLED',
            'DISK',
            'DISTINCT',
            'DISTRIBUTED',
            'DOCUMENT',
            'DOUBLE',
            'DROP',
            'DROP_EXISTING',
            'DROPCLEANBUFFERS',
            'DUMP',
            'DURABILITY',
            'DYNAMIC',
            'EDITION',
            'ELEMENTS',
            'ELSE',
            'EMERGENCY',
            'EMPTY',
            'EMPTYFILE',
            'ENABLE',
            'ENABLE_BROKER',
            'ENABLED',
            'ENCRYPTION',
            'END',
            'ENDPOINT',
            'ENDPOINT_URL',
            'ERRLVL',
            'ERROR',
            'ERROR_BROKER_CONVERSATIONS',
            'ERRORFILE',
            'ESCAPE',
            'ESTIMATEONLY',
            'EVENT',
            'EVENT_RETENTION_MODE',
            'EXEC',
            'EXECUTABLE',
            'EXECUTE',
            'EXIT',
            'EXPAND',
            'EXPIREDATE',
            'EXPIRY_DATE',
            'EXPLICIT',
            'EXTENDED_LOGICAL_CHECKS',
            'EXTENSION',
            'EXTERNAL',
            'EXTERNAL_ACCESS',
            'FAIL_OPERATION',
            'FAILOVER',
            'FAILOVER_MODE',
            'FAILURE_CONDITION_LEVEL',
            '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',
            'FIRST',
            'FIRSTROW',
            'FLOAT',
            'FMTONLY',
            'FOLLOWING',
            'FOR',
            'FORCE',
            'FORCE_FAILOVER_ALLOW_DATA_LOSS',
            'FORCE_SERVICE_ALLOW_DATA_LOSS',
            'FORCED',
            'FORCEPLAN',
            'FORCESCAN',
            'FORCESEEK',
            'FOREIGN',
            'FORMATFILE',
            'FORMSOF',
            'FORWARD_ONLY',
            'FREE',
            'FREEPROCCACHE',
            'FREESESSIONCACHE',
            'FREESYSTEMCACHE',
            'FROM',
            'FULL',
            'FULLSCAN',
            'FULLTEXT',
            'FUNCTION',
            'GB',
            'GEOGRAPHY_AUTO_GRID',
            'GEOGRAPHY_GRID',
            'GEOMETRY_AUTO_GRID',
            'GEOMETRY_GRID',
            'GET',
            'GLOBAL',
            'GO',
            'GOTO',
            'GOVERNOR',
            'GRANT',
            'GRIDS',
            'GROUP',
            'GROUP_MAX_REQUESTS',
            'HADR',
            'HASH',
            'HASHED',
            'HAVING',
            'HEADERONLY',
            'HEALTH_CHECK_TIMEOUT',
            'HELP',
            'HIERARCHYID',
            'HIGH',
            'HINT',
            'HISTOGRAM',
            'HOLDLOCK',
            'HONOR_BROKER_PRIORITY',
            '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',
            'INCLUDE',
            'INCREMENT',
            'INCREMENTAL',
            'INDEX',
            'INDEXDEFRAG',
            'INFINITE',
            'INFLECTIONAL',
            'INIT',
            'INITIATOR',
            'INPUT',
            'INPUTBUFFER',
            'INSENSITIVE',
            'INSERT',
            'INSERTED',
            'INSTEAD',
            'INT',
            'INTEGER',
            'INTO',
            'IO',
            'IP',
            'ISABOUT',
            'ISOLATION',
            'JOB',
            'KB',
            'KEEP',
            'KEEP_CDC',
            'KEEP_NULLS',
            'KEEP_REPLICATION',
            'KEEPDEFAULTS',
            'KEEPFIXED',
            'KEEPIDENTITY',
            'KEEPNULLS',
            'KERBEROS',
            'KEY',
            'KEY_SOURCE',
            'KEYS',
            'KEYSET',
            'KILL',
            'KILOBYTES_PER_BATCH',
            'LABELONLY',
            'LANGUAGE',
            'LAST',
            'LASTROW',
            'LEVEL',
            'LEVEL_1',
            'LEVEL_2',
            'LEVEL_3',
            'LEVEL_4',
            'LIFETIME',
            'LIMIT',
            'LINENO',
            'LIST',
            'LISTENER',
            'LISTENER_IP',
            'LISTENER_PORT',
            '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',
            'MEMBER',
            'MEMORY_OPTIMIZED',
            'MEMORY_OPTIMIZED_DATA',
            'MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT',
            'MEMORY_PARTITION_MODE',
            'MERGE',
            'MESSAGE',
            'MESSAGE_FORWARD_SIZE',
            'MESSAGE_FORWARDING',
            'MICROSECOND',
            'MILLISECOND',
            'MIN_CPU_PERCENT',
            'MIN_IOPS_PER_VOLUME',
            'MIN_MEMORY_PERCENT',
            'MINUTE',
            'MINUTES',
            'MINVALUE',
            'MIRROR',
            'MIRROR_ADDRESS',
            'MODIFY',
            'MONEY',
            'MONTH',
            'MOVE',
            'MULTI_USER',
            'MUST_CHANGE',
            'NAME',
            'NANOSECOND',
            'NATIONAL',
            'NATIVE_COMPILATION',
            'NCHAR',
            'NEGOTIATE',
            'NESTED_TRIGGERS',
            'NEW_ACCOUNT',
            'NEW_BROKER',
            'NEW_PASSWORD',
            'NEWNAME',
            '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',
            'NUMERIC',
            'NUMERIC_ROUNDABORT',
            'NVARCHAR',
            'OBJECT',
            'OF',
            'OFF',
            'OFFLINE',
            'OFFSET',
            'OFFSETS',
            'OLD_ACCOUNT',
            'OLD_PASSWORD',
            'ON',
            'ON_FAILURE',
            'ONLINE',
            'ONLY',
            'OPEN',
            'OPEN_EXISTING',
            'OPENTRAN',
            'OPTIMISTIC',
            'OPTIMIZE',
            'OPTION',
            'ORDER',
            'OUT',
            'OUTPUT',
            'OUTPUTBUFFER',
            'OVER',
            'OVERRIDE',
            'OWNER',
            'OWNERSHIP',
            'PAD_INDEX',
            'PAGE',
            'PAGE_VERIFY',
            'PAGECOUNT',
            'PAGLOCK',
            'PARAMETERIZATION',
            'PARSEONLY',
            'PARTIAL',
            'PARTITION',
            'PARTITIONS',
            'PARTNER',
            'PASSWORD',
            'PATH',
            'PER_CPU',
            'PER_NODE',
            'PERCENT',
            'PERMISSION_SET',
            'PERSISTED',
            'PHYSICAL_ONLY',
            'PLAN',
            'POISON_MESSAGE_HANDLING',
            'POOL',
            'POPULATION',
            'PORT',
            'PRECEDING',
            'PRECISION',
            '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',
            'QUARTER',
            'QUERY',
            'QUERY_GOVERNOR_COST_LIMIT',
            'QUEUE',
            'QUEUE_DELAY',
            'QUOTED_IDENTIFIER',
            'RAISERROR',
            'RANGE',
            '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',
            'REAL',
            'REBUILD',
            'RECEIVE',
            'RECOMPILE',
            'RECONFIGURE',
            'RECOVERY',
            'RECURSIVE',
            'RECURSIVE_TRIGGERS',
            'REFERENCES',
            'REGENERATE',
            'RELATED_CONVERSATION',
            'RELATED_CONVERSATION_GROUP',
            'RELATIVE',
            'REMOTE',
            'REMOTE_PROC_TRANSACTIONS',
            'REMOTE_SERVICE_NAME',
            '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',
            'RESET',
            'RESOURCE',
            'RESTART',
            'RESTORE',
            'RESTRICT',
            'RESTRICTED_USER',
            'RESULT',
            'RESUME',
            'RETAINDAYS',
            'RETENTION',
            'RETURN',
            'RETURNS',
            'REVERT',
            'REVOKE',
            'REWIND',
            'REWINDONLY',
            'ROBUST',
            'ROLE',
            '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',
            'SCROLL',
            'SCROLL_LOCKS',
            'SEARCH',
            'SECOND',
            'SECONDARY',
            'SECONDARY_ONLY',
            'SECONDARY_ROLE',
            'SECONDS',
            'SECRET',
            'SECURITY_LOG',
            'SECURITYAUDIT',
            'SELECT',
            'SELECTIVE',
            'SELF',
            'SEND',
            'SENT',
            'SEQUENCE',
            'SERIALIZABLE',
            'SERVER',
            'SERVICE',
            'SERVICE_BROKER',
            'SERVICE_NAME',
            'SESSION',
            'SESSION_TIMEOUT',
            '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',
            'SIZE',
            'SKIP',
            'SMALLDATETIME',
            'SMALLINT',
            'SMALLMONEY',
            'SNAPSHOT',
            'SORT_IN_TEMPDB',
            'SOURCE',
            'SPARSE',
            'SPATIAL',
            'SPATIAL_WINDOW_MAX_CELLS',
            'SPECIFICATION',
            'SPLIT',
            'SQL',
            'SQL_VARIANT',
            'SQLPERF',
            'STANDBY',
            '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',
            'SYMMETRIC',
            'SYNCHRONOUS_COMMIT',
            'SYNONYM',
            'SYSNAME',
            'SYSTEM',
            'TABLE',
            'TABLERESULTS',
            'TABLESAMPLE',
            'TABLOCK',
            'TABLOCKX',
            'TAKE',
            'TAPE',
            'TARGET',
            'TARGET_RECOVERY_TIME',
            'TB',
            'TCP',
            'TEXT',
            'TEXTIMAGE_ON',
            'TEXTSIZE',
            'THEN',
            'THESAURUS',
            'THROW',
            'TIES',
            'TIME',
            'TIMEOUT',
            'TIMER',
            'TIMESTAMP',
            'TINYINT',
            'TO',
            'TOP',
            'TORN_PAGE_DETECTION',
            'TRACEOFF',
            'TRACEON',
            'TRACESTATUS',
            'TRACK_CAUSALITY',
            'TRACK_COLUMNS_UPDATED',
            'TRAN',
            'TRANSACTION',
            'TRANSFER',
            'TRANSFORM_NOISE_WORDS',
            'TRIGGER',
            'TRIPLE_DES',
            'TRIPLE_DES_3KEY',
            'TRUE',
            'TRUNCATE',
            'TRUNCATEONLY',
            'TRUSTWORTHY',
            'TRY',
            'TSQL',
            'TWO_DIGIT_YEAR_CUTOFF',
            'TYPE',
            'TYPE_WARNING',
            'UNBOUNDED',
            'UNCHECKED',
            'UNCOMMITTED',
            'UNDEFINED',
            'UNIQUE',
            'UNIQUEIDENTIFIER',
            'UNKNOWN',
            'UNLIMITED',
            'UNLOAD',
            'UNSAFE',
            'UPDATE',
            'UPDATETEXT',
            'UPDATEUSAGE',
            'UPDLOCK',
            'URL',
            'USE',
            'USED',
            'USER',
            'USEROPTIONS',
            'USING',
            'VALID_XML',
            'VALIDATION',
            'VALUE',
            'VALUES',
            'VARBINARY',
            'VARCHAR',
            'VARYING',
            'VERIFYONLY',
            'VERSION',
            'VIEW',
            'VIEW_METADATA',
            'VIEWS',
            'VISIBILITY',
            'WAIT_AT_LOW_PRIORITY',
            'WAITFOR',
            'WEEK',
            'WEIGHT',
            'WELL_FORMED_XML',
            'WHEN',
            'WHERE',
            'WHILE',
            'WINDOWS',
            'WITH',
            'WITHIN',
            'WITHOUT',
            'WITNESS',
            'WORK',
            'WORKLOAD',
            'WRITETEXT',
            'XACT_ABORT',
            'XLOCK',
            'XMAX',
            'XMIN',
            'XML',
            'XMLDATA',
            'XMLNAMESPACES',
            'XMLSCHEMA',
            'XQUERY',
            'XSINIL',
            'YEAR',
            'YMAX',
            'YMIN'
        ],
        operators: [
            // Logical
            'ALL',
            'AND',
            'ANY',
            'BETWEEN',
            'EXISTS',
            'IN',
            'LIKE',
            'NOT',
            'OR',
            'SOME',
            // Set
            'EXCEPT',
            'INTERSECT',
            'UNION',
            // Join
            'APPLY',
            'CROSS',
            'FULL',
            'INNER',
            'JOIN',
            'LEFT',
            'OUTER',
            'RIGHT',
            // Predicates
            'CONTAINS',
            'FREETEXT',
            'IS',
            'NULL',
            // Pivoting
            'PIVOT',
            'UNPIVOT',
            // Merging
            'MATCHED'
        ],
        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
            'ABS',
            'ACOS',
            'ASIN',
            'ATAN',
            'ATN2',
            'CEILING',
            'COS',
            'COT',
            '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',
            'LOWER',
            'LTRIM',
            'NCHAR',
            'PATINDEX',
            'QUOTENAME',
            'REPLACE',
            'REPLICATE',
            'REVERSE',
            'RIGHT',
            'RTRIM',
            'SOUNDEX',
            'SPACE',
            'STR',
            'STUFF',
            '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'
        ],
        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'
        ],
        pseudoColumns: ['$ACTION', '$IDENTITY', '$ROWGUID', '$PARTITION'],
        tokenizer: {
            root: [
                { include: '@comments' },
                { include: '@whitespace' },
                { include: '@pseudoColumns' },
                { include: '@numbers' },
                { include: '@strings' },
                { include: '@complexIdentifiers' },
                { include: '@scopes' },
                [/[;,.]/, 'delimiter'],
                [/[()]/, '@brackets'],
                [
                    /[\w@#$]+/,
                    {
                        cases: {
                            '@keywords': 'keyword',
                            '@operators': 'operator',
                            '@builtinVariables': 'predefined',
                            '@builtinFunctions': 'predefined',
                            '@default': 'identifier'
                        }
                    }
                ],
                [/[<>=!%&+\-*/|~^]/, 'operator']
            ],
            whitespace: [[/\s+/, 'white']],
            comments: [
                [/--+.*/, 'comment'],
                [/\/\*/, { token: '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
                // [/\/\*/, { token: 'comment.quote', next: '@push' }],    // nested comment not allowed :-(
                [/\*\//, { token: 'comment.quote', next: '@pop' }],
                [/./, 'comment']
            ],
            pseudoColumns: [
                [
                    /[$][A-Za-z_][\w@#$]*/,
                    {
                        cases: {
                            '@pseudoColumns': 'predefined',
                            '@default': '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' }]
            ],
            string: [
                [/[^']+/, 'string'],
                [/''/, 'string'],
                [/'/, { token: 'string', next: '@pop' }]
            ],
            complexIdentifiers: [
                [/\[/, { token: 'identifier.quote', next: '@bracketedIdentifier' }],
                [/"/, { token: 'identifier.quote', next: '@quotedIdentifier' }]
            ],
            bracketedIdentifier: [
                [/[^\]]+/, 'identifier'],
                [/]]/, 'identifier'],
                [/]/, { token: 'identifier.quote', next: '@pop' }]
            ],
            quotedIdentifier: [
                [/[^"]+/, 'identifier'],
                [/""/, 'identifier'],
                [/"/, { token: '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' }]
            ]
        }
    };
});

