ソースを参照

Update mysq, pgsql and sqll keywords (fixes microsoft/monaco-editor#2706)

Alex Dima 3 年 前
コミット
4ed52cbd2b

+ 32 - 0
src/mysql/keywords.js

@@ -0,0 +1,32 @@
+/*---------------------------------------------------------------------------------------------
+ *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+const fs = require('fs');
+const path = require('path');
+
+const keywords = getMySQLKeywords();
+keywords.sort();
+console.log(`'${keywords.join("',\n'")}'`);
+
+function getMySQLKeywords() {
+	// https://dev.mysql.com/doc/refman/8.0/en/keywords.html
+	const lines = fs
+		.readFileSync(path.join(__dirname, 'keywords.mysql.txt'))
+		.toString()
+		.split(/\r\n|\r|\n/);
+	const tokens = [];
+	for (let line of lines) {
+		// Treat ; as a comment marker
+		line = line.replace(/;.*$/, '');
+		line = line.trim();
+		// Only consider reserved keywords
+		if (!/ \(R\)$/.test(line)) {
+			continue;
+		}
+		line = line.replace(/ \(R\)$/, '');
+		tokens.push(line);
+	}
+	return tokens;
+}

+ 750 - 0
src/mysql/keywords.mysql.txt

@@ -0,0 +1,750 @@
+ACCESSIBLE (R)
+ACCOUNT
+ACTION
+ACTIVE; added in 8.0.14 (nonreserved)
+ADD (R)
+ADMIN; became nonreserved in 8.0.12
+AFTER
+AGAINST
+AGGREGATE
+ALGORITHM
+ALL (R)
+ALTER (R)
+ALWAYS
+ANALYSE; removed in 8.0.1
+ANALYZE (R)
+AND (R)
+ANY
+ARRAY; added in 8.0.17 (reserved); became nonreserved in 8.0.19
+AS (R)
+ASC (R)
+ASCII
+ASENSITIVE (R)
+AT
+ATTRIBUTE; added in 8.0.21 (nonreserved)
+AUTHENTICATION; added in 8.0.27 (nonreserved)
+AUTOEXTEND_SIZE
+AUTO_INCREMENT
+AVG
+AVG_ROW_LENGTH
+BACKUP
+BEFORE (R)
+BEGIN
+BETWEEN (R)
+BIGINT (R)
+BINARY (R)
+BINLOG
+BIT
+BLOB (R)
+BLOCK
+BOOL
+BOOLEAN
+BOTH (R)
+BTREE
+BUCKETS; added in 8.0.2 (nonreserved)
+BY (R)
+BYTE
+CACHE
+CALL (R)
+CASCADE (R)
+CASCADED
+CASE (R)
+CATALOG_NAME
+CHAIN
+CHALLENGE_RESPONSE; added in 8.0.27 (nonreserved)
+CHANGE (R)
+CHANGED
+CHANNEL
+CHAR (R)
+CHARACTER (R)
+CHARSET
+CHECK (R)
+CHECKSUM
+CIPHER
+CLASS_ORIGIN
+CLIENT
+CLONE; added in 8.0.3 (nonreserved)
+CLOSE
+COALESCE
+CODE
+COLLATE (R)
+COLLATION
+COLUMN (R)
+COLUMNS
+COLUMN_FORMAT
+COLUMN_NAME
+COMMENT
+COMMIT
+COMMITTED
+COMPACT
+COMPLETION
+COMPONENT
+COMPRESSED
+COMPRESSION
+CONCURRENT
+CONDITION (R)
+CONNECTION
+CONSISTENT
+CONSTRAINT (R)
+CONSTRAINT_CATALOG
+CONSTRAINT_NAME
+CONSTRAINT_SCHEMA
+CONTAINS
+CONTEXT
+CONTINUE (R)
+CONVERT (R)
+CPU
+CREATE (R)
+CROSS (R)
+CUBE (R); became reserved in 8.0.1
+CUME_DIST (R); added in 8.0.2 (reserved)
+CURRENT
+CURRENT_DATE (R)
+CURRENT_TIME (R)
+CURRENT_TIMESTAMP (R)
+CURRENT_USER (R)
+CURSOR (R)
+CURSOR_NAME
+DATA
+DATABASE (R)
+DATABASES (R)
+DATAFILE
+DATE
+DATETIME
+DAY
+DAY_HOUR (R)
+DAY_MICROSECOND (R)
+DAY_MINUTE (R)
+DAY_SECOND (R)
+DEALLOCATE
+DEC (R)
+DECIMAL (R)
+DECLARE (R)
+DEFAULT (R)
+DEFAULT_AUTH
+DEFINER
+DEFINITION; added in 8.0.4 (nonreserved)
+DELAYED (R)
+DELAY_KEY_WRITE
+DELETE (R)
+DENSE_RANK (R); added in 8.0.2 (reserved)
+DESC (R)
+DESCRIBE (R)
+DESCRIPTION; added in 8.0.4 (nonreserved)
+DES_KEY_FILE; removed in 8.0.3
+DETERMINISTIC (R)
+DIAGNOSTICS
+DIRECTORY
+DISABLE
+DISCARD
+DISK
+DISTINCT (R)
+DISTINCTROW (R)
+DIV (R)
+DO
+DOUBLE (R)
+DROP (R)
+DUAL (R)
+DUMPFILE
+DUPLICATE
+DYNAMIC
+EACH (R)
+ELSE (R)
+ELSEIF (R)
+EMPTY (R); added in 8.0.4 (reserved)
+ENABLE
+ENCLOSED (R)
+ENCRYPTION
+END
+ENDS
+ENFORCED; added in 8.0.16 (nonreserved)
+ENGINE
+ENGINES
+ENGINE_ATTRIBUTE; added in 8.0.21 (nonreserved)
+ENUM
+ERROR
+ERRORS
+ESCAPE
+ESCAPED (R)
+EVENT
+EVENTS
+EVERY
+EXCEPT (R)
+EXCHANGE
+EXCLUDE; added in 8.0.2 (nonreserved)
+EXECUTE
+EXISTS (R)
+EXIT (R)
+EXPANSION
+EXPIRE
+EXPLAIN (R)
+EXPORT
+EXTENDED
+EXTENT_SIZE
+FACTOR; added in 8.0.27 (nonreserved)
+FAILED_LOGIN_ATTEMPTS; added in 8.0.19 (nonreserved)
+FALSE (R)
+FAST
+FAULTS
+FETCH (R)
+FIELDS
+FILE
+FILE_BLOCK_SIZE
+FILTER
+FINISH; added in 8.0.27 (nonreserved)
+FIRST
+FIRST_VALUE (R); added in 8.0.2 (reserved)
+FIXED
+FLOAT (R)
+FLOAT4 (R)
+FLOAT8 (R)
+FLUSH
+FOLLOWING; added in 8.0.2 (nonreserved)
+FOLLOWS
+FOR (R)
+FORCE (R)
+FOREIGN (R)
+FORMAT
+FOUND
+FROM (R)
+FULL
+FULLTEXT (R)
+FUNCTION (R); became reserved in 8.0.1
+GENERAL
+GENERATED (R)
+GEOMCOLLECTION; added in 8.0.11 (nonreserved)
+GEOMETRY
+GEOMETRYCOLLECTION
+GET (R)
+GET_FORMAT
+GET_MASTER_PUBLIC_KEY; added in 8.0.4 (reserved); became nonreserved in 8.0.11
+GET_SOURCE_PUBLIC_KEY; added in 8.0.23 (nonreserved)
+GLOBAL
+GRANT (R)
+GRANTS
+GROUP (R)
+GROUPING (R); added in 8.0.1 (reserved)
+GROUPS (R); added in 8.0.2 (reserved)
+GROUP_REPLICATION
+GTID_ONLY; added in 8.0.27 (nonreserved)
+HANDLER
+HASH
+HAVING (R)
+HELP
+HIGH_PRIORITY (R)
+HISTOGRAM; added in 8.0.2 (nonreserved)
+HISTORY; added in 8.0.3 (nonreserved)
+HOST
+HOSTS
+HOUR
+HOUR_MICROSECOND (R)
+HOUR_MINUTE (R)
+HOUR_SECOND (R)
+IDENTIFIED
+IF (R)
+IGNORE (R)
+IGNORE_SERVER_IDS
+IMPORT
+IN (R)
+INACTIVE; added in 8.0.14 (nonreserved)
+INDEX (R)
+INDEXES
+INFILE (R)
+INITIAL; added in 8.0.27 (nonreserved)
+INITIAL_SIZE
+INITIATE; added in 8.0.27 (nonreserved)
+INNER (R)
+INOUT (R)
+INSENSITIVE (R)
+INSERT (R)
+INSERT_METHOD
+INSTALL
+INSTANCE
+INT (R)
+INT1 (R)
+INT2 (R)
+INT3 (R)
+INT4 (R)
+INT8 (R)
+INTEGER (R)
+INTERVAL (R)
+INTO (R)
+INVISIBLE
+INVOKER
+IO
+IO_AFTER_GTIDS (R)
+IO_BEFORE_GTIDS (R)
+IO_THREAD
+IPC
+IS (R)
+ISOLATION
+ISSUER
+ITERATE (R)
+JOIN (R)
+JSON
+JSON_TABLE (R); added in 8.0.4 (reserved)
+JSON_VALUE; added in 8.0.21 (nonreserved)
+KEY (R)
+KEYRING; added in 8.0.24 (nonreserved)
+KEYS (R)
+KEY_BLOCK_SIZE
+KILL (R)
+LAG (R); added in 8.0.2 (reserved)
+LANGUAGE
+LAST
+LAST_VALUE (R); added in 8.0.2 (reserved)
+LATERAL (R); added in 8.0.14 (reserved)
+LEAD (R); added in 8.0.2 (reserved)
+LEADING (R)
+LEAVE (R)
+LEAVES
+LEFT (R)
+LESS
+LEVEL
+LIKE (R)
+LIMIT (R)
+LINEAR (R)
+LINES (R)
+LINESTRING
+LIST
+LOAD (R)
+LOCAL
+LOCALTIME (R)
+LOCALTIMESTAMP (R)
+LOCK (R)
+LOCKED; added in 8.0.1 (nonreserved)
+LOCKS
+LOGFILE
+LOGS
+LONG (R)
+LONGBLOB (R)
+LONGTEXT (R)
+LOOP (R)
+LOW_PRIORITY (R)
+MASTER
+MASTER_AUTO_POSITION
+MASTER_BIND (R)
+MASTER_COMPRESSION_ALGORITHMS; added in 8.0.18 (nonreserved)
+MASTER_CONNECT_RETRY
+MASTER_DELAY
+MASTER_HEARTBEAT_PERIOD
+MASTER_HOST
+MASTER_LOG_FILE
+MASTER_LOG_POS
+MASTER_PASSWORD
+MASTER_PORT
+MASTER_PUBLIC_KEY_PATH; added in 8.0.4 (nonreserved)
+MASTER_RETRY_COUNT
+MASTER_SERVER_ID; removed in 8.0.23
+MASTER_SSL
+MASTER_SSL_CA
+MASTER_SSL_CAPATH
+MASTER_SSL_CERT
+MASTER_SSL_CIPHER
+MASTER_SSL_CRL
+MASTER_SSL_CRLPATH
+MASTER_SSL_KEY
+MASTER_SSL_VERIFY_SERVER_CERT (R)
+MASTER_TLS_CIPHERSUITES; added in 8.0.19 (nonreserved)
+MASTER_TLS_VERSION
+MASTER_USER
+MASTER_ZSTD_COMPRESSION_LEVEL; added in 8.0.18 (nonreserved)
+MATCH (R)
+MAXVALUE (R)
+MAX_CONNECTIONS_PER_HOUR
+MAX_QUERIES_PER_HOUR
+MAX_ROWS
+MAX_SIZE
+MAX_UPDATES_PER_HOUR
+MAX_USER_CONNECTIONS
+MEDIUM
+MEDIUMBLOB (R)
+MEDIUMINT (R)
+MEDIUMTEXT (R)
+MEMBER; added in 8.0.17 (reserved); became nonreserved in 8.0.19
+MEMORY
+MERGE
+MESSAGE_TEXT
+MICROSECOND
+MIDDLEINT (R)
+MIGRATE
+MINUTE
+MINUTE_MICROSECOND (R)
+MINUTE_SECOND (R)
+MIN_ROWS
+MOD (R)
+MODE
+MODIFIES (R)
+MODIFY
+MONTH
+MULTILINESTRING
+MULTIPOINT
+MULTIPOLYGON
+MUTEX
+MYSQL_ERRNO
+NAME
+NAMES
+NATIONAL
+NATURAL (R)
+NCHAR
+NDB
+NDBCLUSTER
+NESTED; added in 8.0.4 (nonreserved)
+NETWORK_NAMESPACE; added in 8.0.16 (nonreserved)
+NEVER
+NEW
+NEXT
+NO
+NODEGROUP
+NONE
+NOT (R)
+NOWAIT; added in 8.0.1 (nonreserved)
+NO_WAIT
+NO_WRITE_TO_BINLOG (R)
+NTH_VALUE (R); added in 8.0.2 (reserved)
+NTILE (R); added in 8.0.2 (reserved)
+NULL (R)
+NULLS; added in 8.0.2 (nonreserved)
+NUMBER
+NUMERIC (R)
+NVARCHAR
+OF (R); added in 8.0.1 (reserved)
+OFF; added in 8.0.20 (nonreserved)
+OFFSET
+OJ; added in 8.0.16 (nonreserved)
+OLD; added in 8.0.14 (nonreserved)
+ON (R)
+ONE
+ONLY
+OPEN
+OPTIMIZE (R)
+OPTIMIZER_COSTS (R)
+OPTION (R)
+OPTIONAL; added in 8.0.13 (nonreserved)
+OPTIONALLY (R)
+OPTIONS
+OR (R)
+ORDER (R)
+ORDINALITY; added in 8.0.4 (nonreserved)
+ORGANIZATION; added in 8.0.4 (nonreserved)
+OTHERS; added in 8.0.2 (nonreserved)
+OUT (R)
+OUTER (R)
+OUTFILE (R)
+OVER (R); added in 8.0.2 (reserved)
+OWNER
+PACK_KEYS
+PAGE
+PARSER
+PARTIAL
+PARTITION (R)
+PARTITIONING
+PARTITIONS
+PASSWORD
+PASSWORD_LOCK_TIME; added in 8.0.19 (nonreserved)
+PATH; added in 8.0.4 (nonreserved)
+PERCENT_RANK (R); added in 8.0.2 (reserved)
+PERSIST; became nonreserved in 8.0.16
+PERSIST_ONLY; added in 8.0.2 (reserved); became nonreserved in 8.0.16
+PHASE
+PLUGIN
+PLUGINS
+PLUGIN_DIR
+POINT
+POLYGON
+PORT
+PRECEDES
+PRECEDING; added in 8.0.2 (nonreserved)
+PRECISION (R)
+PREPARE
+PRESERVE
+PREV
+PRIMARY (R)
+PRIVILEGES
+PRIVILEGE_CHECKS_USER; added in 8.0.18 (nonreserved)
+PROCEDURE (R)
+PROCESS; added in 8.0.11 (nonreserved)
+PROCESSLIST
+PROFILE
+PROFILES
+PROXY
+PURGE (R)
+QUARTER
+QUERY
+QUICK
+RANDOM; added in 8.0.18 (nonreserved)
+RANGE (R)
+RANK (R); added in 8.0.2 (reserved)
+READ (R)
+READS (R)
+READ_ONLY
+READ_WRITE (R)
+REAL (R)
+REBUILD
+RECOVER
+RECURSIVE (R); added in 8.0.1 (reserved)
+REDOFILE; removed in 8.0.3
+REDO_BUFFER_SIZE
+REDUNDANT
+REFERENCE; added in 8.0.4 (nonreserved)
+REFERENCES (R)
+REGEXP (R)
+REGISTRATION; added in 8.0.27 (nonreserved)
+RELAY
+RELAYLOG
+RELAY_LOG_FILE
+RELAY_LOG_POS
+RELAY_THREAD
+RELEASE (R)
+RELOAD
+REMOTE; added in 8.0.3 (nonreserved); removed in 8.0.14
+REMOVE
+RENAME (R)
+REORGANIZE
+REPAIR
+REPEAT (R)
+REPEATABLE
+REPLACE (R)
+REPLICA; added in 8.0.22 (nonreserved)
+REPLICAS; added in 8.0.22 (nonreserved)
+REPLICATE_DO_DB
+REPLICATE_DO_TABLE
+REPLICATE_IGNORE_DB
+REPLICATE_IGNORE_TABLE
+REPLICATE_REWRITE_DB
+REPLICATE_WILD_DO_TABLE
+REPLICATE_WILD_IGNORE_TABLE
+REPLICATION
+REQUIRE (R)
+REQUIRE_ROW_FORMAT; added in 8.0.19 (nonreserved)
+RESET
+RESIGNAL (R)
+RESOURCE; added in 8.0.3 (nonreserved)
+RESPECT; added in 8.0.2 (nonreserved)
+RESTART; added in 8.0.4 (nonreserved)
+RESTORE
+RESTRICT (R)
+RESUME
+RETAIN; added in 8.0.14 (nonreserved)
+RETURN (R)
+RETURNED_SQLSTATE
+RETURNING; added in 8.0.21 (nonreserved)
+RETURNS
+REUSE; added in 8.0.3 (nonreserved)
+REVERSE
+REVOKE (R)
+RIGHT (R)
+RLIKE (R)
+ROLE; became nonreserved in 8.0.1
+ROLLBACK
+ROLLUP
+ROTATE
+ROUTINE
+ROW (R); became reserved in 8.0.2
+ROWS (R); became reserved in 8.0.2
+ROW_COUNT
+ROW_FORMAT
+ROW_NUMBER (R); added in 8.0.2 (reserved)
+RTREE
+SAVEPOINT
+SCHEDULE
+SCHEMA (R)
+SCHEMAS (R)
+SCHEMA_NAME
+SECOND
+SECONDARY; added in 8.0.16 (nonreserved)
+SECONDARY_ENGINE; added in 8.0.13 (nonreserved)
+SECONDARY_ENGINE_ATTRIBUTE; added in 8.0.21 (nonreserved)
+SECONDARY_LOAD; added in 8.0.13 (nonreserved)
+SECONDARY_UNLOAD; added in 8.0.13 (nonreserved)
+SECOND_MICROSECOND (R)
+SECURITY
+SELECT (R)
+SENSITIVE (R)
+SEPARATOR (R)
+SERIAL
+SERIALIZABLE
+SERVER
+SESSION
+SET (R)
+SHARE
+SHOW (R)
+SHUTDOWN
+SIGNAL (R)
+SIGNED
+SIMPLE
+SKIP; added in 8.0.1 (nonreserved)
+SLAVE
+SLOW
+SMALLINT (R)
+SNAPSHOT
+SOCKET
+SOME
+SONAME
+SOUNDS
+SOURCE
+SOURCE_AUTO_POSITION; added in 8.0.23 (nonreserved)
+SOURCE_BIND; added in 8.0.23 (nonreserved)
+SOURCE_COMPRESSION_ALGORITHMS; added in 8.0.23 (nonreserved)
+SOURCE_CONNECT_RETRY; added in 8.0.23 (nonreserved)
+SOURCE_DELAY; added in 8.0.23 (nonreserved)
+SOURCE_HEARTBEAT_PERIOD; added in 8.0.23 (nonreserved)
+SOURCE_HOST; added in 8.0.23 (nonreserved)
+SOURCE_LOG_FILE; added in 8.0.23 (nonreserved)
+SOURCE_LOG_POS; added in 8.0.23 (nonreserved)
+SOURCE_PASSWORD; added in 8.0.23 (nonreserved)
+SOURCE_PORT; added in 8.0.23 (nonreserved)
+SOURCE_PUBLIC_KEY_PATH; added in 8.0.23 (nonreserved)
+SOURCE_RETRY_COUNT; added in 8.0.23 (nonreserved)
+SOURCE_SSL; added in 8.0.23 (nonreserved)
+SOURCE_SSL_CA; added in 8.0.23 (nonreserved)
+SOURCE_SSL_CAPATH; added in 8.0.23 (nonreserved)
+SOURCE_SSL_CERT; added in 8.0.23 (nonreserved)
+SOURCE_SSL_CIPHER; added in 8.0.23 (nonreserved)
+SOURCE_SSL_CRL; added in 8.0.23 (nonreserved)
+SOURCE_SSL_CRLPATH; added in 8.0.23 (nonreserved)
+SOURCE_SSL_KEY; added in 8.0.23 (nonreserved)
+SOURCE_SSL_VERIFY_SERVER_CERT; added in 8.0.23 (nonreserved)
+SOURCE_TLS_CIPHERSUITES; added in 8.0.23 (nonreserved)
+SOURCE_TLS_VERSION; added in 8.0.23 (nonreserved)
+SOURCE_USER; added in 8.0.23 (nonreserved)
+SOURCE_ZSTD_COMPRESSION_LEVEL; added in 8.0.23 (nonreserved)
+SPATIAL (R)
+SPECIFIC (R)
+SQL (R)
+SQLEXCEPTION (R)
+SQLSTATE (R)
+SQLWARNING (R)
+SQL_AFTER_GTIDS
+SQL_AFTER_MTS_GAPS
+SQL_BEFORE_GTIDS
+SQL_BIG_RESULT (R)
+SQL_BUFFER_RESULT
+SQL_CACHE; removed in 8.0.3
+SQL_CALC_FOUND_ROWS (R)
+SQL_NO_CACHE
+SQL_SMALL_RESULT (R)
+SQL_THREAD
+SQL_TSI_DAY
+SQL_TSI_HOUR
+SQL_TSI_MINUTE
+SQL_TSI_MONTH
+SQL_TSI_QUARTER
+SQL_TSI_SECOND
+SQL_TSI_WEEK
+SQL_TSI_YEAR
+SRID; added in 8.0.3 (nonreserved)
+SSL (R)
+STACKED
+START
+STARTING (R)
+STARTS
+STATS_AUTO_RECALC
+STATS_PERSISTENT
+STATS_SAMPLE_PAGES
+STATUS
+STOP
+STORAGE
+STORED (R)
+STRAIGHT_JOIN (R)
+STREAM; added in 8.0.20 (nonreserved)
+STRING
+SUBCLASS_ORIGIN
+SUBJECT
+SUBPARTITION
+SUBPARTITIONS
+SUPER
+SUSPEND
+SWAPS
+SWITCHES
+SYSTEM (R); added in 8.0.3 (reserved)
+TABLE (R)
+TABLES
+TABLESPACE
+TABLE_CHECKSUM
+TABLE_NAME
+TEMPORARY
+TEMPTABLE
+TERMINATED (R)
+TEXT
+THAN
+THEN (R)
+THREAD_PRIORITY; added in 8.0.3 (nonreserved)
+TIES; added in 8.0.2 (nonreserved)
+TIME
+TIMESTAMP
+TIMESTAMPADD
+TIMESTAMPDIFF
+TINYBLOB (R)
+TINYINT (R)
+TINYTEXT (R)
+TLS; added in 8.0.21 (nonreserved)
+TO (R)
+TRAILING (R)
+TRANSACTION
+TRIGGER (R)
+TRIGGERS
+TRUE (R)
+TRUNCATE
+TYPE
+TYPES
+UNBOUNDED; added in 8.0.2 (nonreserved)
+UNCOMMITTED
+UNDEFINED
+UNDO (R)
+UNDOFILE
+UNDO_BUFFER_SIZE
+UNICODE
+UNINSTALL
+UNION (R)
+UNIQUE (R)
+UNKNOWN
+UNLOCK (R)
+UNREGISTER; added in 8.0.27 (nonreserved)
+UNSIGNED (R)
+UNTIL
+UPDATE (R)
+UPGRADE
+USAGE (R)
+USE (R)
+USER
+USER_RESOURCES
+USE_FRM
+USING (R)
+UTC_DATE (R)
+UTC_TIME (R)
+UTC_TIMESTAMP (R)
+VALIDATION
+VALUE
+VALUES (R)
+VARBINARY (R)
+VARCHAR (R)
+VARCHARACTER (R)
+VARIABLES
+VARYING (R)
+VCPU; added in 8.0.3 (nonreserved)
+VIEW
+VIRTUAL (R)
+VISIBLE
+WAIT
+WARNINGS
+WEEK
+WEIGHT_STRING
+WHEN (R)
+WHERE (R)
+WHILE (R)
+WINDOW (R); added in 8.0.2 (reserved)
+WITH (R)
+WITHOUT
+WORK
+WRAPPER
+WRITE (R)
+X509
+XA
+XID
+XML
+XOR (R)
+YEAR
+YEAR_MONTH (R)
+ZEROFILL (R)
+ZONE; added in 8.0.22 (nonreserved)

+ 1 - 1
src/mysql/mysql.test.ts

@@ -30,7 +30,7 @@ testTokenization('mysql', [
 				{ startIndex: 7, type: 'white.sql' },
 				{ startIndex: 8, type: 'identifier.sql' },
 				{ startIndex: 9, type: 'white.sql' },
-				{ startIndex: 10, type: 'keyword.sql' }
+				{ startIndex: 10, type: 'identifier.sql' }
 			]
 		}
 	],

+ 28 - 384
src/mysql/mysql.ts

@@ -42,233 +42,109 @@ export const language = <languages.IMonarchLanguage>{
 	],
 
 	keywords: [
+		// This list is generated using `keywords.js`
 		'ACCESSIBLE',
-		'ACCOUNT',
-		'ACTION',
 		'ADD',
-		'AFTER',
-		'AGAINST',
-		'AGGREGATE',
-		'ALGORITHM',
 		'ALL',
 		'ALTER',
-		'ALWAYS',
-		'ANALYSE',
 		'ANALYZE',
 		'AND',
-		'ANY',
 		'AS',
 		'ASC',
-		'ASCII',
 		'ASENSITIVE',
-		'AT',
-		'AUTOEXTEND_SIZE',
-		'AUTO_INCREMENT',
-		'AVG',
-		'AVG_ROW_LENGTH',
-		'BACKUP',
 		'BEFORE',
-		'BEGIN',
 		'BETWEEN',
 		'BIGINT',
 		'BINARY',
-		'BINLOG',
-		'BIT',
 		'BLOB',
-		'BLOCK',
-		'BOOL',
-		'BOOLEAN',
 		'BOTH',
-		'BTREE',
 		'BY',
-		'BYTE',
-		'CACHE',
 		'CALL',
 		'CASCADE',
-		'CASCADED',
 		'CASE',
-		'CATALOG_NAME',
-		'CHAIN',
 		'CHANGE',
-		'CHANGED',
-		'CHANNEL',
 		'CHAR',
 		'CHARACTER',
-		'CHARSET',
 		'CHECK',
-		'CHECKSUM',
-		'CIPHER',
-		'CLASS_ORIGIN',
-		'CLIENT',
-		'CLOSE',
-		'COALESCE',
-		'CODE',
 		'COLLATE',
-		'COLLATION',
 		'COLUMN',
-		'COLUMNS',
-		'COLUMN_FORMAT',
-		'COLUMN_NAME',
-		'COMMENT',
-		'COMMIT',
-		'COMMITTED',
-		'COMPACT',
-		'COMPLETION',
-		'COMPRESSED',
-		'COMPRESSION',
-		'CONCURRENT',
 		'CONDITION',
-		'CONNECTION',
-		'CONSISTENT',
 		'CONSTRAINT',
-		'CONSTRAINT_CATALOG',
-		'CONSTRAINT_NAME',
-		'CONSTRAINT_SCHEMA',
-		'CONTAINS',
-		'CONTEXT',
 		'CONTINUE',
 		'CONVERT',
-		'CPU',
 		'CREATE',
 		'CROSS',
 		'CUBE',
-		'CURRENT',
+		'CUME_DIST',
 		'CURRENT_DATE',
 		'CURRENT_TIME',
 		'CURRENT_TIMESTAMP',
 		'CURRENT_USER',
 		'CURSOR',
-		'CURSOR_NAME',
-		'DATA',
 		'DATABASE',
 		'DATABASES',
-		'DATAFILE',
-		'DATE',
-		'DATETIME',
-		'DAY',
 		'DAY_HOUR',
 		'DAY_MICROSECOND',
 		'DAY_MINUTE',
 		'DAY_SECOND',
-		'DEALLOCATE',
 		'DEC',
 		'DECIMAL',
 		'DECLARE',
 		'DEFAULT',
-		'DEFAULT_AUTH',
-		'DEFINER',
 		'DELAYED',
-		'DELAY_KEY_WRITE',
 		'DELETE',
+		'DENSE_RANK',
 		'DESC',
 		'DESCRIBE',
-		'DES_KEY_FILE',
 		'DETERMINISTIC',
-		'DIAGNOSTICS',
-		'DIRECTORY',
-		'DISABLE',
-		'DISCARD',
-		'DISK',
 		'DISTINCT',
 		'DISTINCTROW',
 		'DIV',
-		'DO',
 		'DOUBLE',
 		'DROP',
 		'DUAL',
-		'DUMPFILE',
-		'DUPLICATE',
-		'DYNAMIC',
 		'EACH',
 		'ELSE',
 		'ELSEIF',
-		'ENABLE',
+		'EMPTY',
 		'ENCLOSED',
-		'ENCRYPTION',
-		'END',
-		'ENDS',
-		'ENGINE',
-		'ENGINES',
-		'ENUM',
-		'ERROR',
-		'ERRORS',
-		'ESCAPE',
 		'ESCAPED',
-		'EVENT',
-		'EVENTS',
-		'EVERY',
-		'EXCHANGE',
-		'EXECUTE',
+		'EXCEPT',
 		'EXISTS',
 		'EXIT',
-		'EXPANSION',
-		'EXPIRE',
 		'EXPLAIN',
-		'EXPORT',
-		'EXTENDED',
-		'EXTENT_SIZE',
 		'FALSE',
-		'FAST',
-		'FAULTS',
 		'FETCH',
-		'FIELDS',
-		'FILE',
-		'FILE_BLOCK_SIZE',
-		'FILTER',
-		'FIRST',
-		'FIXED',
+		'FIRST_VALUE',
 		'FLOAT',
 		'FLOAT4',
 		'FLOAT8',
-		'FLUSH',
-		'FOLLOWS',
 		'FOR',
 		'FORCE',
 		'FOREIGN',
-		'FORMAT',
-		'FOUND',
 		'FROM',
-		'FULL',
 		'FULLTEXT',
 		'FUNCTION',
-		'GENERAL',
 		'GENERATED',
-		'GEOMETRY',
-		'GEOMETRYCOLLECTION',
 		'GET',
-		'GET_FORMAT',
-		'GLOBAL',
 		'GRANT',
-		'GRANTS',
 		'GROUP',
-		'GROUP_REPLICATION',
-		'HANDLER',
-		'HASH',
+		'GROUPING',
+		'GROUPS',
 		'HAVING',
-		'HELP',
 		'HIGH_PRIORITY',
-		'HOST',
-		'HOSTS',
-		'HOUR',
 		'HOUR_MICROSECOND',
 		'HOUR_MINUTE',
 		'HOUR_SECOND',
-		'IDENTIFIED',
 		'IF',
 		'IGNORE',
-		'IGNORE_SERVER_IDS',
-		'IMPORT',
+		'IN',
 		'INDEX',
-		'INDEXES',
 		'INFILE',
-		'INITIAL_SIZE',
 		'INNER',
 		'INOUT',
 		'INSENSITIVE',
 		'INSERT',
-		'INSERT_METHOD',
-		'INSTALL',
-		'INSTANCE',
 		'INT',
 		'INT1',
 		'INT2',
@@ -278,386 +154,154 @@ export const language = <languages.IMonarchLanguage>{
 		'INTEGER',
 		'INTERVAL',
 		'INTO',
-		'INVOKER',
-		'IO',
 		'IO_AFTER_GTIDS',
 		'IO_BEFORE_GTIDS',
-		'IO_THREAD',
-		'IPC',
-		'ISOLATION',
-		'ISSUER',
+		'IS',
 		'ITERATE',
 		'JOIN',
-		'JSON',
+		'JSON_TABLE',
 		'KEY',
 		'KEYS',
-		'KEY_BLOCK_SIZE',
 		'KILL',
-		'LANGUAGE',
-		'LAST',
+		'LAG',
+		'LAST_VALUE',
+		'LATERAL',
+		'LEAD',
 		'LEADING',
 		'LEAVE',
-		'LEAVES',
 		'LEFT',
-		'LESS',
-		'LEVEL',
 		'LIKE',
 		'LIMIT',
 		'LINEAR',
 		'LINES',
-		'LINESTRING',
-		'LIST',
 		'LOAD',
-		'LOCAL',
 		'LOCALTIME',
 		'LOCALTIMESTAMP',
 		'LOCK',
-		'LOCKS',
-		'LOGFILE',
-		'LOGS',
 		'LONG',
 		'LONGBLOB',
 		'LONGTEXT',
 		'LOOP',
 		'LOW_PRIORITY',
-		'MASTER',
-		'MASTER_AUTO_POSITION',
 		'MASTER_BIND',
-		'MASTER_CONNECT_RETRY',
-		'MASTER_DELAY',
-		'MASTER_HEARTBEAT_PERIOD',
-		'MASTER_HOST',
-		'MASTER_LOG_FILE',
-		'MASTER_LOG_POS',
-		'MASTER_PASSWORD',
-		'MASTER_PORT',
-		'MASTER_RETRY_COUNT',
-		'MASTER_SERVER_ID',
-		'MASTER_SSL',
-		'MASTER_SSL_CA',
-		'MASTER_SSL_CAPATH',
-		'MASTER_SSL_CERT',
-		'MASTER_SSL_CIPHER',
-		'MASTER_SSL_CRL',
-		'MASTER_SSL_CRLPATH',
-		'MASTER_SSL_KEY',
 		'MASTER_SSL_VERIFY_SERVER_CERT',
-		'MASTER_TLS_VERSION',
-		'MASTER_USER',
 		'MATCH',
 		'MAXVALUE',
-		'MAX_CONNECTIONS_PER_HOUR',
-		'MAX_QUERIES_PER_HOUR',
-		'MAX_ROWS',
-		'MAX_SIZE',
-		'MAX_STATEMENT_TIME',
-		'MAX_UPDATES_PER_HOUR',
-		'MAX_USER_CONNECTIONS',
-		'MEDIUM',
 		'MEDIUMBLOB',
 		'MEDIUMINT',
 		'MEDIUMTEXT',
-		'MEMORY',
-		'MERGE',
-		'MESSAGE_TEXT',
-		'MICROSECOND',
 		'MIDDLEINT',
-		'MIGRATE',
-		'MINUTE',
 		'MINUTE_MICROSECOND',
 		'MINUTE_SECOND',
-		'MIN_ROWS',
 		'MOD',
-		'MODE',
 		'MODIFIES',
-		'MODIFY',
-		'MONTH',
-		'MULTILINESTRING',
-		'MULTIPOINT',
-		'MULTIPOLYGON',
-		'MUTEX',
-		'MYSQL_ERRNO',
-		'NAME',
-		'NAMES',
-		'NATIONAL',
 		'NATURAL',
-		'NCHAR',
-		'NDB',
-		'NDBCLUSTER',
-		'NEVER',
-		'NEW',
-		'NEXT',
-		'NO',
-		'NODEGROUP',
-		'NONBLOCKING',
-		'NONE',
-		'NO_WAIT',
+		'NOT',
 		'NO_WRITE_TO_BINLOG',
-		'NUMBER',
+		'NTH_VALUE',
+		'NTILE',
+		'NULL',
 		'NUMERIC',
-		'NVARCHAR',
-		'OFFSET',
-		'OLD_PASSWORD',
+		'OF',
 		'ON',
-		'ONE',
-		'ONLY',
-		'OPEN',
 		'OPTIMIZE',
 		'OPTIMIZER_COSTS',
 		'OPTION',
 		'OPTIONALLY',
-		'OPTIONS',
 		'OR',
 		'ORDER',
 		'OUT',
 		'OUTER',
 		'OUTFILE',
-		'OWNER',
-		'PACK_KEYS',
-		'PAGE',
-		'PARSER',
-		'PARSE_GCOL_EXPR',
-		'PARTIAL',
+		'OVER',
 		'PARTITION',
-		'PARTITIONING',
-		'PARTITIONS',
-		'PASSWORD',
-		'PHASE',
-		'PLUGIN',
-		'PLUGINS',
-		'PLUGIN_DIR',
-		'POINT',
-		'POLYGON',
-		'PORT',
-		'PRECEDES',
+		'PERCENT_RANK',
 		'PRECISION',
-		'PREPARE',
-		'PRESERVE',
-		'PREV',
 		'PRIMARY',
-		'PRIVILEGES',
 		'PROCEDURE',
-		'PROCESSLIST',
-		'PROFILE',
-		'PROFILES',
-		'PROXY',
 		'PURGE',
-		'QUARTER',
-		'QUERY',
-		'QUICK',
 		'RANGE',
+		'RANK',
 		'READ',
 		'READS',
-		'READ_ONLY',
 		'READ_WRITE',
 		'REAL',
-		'REBUILD',
-		'RECOVER',
-		'REDOFILE',
-		'REDO_BUFFER_SIZE',
-		'REDUNDANT',
+		'RECURSIVE',
 		'REFERENCES',
 		'REGEXP',
-		'RELAY',
-		'RELAYLOG',
-		'RELAY_LOG_FILE',
-		'RELAY_LOG_POS',
-		'RELAY_THREAD',
 		'RELEASE',
-		'RELOAD',
-		'REMOVE',
 		'RENAME',
-		'REORGANIZE',
-		'REPAIR',
 		'REPEAT',
-		'REPEATABLE',
 		'REPLACE',
-		'REPLICATE_DO_DB',
-		'REPLICATE_DO_TABLE',
-		'REPLICATE_IGNORE_DB',
-		'REPLICATE_IGNORE_TABLE',
-		'REPLICATE_REWRITE_DB',
-		'REPLICATE_WILD_DO_TABLE',
-		'REPLICATE_WILD_IGNORE_TABLE',
-		'REPLICATION',
 		'REQUIRE',
-		'RESET',
 		'RESIGNAL',
-		'RESTORE',
 		'RESTRICT',
-		'RESUME',
 		'RETURN',
-		'RETURNED_SQLSTATE',
-		'RETURNS',
-		'REVERSE',
 		'REVOKE',
 		'RIGHT',
 		'RLIKE',
-		'ROLLBACK',
-		'ROLLUP',
-		'ROTATE',
-		'ROUTINE',
 		'ROW',
 		'ROWS',
-		'ROW_COUNT',
-		'ROW_FORMAT',
-		'RTREE',
-		'SAVEPOINT',
-		'SCHEDULE',
+		'ROW_NUMBER',
 		'SCHEMA',
 		'SCHEMAS',
-		'SCHEMA_NAME',
-		'SECOND',
 		'SECOND_MICROSECOND',
-		'SECURITY',
 		'SELECT',
 		'SENSITIVE',
 		'SEPARATOR',
-		'SERIAL',
-		'SERIALIZABLE',
-		'SERVER',
-		'SESSION',
 		'SET',
-		'SHARE',
 		'SHOW',
-		'SHUTDOWN',
 		'SIGNAL',
-		'SIGNED',
-		'SIMPLE',
-		'SLAVE',
-		'SLOW',
 		'SMALLINT',
-		'SNAPSHOT',
-		'SOCKET',
-		'SOME',
-		'SONAME',
-		'SOUNDS',
-		'SOURCE',
 		'SPATIAL',
 		'SPECIFIC',
 		'SQL',
 		'SQLEXCEPTION',
 		'SQLSTATE',
 		'SQLWARNING',
-		'SQL_AFTER_GTIDS',
-		'SQL_AFTER_MTS_GAPS',
-		'SQL_BEFORE_GTIDS',
 		'SQL_BIG_RESULT',
-		'SQL_BUFFER_RESULT',
-		'SQL_CACHE',
 		'SQL_CALC_FOUND_ROWS',
-		'SQL_NO_CACHE',
 		'SQL_SMALL_RESULT',
-		'SQL_THREAD',
-		'SQL_TSI_DAY',
-		'SQL_TSI_HOUR',
-		'SQL_TSI_MINUTE',
-		'SQL_TSI_MONTH',
-		'SQL_TSI_QUARTER',
-		'SQL_TSI_SECOND',
-		'SQL_TSI_WEEK',
-		'SQL_TSI_YEAR',
 		'SSL',
-		'STACKED',
-		'START',
 		'STARTING',
-		'STARTS',
-		'STATS_AUTO_RECALC',
-		'STATS_PERSISTENT',
-		'STATS_SAMPLE_PAGES',
-		'STATUS',
-		'STOP',
-		'STORAGE',
 		'STORED',
 		'STRAIGHT_JOIN',
-		'STRING',
-		'SUBCLASS_ORIGIN',
-		'SUBJECT',
-		'SUBPARTITION',
-		'SUBPARTITIONS',
-		'SUPER',
-		'SUSPEND',
-		'SWAPS',
-		'SWITCHES',
+		'SYSTEM',
 		'TABLE',
-		'TABLES',
-		'TABLESPACE',
-		'TABLE_CHECKSUM',
-		'TABLE_NAME',
-		'TEMPORARY',
-		'TEMPTABLE',
 		'TERMINATED',
-		'TEXT',
-		'THAN',
 		'THEN',
-		'TIME',
-		'TIMESTAMP',
-		'TIMESTAMPADD',
-		'TIMESTAMPDIFF',
 		'TINYBLOB',
 		'TINYINT',
 		'TINYTEXT',
 		'TO',
 		'TRAILING',
-		'TRANSACTION',
 		'TRIGGER',
-		'TRIGGERS',
 		'TRUE',
-		'TRUNCATE',
-		'TYPE',
-		'TYPES',
-		'UNCOMMITTED',
-		'UNDEFINED',
 		'UNDO',
-		'UNDOFILE',
-		'UNDO_BUFFER_SIZE',
-		'UNICODE',
-		'UNINSTALL',
 		'UNION',
 		'UNIQUE',
-		'UNKNOWN',
 		'UNLOCK',
 		'UNSIGNED',
-		'UNTIL',
 		'UPDATE',
-		'UPGRADE',
 		'USAGE',
 		'USE',
-		'USER',
-		'USER_RESOURCES',
-		'USE_FRM',
 		'USING',
 		'UTC_DATE',
 		'UTC_TIME',
 		'UTC_TIMESTAMP',
-		'VALIDATION',
-		'VALUE',
 		'VALUES',
 		'VARBINARY',
 		'VARCHAR',
 		'VARCHARACTER',
-		'VARIABLES',
 		'VARYING',
-		'VIEW',
 		'VIRTUAL',
-		'WAIT',
-		'WARNINGS',
-		'WEEK',
-		'WEIGHT_STRING',
 		'WHEN',
 		'WHERE',
 		'WHILE',
+		'WINDOW',
 		'WITH',
-		'WITHOUT',
-		'WORK',
-		'WRAPPER',
 		'WRITE',
-		'X509',
-		'XA',
-		'XID',
-		'XML',
 		'XOR',
-		'YEAR',
 		'YEAR_MONTH',
 		'ZEROFILL'
 	],
@@ -1124,10 +768,10 @@ export const language = <languages.IMonarchLanguage>{
 				/[\w@]+/,
 				{
 					cases: {
-						'@keywords': 'keyword',
 						'@operators': 'operator',
 						'@builtinVariables': 'predefined',
 						'@builtinFunctions': 'predefined',
+						'@keywords': 'keyword',
 						'@default': 'identifier'
 					}
 				}

+ 30 - 0
src/pgsql/keywords.js

@@ -0,0 +1,30 @@
+/*---------------------------------------------------------------------------------------------
+ *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+const fs = require('fs');
+const path = require('path');
+
+const keywords = getPostgreSQLKeywords();
+keywords.sort();
+console.log(`'${keywords.join("',\n'")}'`);
+
+function getPostgreSQLKeywords() {
+	// https://www.postgresql.org/docs/current/sql-keywords-appendix.html
+	const lines = fs
+		.readFileSync(path.join(__dirname, 'keywords.postgresql.txt'))
+		.toString()
+		.split(/\r\n|\r|\n/);
+	const tokens = [];
+	for (let line of lines) {
+		const pieces = line.split(/\t/);
+		if (/non-reserved/.test(pieces[1])) {
+			continue;
+		}
+		if (/reserved/.test(pieces[1])) {
+			tokens.push(pieces[0]);
+		}
+	}
+	return tokens;
+}

+ 827 - 0
src/pgsql/keywords.postgresql.txt

@@ -0,0 +1,827 @@
+Key Word	PostgreSQL	SQL:2016	SQL:2011	SQL-92
+A	 	non-reserved	non-reserved
+ABORT	non-reserved
+ABS	 	reserved	reserved
+ABSENT	 	non-reserved	non-reserved
+ABSOLUTE	non-reserved	non-reserved	non-reserved	reserved
+ACCESS	non-reserved
+ACCORDING	 	non-reserved	non-reserved
+ACOS	 	reserved
+ACTION	non-reserved	non-reserved	non-reserved	reserved
+ADA	 	non-reserved	non-reserved	non-reserved
+ADD	non-reserved	non-reserved	non-reserved	reserved
+ADMIN	non-reserved	non-reserved	non-reserved
+AFTER	non-reserved	non-reserved	non-reserved
+AGGREGATE	non-reserved
+ALL	reserved	reserved	reserved	reserved
+ALLOCATE	 	reserved	reserved	reserved
+ALSO	non-reserved
+ALTER	non-reserved	reserved	reserved	reserved
+ALWAYS	non-reserved	non-reserved	non-reserved
+ANALYSE	reserved
+ANALYZE	reserved
+AND	reserved	reserved	reserved	reserved
+ANY	reserved	reserved	reserved	reserved
+ARE	 	reserved	reserved	reserved
+ARRAY	reserved, requires AS	reserved	reserved
+ARRAY_AGG	 	reserved	reserved
+ARRAY_​MAX_​CARDINALITY	 	reserved	reserved
+AS	reserved, requires AS	reserved	reserved	reserved
+ASC	reserved	non-reserved	non-reserved	reserved
+ASENSITIVE	non-reserved	reserved	reserved
+ASIN	 	reserved
+ASSERTION	non-reserved	non-reserved	non-reserved	reserved
+ASSIGNMENT	non-reserved	non-reserved	non-reserved
+ASYMMETRIC	reserved	reserved	reserved
+AT	non-reserved	reserved	reserved	reserved
+ATAN	 	reserved
+ATOMIC	non-reserved	reserved	reserved
+ATTACH	non-reserved
+ATTRIBUTE	non-reserved	non-reserved	non-reserved
+ATTRIBUTES	 	non-reserved	non-reserved
+AUTHORIZATION	reserved (can be function or type)	reserved	reserved	reserved
+AVG	 	reserved	reserved	reserved
+BACKWARD	non-reserved
+BASE64	 	non-reserved	non-reserved
+BEFORE	non-reserved	non-reserved	non-reserved
+BEGIN	non-reserved	reserved	reserved	reserved
+BEGIN_FRAME	 	reserved	reserved
+BEGIN_PARTITION	 	reserved	reserved
+BERNOULLI	 	non-reserved	non-reserved
+BETWEEN	non-reserved (cannot be function or type)	reserved	reserved	reserved
+BIGINT	non-reserved (cannot be function or type)	reserved	reserved
+BINARY	reserved (can be function or type)	reserved	reserved
+BIT	non-reserved (cannot be function or type)	 	 	reserved
+BIT_LENGTH	 	 	 	reserved
+BLOB	 	reserved	reserved
+BLOCKED	 	non-reserved	non-reserved
+BOM	 	non-reserved	non-reserved
+BOOLEAN	non-reserved (cannot be function or type)	reserved	reserved
+BOTH	reserved	reserved	reserved	reserved
+BREADTH	non-reserved	non-reserved	non-reserved
+BY	non-reserved	reserved	reserved	reserved
+C	 	non-reserved	non-reserved	non-reserved
+CACHE	non-reserved
+CALL	non-reserved	reserved	reserved
+CALLED	non-reserved	reserved	reserved
+CARDINALITY	 	reserved	reserved
+CASCADE	non-reserved	non-reserved	non-reserved	reserved
+CASCADED	non-reserved	reserved	reserved	reserved
+CASE	reserved	reserved	reserved	reserved
+CAST	reserved	reserved	reserved	reserved
+CATALOG	non-reserved	non-reserved	non-reserved	reserved
+CATALOG_NAME	 	non-reserved	non-reserved	non-reserved
+CEIL	 	reserved	reserved
+CEILING	 	reserved	reserved
+CHAIN	non-reserved	non-reserved	non-reserved
+CHAINING	 	non-reserved
+CHAR	non-reserved (cannot be function or type), requires AS	reserved	reserved	reserved
+CHARACTER	non-reserved (cannot be function or type), requires AS	reserved	reserved	reserved
+CHARACTERISTICS	non-reserved	non-reserved	non-reserved
+CHARACTERS	 	non-reserved	non-reserved
+CHARACTER_LENGTH	 	reserved	reserved	reserved
+CHARACTER_​SET_​CATALOG	 	non-reserved	non-reserved	non-reserved
+CHARACTER_SET_NAME	 	non-reserved	non-reserved	non-reserved
+CHARACTER_SET_SCHEMA	 	non-reserved	non-reserved	non-reserved
+CHAR_LENGTH	 	reserved	reserved	reserved
+CHECK	reserved	reserved	reserved	reserved
+CHECKPOINT	non-reserved
+CLASS	non-reserved
+CLASSIFIER	 	reserved
+CLASS_ORIGIN	 	non-reserved	non-reserved	non-reserved
+CLOB	 	reserved	reserved
+CLOSE	non-reserved	reserved	reserved	reserved
+CLUSTER	non-reserved
+COALESCE	non-reserved (cannot be function or type)	reserved	reserved	reserved
+COBOL	 	non-reserved	non-reserved	non-reserved
+COLLATE	reserved	reserved	reserved	reserved
+COLLATION	reserved (can be function or type)	non-reserved	non-reserved	reserved
+COLLATION_CATALOG	 	non-reserved	non-reserved	non-reserved
+COLLATION_NAME	 	non-reserved	non-reserved	non-reserved
+COLLATION_SCHEMA	 	non-reserved	non-reserved	non-reserved
+COLLECT	 	reserved	reserved
+COLUMN	reserved	reserved	reserved	reserved
+COLUMNS	non-reserved	non-reserved	non-reserved
+COLUMN_NAME	 	non-reserved	non-reserved	non-reserved
+COMMAND_FUNCTION	 	non-reserved	non-reserved	non-reserved
+COMMAND_​FUNCTION_​CODE	 	non-reserved	non-reserved
+COMMENT	non-reserved
+COMMENTS	non-reserved
+COMMIT	non-reserved	reserved	reserved	reserved
+COMMITTED	non-reserved	non-reserved	non-reserved	non-reserved
+COMPRESSION	non-reserved
+CONCURRENTLY	reserved (can be function or type)
+CONDITION	 	reserved	reserved
+CONDITIONAL	 	non-reserved
+CONDITION_NUMBER	 	non-reserved	non-reserved	non-reserved
+CONFIGURATION	non-reserved
+CONFLICT	non-reserved
+CONNECT	 	reserved	reserved	reserved
+CONNECTION	non-reserved	non-reserved	non-reserved	reserved
+CONNECTION_NAME	 	non-reserved	non-reserved	non-reserved
+CONSTRAINT	reserved	reserved	reserved	reserved
+CONSTRAINTS	non-reserved	non-reserved	non-reserved	reserved
+CONSTRAINT_CATALOG	 	non-reserved	non-reserved	non-reserved
+CONSTRAINT_NAME	 	non-reserved	non-reserved	non-reserved
+CONSTRAINT_SCHEMA	 	non-reserved	non-reserved	non-reserved
+CONSTRUCTOR	 	non-reserved	non-reserved
+CONTAINS	 	reserved	reserved
+CONTENT	non-reserved	non-reserved	non-reserved
+CONTINUE	non-reserved	non-reserved	non-reserved	reserved
+CONTROL	 	non-reserved	non-reserved
+CONVERSION	non-reserved
+CONVERT	 	reserved	reserved	reserved
+COPY	non-reserved	reserved
+CORR	 	reserved	reserved
+CORRESPONDING	 	reserved	reserved	reserved
+COS	 	reserved
+COSH	 	reserved
+COST	non-reserved
+COUNT	 	reserved	reserved	reserved
+COVAR_POP	 	reserved	reserved
+COVAR_SAMP	 	reserved	reserved
+CREATE	reserved, requires AS	reserved	reserved	reserved
+CROSS	reserved (can be function or type)	reserved	reserved	reserved
+CSV	non-reserved
+CUBE	non-reserved	reserved	reserved
+CUME_DIST	 	reserved	reserved
+CURRENT	non-reserved	reserved	reserved	reserved
+CURRENT_CATALOG	reserved	reserved	reserved
+CURRENT_DATE	reserved	reserved	reserved	reserved
+CURRENT_​DEFAULT_​TRANSFORM_​GROUP	 	reserved	reserved
+CURRENT_PATH	 	reserved	reserved
+CURRENT_ROLE	reserved	reserved	reserved
+CURRENT_ROW	 	reserved	reserved
+CURRENT_SCHEMA	reserved (can be function or type)	reserved	reserved
+CURRENT_TIME	reserved	reserved	reserved	reserved
+CURRENT_TIMESTAMP	reserved	reserved	reserved	reserved
+CURRENT_​TRANSFORM_​GROUP_​FOR_​TYPE	 	reserved	reserved
+CURRENT_USER	reserved	reserved	reserved	reserved
+CURSOR	non-reserved	reserved	reserved	reserved
+CURSOR_NAME	 	non-reserved	non-reserved	non-reserved
+CYCLE	non-reserved	reserved	reserved
+DATA	non-reserved	non-reserved	non-reserved	non-reserved
+DATABASE	non-reserved
+DATALINK	 	reserved	reserved
+DATE	 	reserved	reserved	reserved
+DATETIME_​INTERVAL_​CODE	 	non-reserved	non-reserved	non-reserved
+DATETIME_​INTERVAL_​PRECISION	 	non-reserved	non-reserved	non-reserved
+DAY	non-reserved, requires AS	reserved	reserved	reserved
+DB	 	non-reserved	non-reserved
+DEALLOCATE	non-reserved	reserved	reserved	reserved
+DEC	non-reserved (cannot be function or type)	reserved	reserved	reserved
+DECFLOAT	 	reserved
+DECIMAL	non-reserved (cannot be function or type)	reserved	reserved	reserved
+DECLARE	non-reserved	reserved	reserved	reserved
+DEFAULT	reserved	reserved	reserved	reserved
+DEFAULTS	non-reserved	non-reserved	non-reserved
+DEFERRABLE	reserved	non-reserved	non-reserved	reserved
+DEFERRED	non-reserved	non-reserved	non-reserved	reserved
+DEFINE	 	reserved
+DEFINED	 	non-reserved	non-reserved
+DEFINER	non-reserved	non-reserved	non-reserved
+DEGREE	 	non-reserved	non-reserved
+DELETE	non-reserved	reserved	reserved	reserved
+DELIMITER	non-reserved
+DELIMITERS	non-reserved
+DENSE_RANK	 	reserved	reserved
+DEPENDS	non-reserved
+DEPTH	non-reserved	non-reserved	non-reserved
+DEREF	 	reserved	reserved
+DERIVED	 	non-reserved	non-reserved
+DESC	reserved	non-reserved	non-reserved	reserved
+DESCRIBE	 	reserved	reserved	reserved
+DESCRIPTOR	 	non-reserved	non-reserved	reserved
+DETACH	non-reserved
+DETERMINISTIC	 	reserved	reserved
+DIAGNOSTICS	 	non-reserved	non-reserved	reserved
+DICTIONARY	non-reserved
+DISABLE	non-reserved
+DISCARD	non-reserved
+DISCONNECT	 	reserved	reserved	reserved
+DISPATCH	 	non-reserved	non-reserved
+DISTINCT	reserved	reserved	reserved	reserved
+DLNEWCOPY	 	reserved	reserved
+DLPREVIOUSCOPY	 	reserved	reserved
+DLURLCOMPLETE	 	reserved	reserved
+DLURLCOMPLETEONLY	 	reserved	reserved
+DLURLCOMPLETEWRITE	 	reserved	reserved
+DLURLPATH	 	reserved	reserved
+DLURLPATHONLY	 	reserved	reserved
+DLURLPATHWRITE	 	reserved	reserved
+DLURLSCHEME	 	reserved	reserved
+DLURLSERVER	 	reserved	reserved
+DLVALUE	 	reserved	reserved
+DO	reserved
+DOCUMENT	non-reserved	non-reserved	non-reserved
+DOMAIN	non-reserved	non-reserved	non-reserved	reserved
+DOUBLE	non-reserved	reserved	reserved	reserved
+DROP	non-reserved	reserved	reserved	reserved
+DYNAMIC	 	reserved	reserved
+DYNAMIC_FUNCTION	 	non-reserved	non-reserved	non-reserved
+DYNAMIC_​FUNCTION_​CODE	 	non-reserved	non-reserved
+EACH	non-reserved	reserved	reserved
+ELEMENT	 	reserved	reserved
+ELSE	reserved	reserved	reserved	reserved
+EMPTY	 	reserved	non-reserved
+ENABLE	non-reserved
+ENCODING	non-reserved	non-reserved	non-reserved
+ENCRYPTED	non-reserved
+END	reserved	reserved	reserved	reserved
+END-EXEC	 	reserved	reserved	reserved
+END_FRAME	 	reserved	reserved
+END_PARTITION	 	reserved	reserved
+ENFORCED	 	non-reserved	non-reserved
+ENUM	non-reserved
+EQUALS	 	reserved	reserved
+ERROR	 	non-reserved
+ESCAPE	non-reserved	reserved	reserved	reserved
+EVENT	non-reserved
+EVERY	 	reserved	reserved
+EXCEPT	reserved, requires AS	reserved	reserved	reserved
+EXCEPTION	 	 	 	reserved
+EXCLUDE	non-reserved	non-reserved	non-reserved
+EXCLUDING	non-reserved	non-reserved	non-reserved
+EXCLUSIVE	non-reserved
+EXEC	 	reserved	reserved	reserved
+EXECUTE	non-reserved	reserved	reserved	reserved
+EXISTS	non-reserved (cannot be function or type)	reserved	reserved	reserved
+EXP	 	reserved	reserved
+EXPLAIN	non-reserved
+EXPRESSION	non-reserved	non-reserved	non-reserved
+EXTENSION	non-reserved
+EXTERNAL	non-reserved	reserved	reserved	reserved
+EXTRACT	non-reserved (cannot be function or type)	reserved	reserved	reserved
+FALSE	reserved	reserved	reserved	reserved
+FAMILY	non-reserved
+FETCH	reserved, requires AS	reserved	reserved	reserved
+FILE	 	non-reserved	non-reserved
+FILTER	non-reserved, requires AS	reserved	reserved
+FINAL	 	non-reserved	non-reserved
+FINALIZE	non-reserved
+FINISH	 	non-reserved
+FIRST	non-reserved	non-reserved	non-reserved	reserved
+FIRST_VALUE	 	reserved	reserved
+FLAG	 	non-reserved	non-reserved
+FLOAT	non-reserved (cannot be function or type)	reserved	reserved	reserved
+FLOOR	 	reserved	reserved
+FOLLOWING	non-reserved	non-reserved	non-reserved
+FOR	reserved, requires AS	reserved	reserved	reserved
+FORCE	non-reserved
+FOREIGN	reserved	reserved	reserved	reserved
+FORMAT	 	non-reserved
+FORTRAN	 	non-reserved	non-reserved	non-reserved
+FORWARD	non-reserved
+FOUND	 	non-reserved	non-reserved	reserved
+FRAME_ROW	 	reserved	reserved
+FREE	 	reserved	reserved
+FREEZE	reserved (can be function or type)
+FROM	reserved, requires AS	reserved	reserved	reserved
+FS	 	non-reserved	non-reserved
+FULFILL	 	non-reserved
+FULL	reserved (can be function or type)	reserved	reserved	reserved
+FUNCTION	non-reserved	reserved	reserved
+FUNCTIONS	non-reserved
+FUSION	 	reserved	reserved
+G	 	non-reserved	non-reserved
+GENERAL	 	non-reserved	non-reserved
+GENERATED	non-reserved	non-reserved	non-reserved
+GET	 	reserved	reserved	reserved
+GLOBAL	non-reserved	reserved	reserved	reserved
+GO	 	non-reserved	non-reserved	reserved
+GOTO	 	non-reserved	non-reserved	reserved
+GRANT	reserved, requires AS	reserved	reserved	reserved
+GRANTED	non-reserved	non-reserved	non-reserved
+GREATEST	non-reserved (cannot be function or type)
+GROUP	reserved, requires AS	reserved	reserved	reserved
+GROUPING	non-reserved (cannot be function or type)	reserved	reserved
+GROUPS	non-reserved	reserved	reserved
+HANDLER	non-reserved
+HAVING	reserved, requires AS	reserved	reserved	reserved
+HEADER	non-reserved
+HEX	 	non-reserved	non-reserved
+HIERARCHY	 	non-reserved	non-reserved
+HOLD	non-reserved	reserved	reserved
+HOUR	non-reserved, requires AS	reserved	reserved	reserved
+ID	 	non-reserved	non-reserved
+IDENTITY	non-reserved	reserved	reserved	reserved
+IF	non-reserved
+IGNORE	 	non-reserved	non-reserved
+ILIKE	reserved (can be function or type)
+IMMEDIATE	non-reserved	non-reserved	non-reserved	reserved
+IMMEDIATELY	 	non-reserved	non-reserved
+IMMUTABLE	non-reserved
+IMPLEMENTATION	 	non-reserved	non-reserved
+IMPLICIT	non-reserved
+IMPORT	non-reserved	reserved	reserved
+IN	reserved	reserved	reserved	reserved
+INCLUDE	non-reserved
+INCLUDING	non-reserved	non-reserved	non-reserved
+INCREMENT	non-reserved	non-reserved	non-reserved
+INDENT	 	non-reserved	non-reserved
+INDEX	non-reserved
+INDEXES	non-reserved
+INDICATOR	 	reserved	reserved	reserved
+INHERIT	non-reserved
+INHERITS	non-reserved
+INITIAL	 	reserved
+INITIALLY	reserved	non-reserved	non-reserved	reserved
+INLINE	non-reserved
+INNER	reserved (can be function or type)	reserved	reserved	reserved
+INOUT	non-reserved (cannot be function or type)	reserved	reserved
+INPUT	non-reserved	non-reserved	non-reserved	reserved
+INSENSITIVE	non-reserved	reserved	reserved	reserved
+INSERT	non-reserved	reserved	reserved	reserved
+INSTANCE	 	non-reserved	non-reserved
+INSTANTIABLE	 	non-reserved	non-reserved
+INSTEAD	non-reserved	non-reserved	non-reserved
+INT	non-reserved (cannot be function or type)	reserved	reserved	reserved
+INTEGER	non-reserved (cannot be function or type)	reserved	reserved	reserved
+INTEGRITY	 	non-reserved	non-reserved
+INTERSECT	reserved, requires AS	reserved	reserved	reserved
+INTERSECTION	 	reserved	reserved
+INTERVAL	non-reserved (cannot be function or type)	reserved	reserved	reserved
+INTO	reserved, requires AS	reserved	reserved	reserved
+INVOKER	non-reserved	non-reserved	non-reserved
+IS	reserved (can be function or type)	reserved	reserved	reserved
+ISNULL	reserved (can be function or type), requires AS
+ISOLATION	non-reserved	non-reserved	non-reserved	reserved
+JOIN	reserved (can be function or type)	reserved	reserved	reserved
+JSON	 	non-reserved
+JSON_ARRAY	 	reserved
+JSON_ARRAYAGG	 	reserved
+JSON_EXISTS	 	reserved
+JSON_OBJECT	 	reserved
+JSON_OBJECTAGG	 	reserved
+JSON_QUERY	 	reserved
+JSON_TABLE	 	reserved
+JSON_TABLE_PRIMITIVE	 	reserved
+JSON_VALUE	 	reserved
+K	 	non-reserved	non-reserved
+KEEP	 	non-reserved
+KEY	non-reserved	non-reserved	non-reserved	reserved
+KEYS	 	non-reserved
+KEY_MEMBER	 	non-reserved	non-reserved
+KEY_TYPE	 	non-reserved	non-reserved
+LABEL	non-reserved
+LAG	 	reserved	reserved
+LANGUAGE	non-reserved	reserved	reserved	reserved
+LARGE	non-reserved	reserved	reserved
+LAST	non-reserved	non-reserved	non-reserved	reserved
+LAST_VALUE	 	reserved	reserved
+LATERAL	reserved	reserved	reserved
+LEAD	 	reserved	reserved
+LEADING	reserved	reserved	reserved	reserved
+LEAKPROOF	non-reserved
+LEAST	non-reserved (cannot be function or type)
+LEFT	reserved (can be function or type)	reserved	reserved	reserved
+LENGTH	 	non-reserved	non-reserved	non-reserved
+LEVEL	non-reserved	non-reserved	non-reserved	reserved
+LIBRARY	 	non-reserved	non-reserved
+LIKE	reserved (can be function or type)	reserved	reserved	reserved
+LIKE_REGEX	 	reserved	reserved
+LIMIT	reserved, requires AS	non-reserved	non-reserved
+LINK	 	non-reserved	non-reserved
+LISTAGG	 	reserved
+LISTEN	non-reserved
+LN	 	reserved	reserved
+LOAD	non-reserved
+LOCAL	non-reserved	reserved	reserved	reserved
+LOCALTIME	reserved	reserved	reserved
+LOCALTIMESTAMP	reserved	reserved	reserved
+LOCATION	non-reserved	non-reserved	non-reserved
+LOCATOR	 	non-reserved	non-reserved
+LOCK	non-reserved
+LOCKED	non-reserved
+LOG	 	reserved
+LOG10	 	reserved
+LOGGED	non-reserved
+LOWER	 	reserved	reserved	reserved
+M	 	non-reserved	non-reserved
+MAP	 	non-reserved	non-reserved
+MAPPING	non-reserved	non-reserved	non-reserved
+MATCH	non-reserved	reserved	reserved	reserved
+MATCHED	 	non-reserved	non-reserved
+MATCHES	 	reserved
+MATCH_NUMBER	 	reserved
+MATCH_RECOGNIZE	 	reserved
+MATERIALIZED	non-reserved
+MAX	 	reserved	reserved	reserved
+MAXVALUE	non-reserved	non-reserved	non-reserved
+MEASURES	 	reserved
+MEMBER	 	reserved	reserved
+MERGE	 	reserved	reserved
+MESSAGE_LENGTH	 	non-reserved	non-reserved	non-reserved
+MESSAGE_OCTET_LENGTH	 	non-reserved	non-reserved	non-reserved
+MESSAGE_TEXT	 	non-reserved	non-reserved	non-reserved
+METHOD	non-reserved	reserved	reserved
+MIN	 	reserved	reserved	reserved
+MINUTE	non-reserved, requires AS	reserved	reserved	reserved
+MINVALUE	non-reserved	non-reserved	non-reserved
+MOD	 	reserved	reserved
+MODE	non-reserved
+MODIFIES	 	reserved	reserved
+MODULE	 	reserved	reserved	reserved
+MONTH	non-reserved, requires AS	reserved	reserved	reserved
+MORE	 	non-reserved	non-reserved	non-reserved
+MOVE	non-reserved
+MULTISET	 	reserved	reserved
+MUMPS	 	non-reserved	non-reserved	non-reserved
+NAME	non-reserved	non-reserved	non-reserved	non-reserved
+NAMES	non-reserved	non-reserved	non-reserved	reserved
+NAMESPACE	 	non-reserved	non-reserved
+NATIONAL	non-reserved (cannot be function or type)	reserved	reserved	reserved
+NATURAL	reserved (can be function or type)	reserved	reserved	reserved
+NCHAR	non-reserved (cannot be function or type)	reserved	reserved	reserved
+NCLOB	 	reserved	reserved
+NESTED	 	non-reserved
+NESTING	 	non-reserved	non-reserved
+NEW	non-reserved	reserved	reserved
+NEXT	non-reserved	non-reserved	non-reserved	reserved
+NFC	non-reserved	non-reserved	non-reserved
+NFD	non-reserved	non-reserved	non-reserved
+NFKC	non-reserved	non-reserved	non-reserved
+NFKD	non-reserved	non-reserved	non-reserved
+NIL	 	non-reserved	non-reserved
+NO	non-reserved	reserved	reserved	reserved
+NONE	non-reserved (cannot be function or type)	reserved	reserved
+NORMALIZE	non-reserved (cannot be function or type)	reserved	reserved
+NORMALIZED	non-reserved	non-reserved	non-reserved
+NOT	reserved	reserved	reserved	reserved
+NOTHING	non-reserved
+NOTIFY	non-reserved
+NOTNULL	reserved (can be function or type), requires AS
+NOWAIT	non-reserved
+NTH_VALUE	 	reserved	reserved
+NTILE	 	reserved	reserved
+NULL	reserved	reserved	reserved	reserved
+NULLABLE	 	non-reserved	non-reserved	non-reserved
+NULLIF	non-reserved (cannot be function or type)	reserved	reserved	reserved
+NULLS	non-reserved	non-reserved	non-reserved
+NUMBER	 	non-reserved	non-reserved	non-reserved
+NUMERIC	non-reserved (cannot be function or type)	reserved	reserved	reserved
+OBJECT	non-reserved	non-reserved	non-reserved
+OCCURRENCES_REGEX	 	reserved	reserved
+OCTETS	 	non-reserved	non-reserved
+OCTET_LENGTH	 	reserved	reserved	reserved
+OF	non-reserved	reserved	reserved	reserved
+OFF	non-reserved	non-reserved	non-reserved
+OFFSET	reserved, requires AS	reserved	reserved
+OIDS	non-reserved
+OLD	non-reserved	reserved	reserved
+OMIT	 	reserved
+ON	reserved, requires AS	reserved	reserved	reserved
+ONE	 	reserved
+ONLY	reserved	reserved	reserved	reserved
+OPEN	 	reserved	reserved	reserved
+OPERATOR	non-reserved
+OPTION	non-reserved	non-reserved	non-reserved	reserved
+OPTIONS	non-reserved	non-reserved	non-reserved
+OR	reserved	reserved	reserved	reserved
+ORDER	reserved, requires AS	reserved	reserved	reserved
+ORDERING	 	non-reserved	non-reserved
+ORDINALITY	non-reserved	non-reserved	non-reserved
+OTHERS	non-reserved	non-reserved	non-reserved
+OUT	non-reserved (cannot be function or type)	reserved	reserved
+OUTER	reserved (can be function or type)	reserved	reserved	reserved
+OUTPUT	 	non-reserved	non-reserved	reserved
+OVER	non-reserved, requires AS	reserved	reserved
+OVERFLOW	 	non-reserved
+OVERLAPS	reserved (can be function or type), requires AS	reserved	reserved	reserved
+OVERLAY	non-reserved (cannot be function or type)	reserved	reserved
+OVERRIDING	non-reserved	non-reserved	non-reserved
+OWNED	non-reserved
+OWNER	non-reserved
+P	 	non-reserved	non-reserved
+PAD	 	non-reserved	non-reserved	reserved
+PARALLEL	non-reserved
+PARAMETER	 	reserved	reserved
+PARAMETER_MODE	 	non-reserved	non-reserved
+PARAMETER_NAME	 	non-reserved	non-reserved
+PARAMETER_​ORDINAL_​POSITION	 	non-reserved	non-reserved
+PARAMETER_​SPECIFIC_​CATALOG	 	non-reserved	non-reserved
+PARAMETER_​SPECIFIC_​NAME	 	non-reserved	non-reserved
+PARAMETER_​SPECIFIC_​SCHEMA	 	non-reserved	non-reserved
+PARSER	non-reserved
+PARTIAL	non-reserved	non-reserved	non-reserved	reserved
+PARTITION	non-reserved	reserved	reserved
+PASCAL	 	non-reserved	non-reserved	non-reserved
+PASS	 	non-reserved
+PASSING	non-reserved	non-reserved	non-reserved
+PASSTHROUGH	 	non-reserved	non-reserved
+PASSWORD	non-reserved
+PAST	 	non-reserved
+PATH	 	non-reserved	non-reserved
+PATTERN	 	reserved
+PER	 	reserved
+PERCENT	 	reserved	reserved
+PERCENTILE_CONT	 	reserved	reserved
+PERCENTILE_DISC	 	reserved	reserved
+PERCENT_RANK	 	reserved	reserved
+PERIOD	 	reserved	reserved
+PERMISSION	 	non-reserved	non-reserved
+PERMUTE	 	reserved
+PLACING	reserved	non-reserved	non-reserved
+PLAN	 	non-reserved
+PLANS	non-reserved
+PLI	 	non-reserved	non-reserved	non-reserved
+POLICY	non-reserved
+PORTION	 	reserved	reserved
+POSITION	non-reserved (cannot be function or type)	reserved	reserved	reserved
+POSITION_REGEX	 	reserved	reserved
+POWER	 	reserved	reserved
+PRECEDES	 	reserved	reserved
+PRECEDING	non-reserved	non-reserved	non-reserved
+PRECISION	non-reserved (cannot be function or type), requires AS	reserved	reserved	reserved
+PREPARE	non-reserved	reserved	reserved	reserved
+PREPARED	non-reserved
+PRESERVE	non-reserved	non-reserved	non-reserved	reserved
+PRIMARY	reserved	reserved	reserved	reserved
+PRIOR	non-reserved	non-reserved	non-reserved	reserved
+PRIVATE	 	non-reserved
+PRIVILEGES	non-reserved	non-reserved	non-reserved	reserved
+PROCEDURAL	non-reserved
+PROCEDURE	non-reserved	reserved	reserved	reserved
+PROCEDURES	non-reserved
+PROGRAM	non-reserved
+PRUNE	 	non-reserved
+PTF	 	reserved
+PUBLIC	 	non-reserved	non-reserved	reserved
+PUBLICATION	non-reserved
+QUOTE	non-reserved
+QUOTES	 	non-reserved
+RANGE	non-reserved	reserved	reserved
+RANK	 	reserved	reserved
+READ	non-reserved	non-reserved	non-reserved	reserved
+READS	 	reserved	reserved
+REAL	non-reserved (cannot be function or type)	reserved	reserved	reserved
+REASSIGN	non-reserved
+RECHECK	non-reserved
+RECOVERY	 	non-reserved	non-reserved
+RECURSIVE	non-reserved	reserved	reserved
+REF	non-reserved	reserved	reserved
+REFERENCES	reserved	reserved	reserved	reserved
+REFERENCING	non-reserved	reserved	reserved
+REFRESH	non-reserved
+REGR_AVGX	 	reserved	reserved
+REGR_AVGY	 	reserved	reserved
+REGR_COUNT	 	reserved	reserved
+REGR_INTERCEPT	 	reserved	reserved
+REGR_R2	 	reserved	reserved
+REGR_SLOPE	 	reserved	reserved
+REGR_SXX	 	reserved	reserved
+REGR_SXY	 	reserved	reserved
+REGR_SYY	 	reserved	reserved
+REINDEX	non-reserved
+RELATIVE	non-reserved	non-reserved	non-reserved	reserved
+RELEASE	non-reserved	reserved	reserved
+RENAME	non-reserved
+REPEATABLE	non-reserved	non-reserved	non-reserved	non-reserved
+REPLACE	non-reserved
+REPLICA	non-reserved
+REQUIRING	 	non-reserved	non-reserved
+RESET	non-reserved
+RESPECT	 	non-reserved	non-reserved
+RESTART	non-reserved	non-reserved	non-reserved
+RESTORE	 	non-reserved	non-reserved
+RESTRICT	non-reserved	non-reserved	non-reserved	reserved
+RESULT	 	reserved	reserved
+RETURN	non-reserved	reserved	reserved
+RETURNED_CARDINALITY	 	non-reserved	non-reserved
+RETURNED_LENGTH	 	non-reserved	non-reserved	non-reserved
+RETURNED_​OCTET_​LENGTH	 	non-reserved	non-reserved	non-reserved
+RETURNED_SQLSTATE	 	non-reserved	non-reserved	non-reserved
+RETURNING	reserved, requires AS	non-reserved	non-reserved
+RETURNS	non-reserved	reserved	reserved
+REVOKE	non-reserved	reserved	reserved	reserved
+RIGHT	reserved (can be function or type)	reserved	reserved	reserved
+ROLE	non-reserved	non-reserved	non-reserved
+ROLLBACK	non-reserved	reserved	reserved	reserved
+ROLLUP	non-reserved	reserved	reserved
+ROUTINE	non-reserved	non-reserved	non-reserved
+ROUTINES	non-reserved
+ROUTINE_CATALOG	 	non-reserved	non-reserved
+ROUTINE_NAME	 	non-reserved	non-reserved
+ROUTINE_SCHEMA	 	non-reserved	non-reserved
+ROW	non-reserved (cannot be function or type)	reserved	reserved
+ROWS	non-reserved	reserved	reserved	reserved
+ROW_COUNT	 	non-reserved	non-reserved	non-reserved
+ROW_NUMBER	 	reserved	reserved
+RULE	non-reserved
+RUNNING	 	reserved
+SAVEPOINT	non-reserved	reserved	reserved
+SCALAR	 	non-reserved
+SCALE	 	non-reserved	non-reserved	non-reserved
+SCHEMA	non-reserved	non-reserved	non-reserved	reserved
+SCHEMAS	non-reserved
+SCHEMA_NAME	 	non-reserved	non-reserved	non-reserved
+SCOPE	 	reserved	reserved
+SCOPE_CATALOG	 	non-reserved	non-reserved
+SCOPE_NAME	 	non-reserved	non-reserved
+SCOPE_SCHEMA	 	non-reserved	non-reserved
+SCROLL	non-reserved	reserved	reserved	reserved
+SEARCH	non-reserved	reserved	reserved
+SECOND	non-reserved, requires AS	reserved	reserved	reserved
+SECTION	 	non-reserved	non-reserved	reserved
+SECURITY	non-reserved	non-reserved	non-reserved
+SEEK	 	reserved
+SELECT	reserved	reserved	reserved	reserved
+SELECTIVE	 	non-reserved	non-reserved
+SELF	 	non-reserved	non-reserved
+SENSITIVE	 	reserved	reserved
+SEQUENCE	non-reserved	non-reserved	non-reserved
+SEQUENCES	non-reserved
+SERIALIZABLE	non-reserved	non-reserved	non-reserved	non-reserved
+SERVER	non-reserved	non-reserved	non-reserved
+SERVER_NAME	 	non-reserved	non-reserved	non-reserved
+SESSION	non-reserved	non-reserved	non-reserved	reserved
+SESSION_USER	reserved	reserved	reserved	reserved
+SET	non-reserved	reserved	reserved	reserved
+SETOF	non-reserved (cannot be function or type)
+SETS	non-reserved	non-reserved	non-reserved
+SHARE	non-reserved
+SHOW	non-reserved	reserved
+SIMILAR	reserved (can be function or type)	reserved	reserved
+SIMPLE	non-reserved	non-reserved	non-reserved
+SIN	 	reserved
+SINH	 	reserved
+SIZE	 	non-reserved	non-reserved	reserved
+SKIP	non-reserved	reserved
+SMALLINT	non-reserved (cannot be function or type)	reserved	reserved	reserved
+SNAPSHOT	non-reserved
+SOME	reserved	reserved	reserved	reserved
+SOURCE	 	non-reserved	non-reserved
+SPACE	 	non-reserved	non-reserved	reserved
+SPECIFIC	 	reserved	reserved
+SPECIFICTYPE	 	reserved	reserved
+SPECIFIC_NAME	 	non-reserved	non-reserved
+SQL	non-reserved	reserved	reserved	reserved
+SQLCODE	 	 	 	reserved
+SQLERROR	 	 	 	reserved
+SQLEXCEPTION	 	reserved	reserved
+SQLSTATE	 	reserved	reserved	reserved
+SQLWARNING	 	reserved	reserved
+SQRT	 	reserved	reserved
+STABLE	non-reserved
+STANDALONE	non-reserved	non-reserved	non-reserved
+START	non-reserved	reserved	reserved
+STATE	 	non-reserved	non-reserved
+STATEMENT	non-reserved	non-reserved	non-reserved
+STATIC	 	reserved	reserved
+STATISTICS	non-reserved
+STDDEV_POP	 	reserved	reserved
+STDDEV_SAMP	 	reserved	reserved
+STDIN	non-reserved
+STDOUT	non-reserved
+STORAGE	non-reserved
+STORED	non-reserved
+STRICT	non-reserved
+STRING	 	non-reserved
+STRIP	non-reserved	non-reserved	non-reserved
+STRUCTURE	 	non-reserved	non-reserved
+STYLE	 	non-reserved	non-reserved
+SUBCLASS_ORIGIN	 	non-reserved	non-reserved	non-reserved
+SUBMULTISET	 	reserved	reserved
+SUBSCRIPTION	non-reserved
+SUBSET	 	reserved
+SUBSTRING	non-reserved (cannot be function or type)	reserved	reserved	reserved
+SUBSTRING_REGEX	 	reserved	reserved
+SUCCEEDS	 	reserved	reserved
+SUM	 	reserved	reserved	reserved
+SUPPORT	non-reserved
+SYMMETRIC	reserved	reserved	reserved
+SYSID	non-reserved
+SYSTEM	non-reserved	reserved	reserved
+SYSTEM_TIME	 	reserved	reserved
+SYSTEM_USER	 	reserved	reserved	reserved
+T	 	non-reserved	non-reserved
+TABLE	reserved	reserved	reserved	reserved
+TABLES	non-reserved
+TABLESAMPLE	reserved (can be function or type)	reserved	reserved
+TABLESPACE	non-reserved
+TABLE_NAME	 	non-reserved	non-reserved	non-reserved
+TAN	 	reserved
+TANH	 	reserved
+TEMP	non-reserved
+TEMPLATE	non-reserved
+TEMPORARY	non-reserved	non-reserved	non-reserved	reserved
+TEXT	non-reserved
+THEN	reserved	reserved	reserved	reserved
+THROUGH	 	non-reserved
+TIES	non-reserved	non-reserved	non-reserved
+TIME	non-reserved (cannot be function or type)	reserved	reserved	reserved
+TIMESTAMP	non-reserved (cannot be function or type)	reserved	reserved	reserved
+TIMEZONE_HOUR	 	reserved	reserved	reserved
+TIMEZONE_MINUTE	 	reserved	reserved	reserved
+TO	reserved, requires AS	reserved	reserved	reserved
+TOKEN	 	non-reserved	non-reserved
+TOP_LEVEL_COUNT	 	non-reserved	non-reserved
+TRAILING	reserved	reserved	reserved	reserved
+TRANSACTION	non-reserved	non-reserved	non-reserved	reserved
+TRANSACTIONS_​COMMITTED	 	non-reserved	non-reserved
+TRANSACTIONS_​ROLLED_​BACK	 	non-reserved	non-reserved
+TRANSACTION_ACTIVE	 	non-reserved	non-reserved
+TRANSFORM	non-reserved	non-reserved	non-reserved
+TRANSFORMS	 	non-reserved	non-reserved
+TRANSLATE	 	reserved	reserved	reserved
+TRANSLATE_REGEX	 	reserved	reserved
+TRANSLATION	 	reserved	reserved	reserved
+TREAT	non-reserved (cannot be function or type)	reserved	reserved
+TRIGGER	non-reserved	reserved	reserved
+TRIGGER_CATALOG	 	non-reserved	non-reserved
+TRIGGER_NAME	 	non-reserved	non-reserved
+TRIGGER_SCHEMA	 	non-reserved	non-reserved
+TRIM	non-reserved (cannot be function or type)	reserved	reserved	reserved
+TRIM_ARRAY	 	reserved	reserved
+TRUE	reserved	reserved	reserved	reserved
+TRUNCATE	non-reserved	reserved	reserved
+TRUSTED	non-reserved
+TYPE	non-reserved	non-reserved	non-reserved	non-reserved
+TYPES	non-reserved
+UESCAPE	non-reserved	reserved	reserved
+UNBOUNDED	non-reserved	non-reserved	non-reserved
+UNCOMMITTED	non-reserved	non-reserved	non-reserved	non-reserved
+UNCONDITIONAL	 	non-reserved
+UNDER	 	non-reserved	non-reserved
+UNENCRYPTED	non-reserved
+UNION	reserved, requires AS	reserved	reserved	reserved
+UNIQUE	reserved	reserved	reserved	reserved
+UNKNOWN	non-reserved	reserved	reserved	reserved
+UNLINK	 	non-reserved	non-reserved
+UNLISTEN	non-reserved
+UNLOGGED	non-reserved
+UNMATCHED	 	reserved
+UNNAMED	 	non-reserved	non-reserved	non-reserved
+UNNEST	 	reserved	reserved
+UNTIL	non-reserved
+UNTYPED	 	non-reserved	non-reserved
+UPDATE	non-reserved	reserved	reserved	reserved
+UPPER	 	reserved	reserved	reserved
+URI	 	non-reserved	non-reserved
+USAGE	 	non-reserved	non-reserved	reserved
+USER	reserved	reserved	reserved	reserved
+USER_​DEFINED_​TYPE_​CATALOG	 	non-reserved	non-reserved
+USER_​DEFINED_​TYPE_​CODE	 	non-reserved	non-reserved
+USER_​DEFINED_​TYPE_​NAME	 	non-reserved	non-reserved
+USER_​DEFINED_​TYPE_​SCHEMA	 	non-reserved	non-reserved
+USING	reserved	reserved	reserved	reserved
+UTF16	 	non-reserved
+UTF32	 	non-reserved
+UTF8	 	non-reserved
+VACUUM	non-reserved
+VALID	non-reserved	non-reserved	non-reserved
+VALIDATE	non-reserved
+VALIDATOR	non-reserved
+VALUE	non-reserved	reserved	reserved	reserved
+VALUES	non-reserved (cannot be function or type)	reserved	reserved	reserved
+VALUE_OF	 	reserved	reserved
+VARBINARY	 	reserved	reserved
+VARCHAR	non-reserved (cannot be function or type)	reserved	reserved	reserved
+VARIADIC	reserved
+VARYING	non-reserved, requires AS	reserved	reserved	reserved
+VAR_POP	 	reserved	reserved
+VAR_SAMP	 	reserved	reserved
+VERBOSE	reserved (can be function or type)
+VERSION	non-reserved	non-reserved	non-reserved
+VERSIONING	 	reserved	reserved
+VIEW	non-reserved	non-reserved	non-reserved	reserved
+VIEWS	non-reserved
+VOLATILE	non-reserved
+WHEN	reserved	reserved	reserved	reserved
+WHENEVER	 	reserved	reserved	reserved
+WHERE	reserved, requires AS	reserved	reserved	reserved
+WHITESPACE	non-reserved	non-reserved	non-reserved
+WIDTH_BUCKET	 	reserved	reserved
+WINDOW	reserved, requires AS	reserved	reserved
+WITH	reserved, requires AS	reserved	reserved	reserved
+WITHIN	non-reserved, requires AS	reserved	reserved
+WITHOUT	non-reserved, requires AS	reserved	reserved
+WORK	non-reserved	non-reserved	non-reserved	reserved
+WRAPPER	non-reserved	non-reserved	non-reserved
+WRITE	non-reserved	non-reserved	non-reserved	reserved
+XML	non-reserved	reserved	reserved
+XMLAGG	 	reserved	reserved
+XMLATTRIBUTES	non-reserved (cannot be function or type)	reserved	reserved
+XMLBINARY	 	reserved	reserved
+XMLCAST	 	reserved	reserved
+XMLCOMMENT	 	reserved	reserved
+XMLCONCAT	non-reserved (cannot be function or type)	reserved	reserved
+XMLDECLARATION	 	non-reserved	non-reserved
+XMLDOCUMENT	 	reserved	reserved
+XMLELEMENT	non-reserved (cannot be function or type)	reserved	reserved
+XMLEXISTS	non-reserved (cannot be function or type)	reserved	reserved
+XMLFOREST	non-reserved (cannot be function or type)	reserved	reserved
+XMLITERATE	 	reserved	reserved
+XMLNAMESPACES	non-reserved (cannot be function or type)	reserved	reserved
+XMLPARSE	non-reserved (cannot be function or type)	reserved	reserved
+XMLPI	non-reserved (cannot be function or type)	reserved	reserved
+XMLQUERY	 	reserved	reserved
+XMLROOT	non-reserved (cannot be function or type)
+XMLSCHEMA	 	non-reserved	non-reserved
+XMLSERIALIZE	non-reserved (cannot be function or type)	reserved	reserved
+XMLTABLE	non-reserved (cannot be function or type)	reserved	reserved
+XMLTEXT	 	reserved	reserved
+XMLVALIDATE	 	reserved	reserved
+YEAR	non-reserved, requires AS	reserved	reserved	reserved
+YES	non-reserved	non-reserved	non-reserved
+ZONE	non-reserved	non-reserved	non-reserved	reserved

+ 3 - 654
src/pgsql/pgsql.ts

@@ -42,758 +42,107 @@ export const language = <languages.IMonarchLanguage>{
 	],
 
 	keywords: [
-		'A',
-		'ABORT',
-		'ABS',
-		'ABSENT',
-		'ABSOLUTE',
-		'ACCESS',
-		'ACCORDING',
-		'ACTION',
-		'ADA',
-		'ADD',
-		'ADMIN',
-		'AFTER',
-		'AGGREGATE',
+		// This list is generated using `keywords.js`
 		'ALL',
-		'ALLOCATE',
-		'ALSO',
-		'ALTER',
-		'ALWAYS',
 		'ANALYSE',
 		'ANALYZE',
 		'AND',
 		'ANY',
-		'ARE',
 		'ARRAY',
-		'ARRAY_AGG',
-		'ARRAY_MAX_CARDINALITY',
 		'AS',
 		'ASC',
-		'ASENSITIVE',
-		'ASSERTION',
-		'ASSIGNMENT',
 		'ASYMMETRIC',
-		'AT',
-		'ATOMIC',
-		'ATTRIBUTE',
-		'ATTRIBUTES',
 		'AUTHORIZATION',
-		'AVG',
-		'BACKWARD',
-		'BASE64',
-		'BEFORE',
-		'BEGIN',
-		'BEGIN_FRAME',
-		'BEGIN_PARTITION',
-		'BERNOULLI',
-		'BETWEEN',
-		'BIGINT',
 		'BINARY',
-		'BIT',
-		'BIT_LENGTH',
-		'BLOB',
-		'BLOCKED',
-		'BOM',
-		'BOOLEAN',
 		'BOTH',
-		'BREADTH',
-		'BY',
-		'C',
-		'CACHE',
-		'CALL',
-		'CALLED',
-		'CARDINALITY',
-		'CASCADE',
-		'CASCADED',
 		'CASE',
 		'CAST',
-		'CATALOG',
-		'CATALOG_NAME',
-		'CEIL',
-		'CEILING',
-		'CHAIN',
-		'CHAR',
-		'CHARACTER',
-		'CHARACTERISTICS',
-		'CHARACTERS',
-		'CHARACTER_LENGTH',
-		'CHARACTER_SET_CATALOG',
-		'CHARACTER_SET_NAME',
-		'CHARACTER_SET_SCHEMA',
-		'CHAR_LENGTH',
 		'CHECK',
-		'CHECKPOINT',
-		'CLASS',
-		'CLASS_ORIGIN',
-		'CLOB',
-		'CLOSE',
-		'CLUSTER',
-		'COALESCE',
-		'COBOL',
 		'COLLATE',
 		'COLLATION',
-		'COLLATION_CATALOG',
-		'COLLATION_NAME',
-		'COLLATION_SCHEMA',
-		'COLLECT',
 		'COLUMN',
-		'COLUMNS',
-		'COLUMN_NAME',
-		'COMMAND_FUNCTION',
-		'COMMAND_FUNCTION_CODE',
-		'COMMENT',
-		'COMMENTS',
-		'COMMIT',
-		'COMMITTED',
 		'CONCURRENTLY',
-		'CONDITION',
-		'CONDITION_NUMBER',
-		'CONFIGURATION',
-		'CONFLICT',
-		'CONNECT',
-		'CONNECTION',
-		'CONNECTION_NAME',
 		'CONSTRAINT',
-		'CONSTRAINTS',
-		'CONSTRAINT_CATALOG',
-		'CONSTRAINT_NAME',
-		'CONSTRAINT_SCHEMA',
-		'CONSTRUCTOR',
-		'CONTAINS',
-		'CONTENT',
-		'CONTINUE',
-		'CONTROL',
-		'CONVERSION',
-		'CONVERT',
-		'COPY',
-		'CORR',
-		'CORRESPONDING',
-		'COST',
-		'COUNT',
-		'COVAR_POP',
-		'COVAR_SAMP',
 		'CREATE',
 		'CROSS',
-		'CSV',
-		'CUBE',
-		'CUME_DIST',
-		'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_NAME',
-		'CYCLE',
-		'DATA',
-		'DATABASE',
-		'DATALINK',
-		'DATE',
-		'DATETIME_INTERVAL_CODE',
-		'DATETIME_INTERVAL_PRECISION',
-		'DAY',
-		'DB',
-		'DEALLOCATE',
-		'DEC',
-		'DECIMAL',
-		'DECLARE',
 		'DEFAULT',
-		'DEFAULTS',
 		'DEFERRABLE',
-		'DEFERRED',
-		'DEFINED',
-		'DEFINER',
-		'DEGREE',
-		'DELETE',
-		'DELIMITER',
-		'DELIMITERS',
-		'DENSE_RANK',
-		'DEPENDS',
-		'DEPTH',
-		'DEREF',
-		'DERIVED',
 		'DESC',
-		'DESCRIBE',
-		'DESCRIPTOR',
-		'DETERMINISTIC',
-		'DIAGNOSTICS',
-		'DICTIONARY',
-		'DISABLE',
-		'DISCARD',
-		'DISCONNECT',
-		'DISPATCH',
 		'DISTINCT',
-		'DLNEWCOPY',
-		'DLPREVIOUSCOPY',
-		'DLURLCOMPLETE',
-		'DLURLCOMPLETEONLY',
-		'DLURLCOMPLETEWRITE',
-		'DLURLPATH',
-		'DLURLPATHONLY',
-		'DLURLPATHWRITE',
-		'DLURLSCHEME',
-		'DLURLSERVER',
-		'DLVALUE',
 		'DO',
-		'DOCUMENT',
-		'DOMAIN',
-		'DOUBLE',
-		'DROP',
-		'DYNAMIC',
-		'DYNAMIC_FUNCTION',
-		'DYNAMIC_FUNCTION_CODE',
-		'EACH',
-		'ELEMENT',
 		'ELSE',
-		'EMPTY',
-		'ENABLE',
-		'ENCODING',
-		'ENCRYPTED',
 		'END',
-		'END-EXEC',
-		'END_FRAME',
-		'END_PARTITION',
-		'ENFORCED',
-		'ENUM',
-		'EQUALS',
-		'ESCAPE',
-		'EVENT',
-		'EVERY',
 		'EXCEPT',
-		'EXCEPTION',
-		'EXCLUDE',
-		'EXCLUDING',
-		'EXCLUSIVE',
-		'EXEC',
-		'EXECUTE',
-		'EXISTS',
-		'EXP',
-		'EXPLAIN',
-		'EXPRESSION',
-		'EXTENSION',
-		'EXTERNAL',
-		'EXTRACT',
 		'FALSE',
-		'FAMILY',
 		'FETCH',
-		'FILE',
-		'FILTER',
-		'FINAL',
-		'FIRST',
-		'FIRST_VALUE',
-		'FLAG',
-		'FLOAT',
-		'FLOOR',
-		'FOLLOWING',
 		'FOR',
-		'FORCE',
 		'FOREIGN',
-		'FORTRAN',
-		'FORWARD',
-		'FOUND',
-		'FRAME_ROW',
-		'FREE',
 		'FREEZE',
 		'FROM',
-		'FS',
 		'FULL',
-		'FUNCTION',
-		'FUNCTIONS',
-		'FUSION',
-		'G',
-		'GENERAL',
-		'GENERATED',
-		'GET',
-		'GLOBAL',
-		'GO',
-		'GOTO',
 		'GRANT',
-		'GRANTED',
-		'GREATEST',
 		'GROUP',
-		'GROUPING',
-		'GROUPS',
-		'HANDLER',
 		'HAVING',
-		'HEADER',
-		'HEX',
-		'HIERARCHY',
-		'HOLD',
-		'HOUR',
-		'ID',
-		'IDENTITY',
-		'IF',
-		'IGNORE',
 		'ILIKE',
-		'IMMEDIATE',
-		'IMMEDIATELY',
-		'IMMUTABLE',
-		'IMPLEMENTATION',
-		'IMPLICIT',
-		'IMPORT',
 		'IN',
-		'INCLUDING',
-		'INCREMENT',
-		'INDENT',
-		'INDEX',
-		'INDEXES',
-		'INDICATOR',
-		'INHERIT',
-		'INHERITS',
 		'INITIALLY',
-		'INLINE',
 		'INNER',
-		'INOUT',
-		'INPUT',
-		'INSENSITIVE',
-		'INSERT',
-		'INSTANCE',
-		'INSTANTIABLE',
-		'INSTEAD',
-		'INT',
-		'INTEGER',
-		'INTEGRITY',
 		'INTERSECT',
-		'INTERSECTION',
-		'INTERVAL',
 		'INTO',
-		'INVOKER',
 		'IS',
 		'ISNULL',
-		'ISOLATION',
 		'JOIN',
-		'K',
-		'KEY',
-		'KEY_MEMBER',
-		'KEY_TYPE',
-		'LABEL',
-		'LAG',
-		'LANGUAGE',
-		'LARGE',
-		'LAST',
-		'LAST_VALUE',
 		'LATERAL',
-		'LEAD',
 		'LEADING',
-		'LEAKPROOF',
-		'LEAST',
 		'LEFT',
-		'LENGTH',
-		'LEVEL',
-		'LIBRARY',
 		'LIKE',
-		'LIKE_REGEX',
 		'LIMIT',
-		'LINK',
-		'LISTEN',
-		'LN',
-		'LOAD',
-		'LOCAL',
 		'LOCALTIME',
 		'LOCALTIMESTAMP',
-		'LOCATION',
-		'LOCATOR',
-		'LOCK',
-		'LOCKED',
-		'LOGGED',
-		'LOWER',
-		'M',
-		'MAP',
-		'MAPPING',
-		'MATCH',
-		'MATCHED',
-		'MATERIALIZED',
-		'MAX',
-		'MAXVALUE',
-		'MAX_CARDINALITY',
-		'MEMBER',
-		'MERGE',
-		'MESSAGE_LENGTH',
-		'MESSAGE_OCTET_LENGTH',
-		'MESSAGE_TEXT',
-		'METHOD',
-		'MIN',
-		'MINUTE',
-		'MINVALUE',
-		'MOD',
-		'MODE',
-		'MODIFIES',
-		'MODULE',
-		'MONTH',
-		'MORE',
-		'MOVE',
-		'MULTISET',
-		'MUMPS',
-		'NAME',
-		'NAMES',
-		'NAMESPACE',
-		'NATIONAL',
 		'NATURAL',
-		'NCHAR',
-		'NCLOB',
-		'NESTING',
-		'NEW',
-		'NEXT',
-		'NFC',
-		'NFD',
-		'NFKC',
-		'NFKD',
-		'NIL',
-		'NO',
-		'NONE',
-		'NORMALIZE',
-		'NORMALIZED',
 		'NOT',
-		'NOTHING',
-		'NOTIFY',
 		'NOTNULL',
-		'NOWAIT',
-		'NTH_VALUE',
-		'NTILE',
 		'NULL',
-		'NULLABLE',
-		'NULLIF',
-		'NULLS',
-		'NUMBER',
-		'NUMERIC',
-		'OBJECT',
-		'OCCURRENCES_REGEX',
-		'OCTETS',
-		'OCTET_LENGTH',
-		'OF',
-		'OFF',
 		'OFFSET',
-		'OIDS',
-		'OLD',
 		'ON',
 		'ONLY',
-		'OPEN',
-		'OPERATOR',
-		'OPTION',
-		'OPTIONS',
 		'OR',
 		'ORDER',
-		'ORDERING',
-		'ORDINALITY',
-		'OTHERS',
-		'OUT',
 		'OUTER',
-		'OUTPUT',
-		'OVER',
 		'OVERLAPS',
-		'OVERLAY',
-		'OVERRIDING',
-		'OWNED',
-		'OWNER',
-		'P',
-		'PAD',
-		'PARALLEL',
-		'PARAMETER',
-		'PARAMETER_MODE',
-		'PARAMETER_NAME',
-		'PARAMETER_ORDINAL_POSITION',
-		'PARAMETER_SPECIFIC_CATALOG',
-		'PARAMETER_SPECIFIC_NAME',
-		'PARAMETER_SPECIFIC_SCHEMA',
-		'PARSER',
-		'PARTIAL',
-		'PARTITION',
-		'PASCAL',
-		'PASSING',
-		'PASSTHROUGH',
-		'PASSWORD',
-		'PATH',
-		'PERCENT',
-		'PERCENTILE_CONT',
-		'PERCENTILE_DISC',
-		'PERCENT_RANK',
-		'PERIOD',
-		'PERMISSION',
 		'PLACING',
-		'PLANS',
-		'PLI',
-		'POLICY',
-		'PORTION',
-		'POSITION',
-		'POSITION_REGEX',
-		'POWER',
-		'PRECEDES',
-		'PRECEDING',
-		'PRECISION',
-		'PREPARE',
-		'PREPARED',
-		'PRESERVE',
 		'PRIMARY',
-		'PRIOR',
-		'PRIVILEGES',
-		'PROCEDURAL',
-		'PROCEDURE',
-		'PROGRAM',
-		'PUBLIC',
-		'QUOTE',
-		'RANGE',
-		'RANK',
-		'READ',
-		'READS',
-		'REAL',
-		'REASSIGN',
-		'RECHECK',
-		'RECOVERY',
-		'RECURSIVE',
-		'REF',
 		'REFERENCES',
-		'REFERENCING',
-		'REFRESH',
-		'REGR_AVGX',
-		'REGR_AVGY',
-		'REGR_COUNT',
-		'REGR_INTERCEPT',
-		'REGR_R2',
-		'REGR_SLOPE',
-		'REGR_SXX',
-		'REGR_SXY',
-		'REGR_SYY',
-		'REINDEX',
-		'RELATIVE',
-		'RELEASE',
-		'RENAME',
-		'REPEATABLE',
-		'REPLACE',
-		'REPLICA',
-		'REQUIRING',
-		'RESET',
-		'RESPECT',
-		'RESTART',
-		'RESTORE',
-		'RESTRICT',
-		'RESULT',
-		'RETURN',
-		'RETURNED_CARDINALITY',
-		'RETURNED_LENGTH',
-		'RETURNED_OCTET_LENGTH',
-		'RETURNED_SQLSTATE',
 		'RETURNING',
-		'RETURNS',
-		'REVOKE',
 		'RIGHT',
-		'ROLE',
-		'ROLLBACK',
-		'ROLLUP',
-		'ROUTINE',
-		'ROUTINE_CATALOG',
-		'ROUTINE_NAME',
-		'ROUTINE_SCHEMA',
-		'ROW',
-		'ROWS',
-		'ROW_COUNT',
-		'ROW_NUMBER',
-		'RULE',
-		'SAVEPOINT',
-		'SCALE',
-		'SCHEMA',
-		'SCHEMA_NAME',
-		'SCOPE',
-		'SCOPE_CATALOG',
-		'SCOPE_NAME',
-		'SCOPE_SCHEMA',
-		'SCROLL',
-		'SEARCH',
-		'SECOND',
-		'SECTION',
-		'SECURITY',
 		'SELECT',
-		'SELECTIVE',
-		'SELF',
-		'SENSITIVE',
-		'SEQUENCE',
-		'SEQUENCES',
-		'SERIALIZABLE',
-		'SERVER',
-		'SERVER_NAME',
-		'SESSION',
 		'SESSION_USER',
-		'SET',
-		'SETOF',
-		'SETS',
-		'SHARE',
-		'SHOW',
 		'SIMILAR',
-		'SIMPLE',
-		'SIZE',
-		'SKIP',
-		'SMALLINT',
-		'SNAPSHOT',
 		'SOME',
-		'SOURCE',
-		'SPACE',
-		'SPECIFIC',
-		'SPECIFICTYPE',
-		'SPECIFIC_NAME',
-		'SQL',
-		'SQLCODE',
-		'SQLERROR',
-		'SQLEXCEPTION',
-		'SQLSTATE',
-		'SQLWARNING',
-		'SQRT',
-		'STABLE',
-		'STANDALONE',
-		'START',
-		'STATE',
-		'STATEMENT',
-		'STATIC',
-		'STATISTICS',
-		'STDDEV_POP',
-		'STDDEV_SAMP',
-		'STDIN',
-		'STDOUT',
-		'STORAGE',
-		'STRICT',
-		'STRIP',
-		'STRUCTURE',
-		'STYLE',
-		'SUBCLASS_ORIGIN',
-		'SUBMULTISET',
-		'SUBSTRING',
-		'SUBSTRING_REGEX',
-		'SUCCEEDS',
-		'SUM',
 		'SYMMETRIC',
-		'SYSID',
-		'SYSTEM',
-		'SYSTEM_TIME',
-		'SYSTEM_USER',
-		'T',
 		'TABLE',
-		'TABLES',
 		'TABLESAMPLE',
-		'TABLESPACE',
-		'TABLE_NAME',
-		'TEMP',
-		'TEMPLATE',
-		'TEMPORARY',
-		'TEXT',
 		'THEN',
-		'TIES',
-		'TIME',
-		'TIMESTAMP',
-		'TIMEZONE_HOUR',
-		'TIMEZONE_MINUTE',
 		'TO',
-		'TOKEN',
-		'TOP_LEVEL_COUNT',
 		'TRAILING',
-		'TRANSACTION',
-		'TRANSACTIONS_COMMITTED',
-		'TRANSACTIONS_ROLLED_BACK',
-		'TRANSACTION_ACTIVE',
-		'TRANSFORM',
-		'TRANSFORMS',
-		'TRANSLATE',
-		'TRANSLATE_REGEX',
-		'TRANSLATION',
-		'TREAT',
-		'TRIGGER',
-		'TRIGGER_CATALOG',
-		'TRIGGER_NAME',
-		'TRIGGER_SCHEMA',
-		'TRIM',
-		'TRIM_ARRAY',
 		'TRUE',
-		'TRUNCATE',
-		'TRUSTED',
-		'TYPE',
-		'TYPES',
-		'UESCAPE',
-		'UNBOUNDED',
-		'UNCOMMITTED',
-		'UNDER',
-		'UNENCRYPTED',
 		'UNION',
 		'UNIQUE',
-		'UNKNOWN',
-		'UNLINK',
-		'UNLISTEN',
-		'UNLOGGED',
-		'UNNAMED',
-		'UNNEST',
-		'UNTIL',
-		'UNTYPED',
-		'UPDATE',
-		'UPPER',
-		'URI',
-		'USAGE',
 		'USER',
-		'USER_DEFINED_TYPE_CATALOG',
-		'USER_DEFINED_TYPE_CODE',
-		'USER_DEFINED_TYPE_NAME',
-		'USER_DEFINED_TYPE_SCHEMA',
 		'USING',
-		'VACUUM',
-		'VALID',
-		'VALIDATE',
-		'VALIDATOR',
-		'VALUE',
-		'VALUES',
-		'VALUE_OF',
-		'VARBINARY',
-		'VARCHAR',
 		'VARIADIC',
-		'VARYING',
-		'VAR_POP',
-		'VAR_SAMP',
 		'VERBOSE',
-		'VERSION',
-		'VERSIONING',
-		'VIEW',
-		'VIEWS',
-		'VOLATILE',
 		'WHEN',
-		'WHENEVER',
 		'WHERE',
-		'WHITESPACE',
-		'WIDTH_BUCKET',
 		'WINDOW',
-		'WITH',
-		'WITHIN',
-		'WITHOUT',
-		'WORK',
-		'WRAPPER',
-		'WRITE',
-		'XML',
-		'XMLAGG',
-		'XMLATTRIBUTES',
-		'XMLBINARY',
-		'XMLCAST',
-		'XMLCOMMENT',
-		'XMLCONCAT',
-		'XMLDECLARATION',
-		'XMLDOCUMENT',
-		'XMLELEMENT',
-		'XMLEXISTS',
-		'XMLFOREST',
-		'XMLITERATE',
-		'XMLNAMESPACES',
-		'XMLPARSE',
-		'XMLPI',
-		'XMLQUERY',
-		'XMLROOT',
-		'XMLSCHEMA',
-		'XMLSERIALIZE',
-		'XMLTABLE',
-		'XMLTEXT',
-		'XMLVALIDATE',
-		'YEAR',
-		'YES',
-		'ZONE'
+		'WITH'
 	],
 	operators: [
 		'AND',
@@ -1301,10 +650,10 @@ export const language = <languages.IMonarchLanguage>{
 				/[\w@#$]+/,
 				{
 					cases: {
-						'@keywords': 'keyword',
 						'@operators': 'operator',
 						'@builtinVariables': 'predefined',
 						'@builtinFunctions': 'predefined',
+						'@keywords': 'keyword',
 						'@default': 'identifier'
 					}
 				}

+ 612 - 0
src/sql/keywords.js

@@ -0,0 +1,612 @@
+/*---------------------------------------------------------------------------------------------
+ *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+const keywordsSet = new Set();
+
+addArrToSet(keywordsSet, getMicrosoftSQLKeywords());
+addArrToSet(keywordsSet, getSQLiteKeywords());
+
+const keywords = setToArr(keywordsSet);
+keywords.sort();
+console.log(`'${keywords.join("',\n'")}'`);
+
+function addArrToSet(set, arr) {
+	for (const el of arr) {
+		set.add(el);
+	}
+}
+
+function setToArr(set) {
+	const arr = [];
+	for (const el of set) {
+		arr.push(el);
+	}
+	return arr;
+}
+
+function getMicrosoftSQLKeywords() {
+	// https://docs.microsoft.com/en-us/sql/t-sql/language-elements/reserved-keywords-transact-sql?view=sql-server-ver15
+	return `
+		ADD
+		EXTERNAL
+		PROCEDURE
+		ALL
+		FETCH
+		PUBLIC
+		ALTER
+		FILE
+		RAISERROR
+		AND
+		FILLFACTOR
+		READ
+		ANY
+		FOR
+		READTEXT
+		AS
+		FOREIGN
+		RECONFIGURE
+		ASC
+		FREETEXT
+		REFERENCES
+		AUTHORIZATION
+		FREETEXTTABLE
+		REPLICATION
+		BACKUP
+		FROM
+		RESTORE
+		BEGIN
+		FULL
+		RESTRICT
+		BETWEEN
+		FUNCTION
+		RETURN
+		BREAK
+		GOTO
+		REVERT
+		BROWSE
+		GRANT
+		REVOKE
+		BULK
+		GROUP
+		RIGHT
+		BY
+		HAVING
+		ROLLBACK
+		CASCADE
+		HOLDLOCK
+		ROWCOUNT
+		CASE
+		IDENTITY
+		ROWGUIDCOL
+		CHECK
+		IDENTITY_INSERT
+		RULE
+		CHECKPOINT
+		IDENTITYCOL
+		SAVE
+		CLOSE
+		IF
+		SCHEMA
+		CLUSTERED
+		IN
+		SECURITYAUDIT
+		COALESCE
+		INDEX
+		SELECT
+		COLLATE
+		INNER
+		SEMANTICKEYPHRASETABLE
+		COLUMN
+		INSERT
+		SEMANTICSIMILARITYDETAILSTABLE
+		COMMIT
+		INTERSECT
+		SEMANTICSIMILARITYTABLE
+		COMPUTE
+		INTO
+		SESSION_USER
+		CONSTRAINT
+		IS
+		SET
+		CONTAINS
+		JOIN
+		SETUSER
+		CONTAINSTABLE
+		KEY
+		SHUTDOWN
+		CONTINUE
+		KILL
+		SOME
+		CONVERT
+		LEFT
+		STATISTICS
+		CREATE
+		LIKE
+		SYSTEM_USER
+		CROSS
+		LINENO
+		TABLE
+		CURRENT
+		LOAD
+		TABLESAMPLE
+		CURRENT_DATE
+		MERGE
+		TEXTSIZE
+		CURRENT_TIME
+		NATIONAL
+		THEN
+		CURRENT_TIMESTAMP
+		NOCHECK
+		TO
+		CURRENT_USER
+		NONCLUSTERED
+		TOP
+		CURSOR
+		NOT
+		TRAN
+		DATABASE
+		NULL
+		TRANSACTION
+		DBCC
+		NULLIF
+		TRIGGER
+		DEALLOCATE
+		OF
+		TRUNCATE
+		DECLARE
+		OFF
+		TRY_CONVERT
+		DEFAULT
+		OFFSETS
+		TSEQUAL
+		DELETE
+		ON
+		UNION
+		DENY
+		OPEN
+		UNIQUE
+		DESC
+		OPENDATASOURCE
+		UNPIVOT
+		DISK
+		OPENQUERY
+		UPDATE
+		DISTINCT
+		OPENROWSET
+		UPDATETEXT
+		DISTRIBUTED
+		OPENXML
+		USE
+		DOUBLE
+		OPTION
+		USER
+		DROP
+		OR
+		VALUES
+		DUMP
+		ORDER
+		VARYING
+		ELSE
+		OUTER
+		VIEW
+		END
+		OVER
+		WAITFOR
+		ERRLVL
+		PERCENT
+		WHEN
+		ESCAPE
+		PIVOT
+		WHERE
+		EXCEPT
+		PLAN
+		WHILE
+		EXEC
+		PRECISION
+		WITH
+		EXECUTE
+		PRIMARY
+		WITHIN GROUP
+		EXISTS
+		PRINT
+		WRITETEXT
+		EXIT
+		PROC
+		ABSOLUTE
+		EXEC
+		OVERLAPS
+		ACTION
+		EXECUTE
+		PAD
+		ADA
+		EXISTS
+		PARTIAL
+		ADD
+		EXTERNAL
+		PASCAL
+		ALL
+		EXTRACT
+		POSITION
+		ALLOCATE
+		FALSE
+		PRECISION
+		ALTER
+		FETCH
+		PREPARE
+		AND
+		FIRST
+		PRESERVE
+		ANY
+		FLOAT
+		PRIMARY
+		ARE
+		FOR
+		PRIOR
+		AS
+		FOREIGN
+		PRIVILEGES
+		ASC
+		FORTRAN
+		PROCEDURE
+		ASSERTION
+		FOUND
+		PUBLIC
+		AT
+		FROM
+		READ
+		AUTHORIZATION
+		FULL
+		REAL
+		AVG
+		GET
+		REFERENCES
+		BEGIN
+		GLOBAL
+		RELATIVE
+		BETWEEN
+		GO
+		RESTRICT
+		BIT
+		GOTO
+		REVOKE
+		BIT_LENGTH
+		GRANT
+		RIGHT
+		BOTH
+		GROUP
+		ROLLBACK
+		BY
+		HAVING
+		ROWS
+		CASCADE
+		HOUR
+		SCHEMA
+		CASCADED
+		IDENTITY
+		SCROLL
+		CASE
+		IMMEDIATE
+		SECOND
+		CAST
+		IN
+		SECTION
+		CATALOG
+		INCLUDE
+		SELECT
+		CHAR
+		INDEX
+		SESSION
+		CHAR_LENGTH
+		INDICATOR
+		SESSION_USER
+		CHARACTER
+		INITIALLY
+		SET
+		CHARACTER_LENGTH
+		INNER
+		SIZE
+		CHECK
+		INPUT
+		SMALLINT
+		CLOSE
+		INSENSITIVE
+		SOME
+		COALESCE
+		INSERT
+		SPACE
+		COLLATE
+		INT
+		SQL
+		COLLATION
+		INTEGER
+		SQLCA
+		COLUMN
+		INTERSECT
+		SQLCODE
+		COMMIT
+		INTERVAL
+		SQLERROR
+		CONNECT
+		INTO
+		SQLSTATE
+		CONNECTION
+		IS
+		SQLWARNING
+		CONSTRAINT
+		ISOLATION
+		SUBSTRING
+		CONSTRAINTS
+		JOIN
+		SUM
+		CONTINUE
+		KEY
+		SYSTEM_USER
+		CONVERT
+		LANGUAGE
+		TABLE
+		CORRESPONDING
+		LAST
+		TEMPORARY
+		COUNT
+		LEADING
+		THEN
+		CREATE
+		LEFT
+		TIME
+		CROSS
+		LEVEL
+		TIMESTAMP
+		CURRENT
+		LIKE
+		TIMEZONE_HOUR
+		CURRENT_DATE
+		LOCAL
+		TIMEZONE_MINUTE
+		CURRENT_TIME
+		LOWER
+		TO
+		CURRENT_TIMESTAMP
+		MATCH
+		TRAILING
+		CURRENT_USER
+		MAX
+		TRANSACTION
+		CURSOR
+		MIN
+		TRANSLATE
+		DATE
+		MINUTE
+		TRANSLATION
+		DAY
+		MODULE
+		TRIM
+		DEALLOCATE
+		MONTH
+		TRUE
+		DEC
+		NAMES
+		UNION
+		DECIMAL
+		NATIONAL
+		UNIQUE
+		DECLARE
+		NATURAL
+		UNKNOWN
+		DEFAULT
+		NCHAR
+		UPDATE
+		DEFERRABLE
+		NEXT
+		UPPER
+		DEFERRED
+		NO
+		USAGE
+		DELETE
+		NONE
+		USER
+		DESC
+		NOT
+		USING
+		DESCRIBE
+		NULL
+		VALUE
+		DESCRIPTOR
+		NULLIF
+		VALUES
+		DIAGNOSTICS
+		NUMERIC
+		VARCHAR
+		DISCONNECT
+		OCTET_LENGTH
+		VARYING
+		DISTINCT
+		OF
+		VIEW
+		DOMAIN
+		ON
+		WHEN
+		DOUBLE
+		ONLY
+		WHENEVER
+		DROP
+		OPEN
+		WHERE
+		ELSE
+		OPTION
+		WITH
+		END
+		OR
+		WORK
+		END-EXEC
+		ORDER
+		WRITE
+		ESCAPE
+		OUTER
+		YEAR
+		EXCEPT
+		OUTPUT
+		ZONE
+		EXCEPTION
+	`
+		.split(/\r\n|\r|\n/)
+		.map((t) => t.trim())
+		.filter((t) => !!t);
+}
+
+function getSQLiteKeywords() {
+	// https://www.sqlite.org/lang_keywords.html
+	return `
+		ABORT
+		ACTION
+		ADD
+		AFTER
+		ALL
+		ALTER
+		ALWAYS
+		ANALYZE
+		AND
+		AS
+		ASC
+		ATTACH
+		AUTOINCREMENT
+		BEFORE
+		BEGIN
+		BETWEEN
+		BY
+		CASCADE
+		CASE
+		CAST
+		CHECK
+		COLLATE
+		COLUMN
+		COMMIT
+		CONFLICT
+		CONSTRAINT
+		CREATE
+		CROSS
+		CURRENT
+		CURRENT_DATE
+		CURRENT_TIME
+		CURRENT_TIMESTAMP
+		DATABASE
+		DEFAULT
+		DEFERRABLE
+		DEFERRED
+		DELETE
+		DESC
+		DETACH
+		DISTINCT
+		DO
+		DROP
+		EACH
+		ELSE
+		END
+		ESCAPE
+		EXCEPT
+		EXCLUDE
+		EXCLUSIVE
+		EXISTS
+		EXPLAIN
+		FAIL
+		FILTER
+		FIRST
+		FOLLOWING
+		FOR
+		FOREIGN
+		FROM
+		FULL
+		GENERATED
+		GLOB
+		GROUP
+		GROUPS
+		HAVING
+		IF
+		IGNORE
+		IMMEDIATE
+		IN
+		INDEX
+		INDEXED
+		INITIALLY
+		INNER
+		INSERT
+		INSTEAD
+		INTERSECT
+		INTO
+		IS
+		ISNULL
+		JOIN
+		KEY
+		LAST
+		LEFT
+		LIKE
+		LIMIT
+		MATCH
+		MATERIALIZED
+		NATURAL
+		NO
+		NOT
+		NOTHING
+		NOTNULL
+		NULL
+		NULLS
+		OF
+		OFFSET
+		ON
+		OR
+		ORDER
+		OTHERS
+		OUTER
+		OVER
+		PARTITION
+		PLAN
+		PRAGMA
+		PRECEDING
+		PRIMARY
+		QUERY
+		RAISE
+		RANGE
+		RECURSIVE
+		REFERENCES
+		REGEXP
+		REINDEX
+		RELEASE
+		RENAME
+		REPLACE
+		RESTRICT
+		RETURNING
+		RIGHT
+		ROLLBACK
+		ROW
+		ROWS
+		SAVEPOINT
+		SELECT
+		SET
+		TABLE
+		TEMP
+		TEMPORARY
+		THEN
+		TIES
+		TO
+		TRANSACTION
+		TRIGGER
+		UNBOUNDED
+		UNION
+		UNIQUE
+		UPDATE
+		USING
+		VACUUM
+		VALUES
+		VIEW
+		VIRTUAL
+		WHEN
+		WHERE
+		WINDOW
+		WITH
+		WITHOUT
+	`
+		.split(/\r\n|\r|\n/)
+		.map((t) => t.trim())
+		.filter((t) => !!t);
+}

ファイルの差分が大きいため隠しています
+ 151 - 694
src/sql/sql.ts


この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません