monaco-sql-languages
Version:
SQL languages for the Monaco Editor, based on monaco-languages.
1,050 lines (1,049 loc) • 29.6 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { TokenClassConsts } from '../../common/constants';
export const 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: "'" }
]
};
export const language = {
defaultToken: '',
tokenPostfix: '.sql',
ignoreCase: true,
brackets: [
{ open: '[', close: ']', token: TokenClassConsts.DELIMITER_SQUARE },
{ open: '(', close: ')', token: TokenClassConsts.DELIMITER_PAREN },
{ open: '{', close: '}', token: TokenClassConsts.DELIMITER_CURLY }
],
keywords: [
'ALL',
'ANALYSE',
'ANALYZE',
'AND',
'ANY',
'ARRAY',
'AS',
'ASC',
'ASYMMETRIC',
'AUTHORIZATION',
'BINARY',
'BOTH',
'CASE',
'CAST',
'CHECK',
'COLLATE',
'COLLATION',
'COLUMN',
'CONCURRENTLY',
'CONSTRAINT',
'CREATE',
'CROSS',
'CURRENT_CATALOG',
'CURRENT_DATE',
'CURRENT_ROLE',
'CURRENT_SCHEMA',
'CURRENT_TIME',
'CURRENT_TIMESTAMP',
'CURRENT_USER',
'DEFAULT',
'DEFERRABLE',
'DESC',
'DISTINCT',
'DO',
'ELSE',
'END',
'EXCEPT',
'FALSE',
'FETCH',
'FOR',
'FOREIGN',
'FREEZE',
'FROM',
'FULL',
'GRANT',
'GROUP',
'HAVING',
'ILIKE',
'IN',
'INITIALLY',
'INNER',
'INTERSECT',
'INTO',
'IS',
'ISNULL',
'JOIN',
'LATERAL',
'LEADING',
'LEFT',
'LIKE',
'LIMIT',
'LOCALTIME',
'LOCALTIMESTAMP',
'NATURAL',
'NOT',
'NOTNULL',
'NULL',
'OFFSET',
'ON',
'ONLY',
'OR',
'ORDER',
'OUTER',
'OVERLAPS',
'PLACING',
'PRIMARY',
'REFERENCES',
'RETURNING',
'RIGHT',
'SELECT',
'SESSION_USER',
'SIMILAR',
'SOME',
'SYMMETRIC',
'TABLE',
'TABLESAMPLE',
'THEN',
'TO',
'TRAILING',
'TRUE',
'UNION',
'UNIQUE',
'USER',
'USING',
'VARIADIC',
'VERBOSE',
'WHEN',
'WHERE',
'WINDOW',
'WITH',
// part of non-reserved keywords which is common
'ADD',
'AGGREGATE',
'BY',
'CLUSTER',
'COMMENT',
'DATABASE',
'DELETE',
'DROP',
'EXECUTE',
'EXPLAIN',
'FUNCTION',
'GRANTED',
'IF',
'INDEX',
'INSERT',
'KEY',
'LOAD',
'LOCATION',
'LOCK',
'LOCKED',
'LOGGED',
'MATCH',
'MOVE',
'PARTITION',
'PREPARE',
'PRIVILEGES',
'RANGE',
'READ',
'REASSIGN',
'REFERENCING',
'REFRESH',
'REINDEX',
'RELATIVE',
'RELEASE',
'RENAME',
'REPLACE',
'RESET',
'RETURNS',
'REVOKE',
'ROLE',
'ROLLBACK',
'ROLLUP',
'ROUTINE',
'ROWS',
'RULE',
'SCHEMA',
'SEARCH',
'SET',
'SHOW',
'STORED',
'SUBSCRIPTION',
'TABLES',
'TRANSACTION',
'TRIGGER',
'TRUNCATE',
'UPDATE',
'VALUE',
'VIEW'
],
operators: [
// Logical Operators: https://www.postgresql.org/docs/16/functions-logical.html
'AND',
'OR',
'NOT',
// Comparison Predicates: https://www.postgresql.org/docs/16/functions-comparison.html
'BETWEEN',
'IS',
'ISNULL',
'NOTNULL',
'NULL',
'TRUE',
'FALSE',
// Pattern Matching: https://www.postgresql.org/docs/16/functions-matching.html
'LIKE',
'SIMILAR',
'TO',
// https://www.postgresql.org/docs/16/functions-datetime.html
'OVERLAPS',
// Grouping Operations:https://www.postgresql.org/docs/16/functions-aggregate.html
'GROUPING',
// Subquery Expressions: https://www.postgresql.org/docs/16/functions-subquery.html
'EXISTS',
'IN',
'SOME',
'ALL',
'DISTINCT'
],
builtinFunctions: [
// Comparison Functions: https://www.postgresql.org/docs/16/functions-comparison.html
'NUM_NONNULLS',
'NUM_NULLS',
// Mathematical Functions:https://www.postgresql.org/docs/16/functions-math.html
'ABS',
'CBRT',
'CEIL',
'CEILING',
'DEGREES',
'DIV',
'ERF',
'ERFC',
'EXP',
'FACTORIAL',
'FLOOR',
'GCD',
'LCM',
'LN',
'LOG',
'LOG10',
'MIN_SCALE',
'MOD',
'PI',
'POWER',
'RADIANS',
'ROUND',
'SCALE',
'SIGN',
'SQRT',
'TRIM_SCALE',
'TRUNC',
'WIDTH_BUCKET',
// Random Functions
'RANDOM',
'RANDOM_NORMAL',
'SETSEED',
// Trigonometric Functions
'ACOS',
'ACOSD',
'ASIN',
'ASIND',
'ATAN',
'ATAND',
'ATAN2',
'ATAN2D',
'COS',
'COSD',
'COT',
'COTD',
'SIN',
'SIND',
'TAN',
'TAND',
// Hyperbolic Functions
'SINH',
'COSH',
'TANH',
'ASINH',
'ACOSH',
'ATANH',
// SQL String Functions: https://www.postgresql.org/docs/16/functions-string.html
'BTRIM',
'BIT_LENGTH',
'CHAR_LENGTH',
'CHARACTER_LENGTH',
'LOWER',
'LPAD',
'LTRIM',
'NORMALIZE',
'OCTET_LENGTH',
'OVERLAY',
'POSITION',
'RPAD',
'RTRIM',
'SUBSTRING',
'TRIM',
'UPPER',
// Other String Functions
'ASCII',
'CHR',
'CONCAT',
'CONCAT_WS',
'FORMAT',
'INITCAP',
'LEFT',
'LENGTH',
'MD5',
'PARSE_IDENT',
'PG_CLIENT_ENCODING',
'QUOTE_IDENT',
'QUOTE_LITERAL',
'QUOTE_NULLABLE',
'REGEXP_COUNT',
'REGEXP_INSTR',
'REGEXP_LIKE',
'REGEXP_MATCH',
'REGEXP_MATCHS',
'REGEXP_REPLACE',
'REGEXP_SPLIT_TO_ARRAY',
'REGEXP_SPLIT_TO_TABLE',
'REGEXP_SUBSTR',
'REPEAT',
'REPLACE',
'REVERSE',
'RIGHT',
'SPLIT_PART',
'STARTS_WITH',
'STRING_TO_ARRAY',
'STRING_TO_TABLE',
'STRPOS',
'SUBSTR',
'TO_ASCII',
'TO_HEX',
'TRANSLATE',
'UNISTR',
// format
'FORMAT',
// Binary String Functions:https://www.postgresql.org/docs/16/functions-binarystring.html
'BIT_COUNT',
'GET_BIT',
'GET_BYTE',
'SET_BIT',
'SET_BYTE',
'SHA224',
'SHA256',
'SHA384',
'SHA512',
// Text/Binary String Conversion Functions
'CONVERT',
'CONVERT_FROM',
'CONVERT_TO',
'ENCODE',
'DECODE',
// Data Type Formatting Functions :https://www.postgresql.org/docs/16/functions-formatting.html
'TO_CHAR',
'TO_DATE',
'TO_NUMBER',
'TO_TIMESTAMP',
// Date/Time Functions: https://postgresql.org/docs/16/functions-datetime.html
'AGE',
'CLOCK_TIMESTAMP',
'CURRENT_DATE',
'CURRENT_TIME',
'CURRENT_TIMESTAMP',
'DATE_ADD',
'DATE_BIN',
'DATE_PART',
'DATE_SUBTRACT',
'DATE_TRUNC',
'EXTRACT',
'ISFINITE',
'JUSTIFY_DAYS',
'JUSTIFY_HOURS',
'JUSTIFY_INTERVAL',
'LOCALTIME',
'LOCALTIMESTAMP',
'MAKE_DATE',
'MAKE_INTERVAL',
'MAKE_TIME',
'MAKE_TIMESTAMP',
'MAKE_TIMESTAMPTZ',
'NOW',
'STATEMENT_TIMESTAMP',
'TIMEOFDAY',
'TRANSACTION_TIMESTAMP',
'TO_TIMESTAMP',
// Delaying Execution
'PG_SLEEP',
'PG_SLEEP_FOR',
'PG_SLEEP_UNTIL',
// Enum Support Functions: https://www.postgresql.org/docs/16/functions-enum.html
'ENUM_FIRST',
'ENUM_LAST',
'ENUM_RANGE',
// Geometric Functions: https://www.postgresql.org/docs/16/functions-geometry.html
'AREA',
'CENTER',
'DIAGONAL',
'DIAMETER',
'HEIGHT',
'ISCLOSED',
'ISOPEN',
'NPOINTS',
'PCLOSE',
'POPEN',
'RADIUS',
'SLOPE',
'WIDTH',
// Geometric Type Conversion Functions
'BOX',
'BOUND_BOX',
'CIRCLE',
'LINE',
'LSEG',
'PATH',
'POINT',
'POLYGON',
// IP Address Functions: https://www.postgresql.org/docs/16/functions-net.html
'ABBREV',
'BROADCAST',
'FAMILY',
'HOST',
'HOSTMASK',
'INET_MERGE',
'INET_SAME_FAMILY',
'MASKLEN',
'NETMASK',
'NETWORK',
'SET_MASKLEN',
'TEXT',
// MAC Address Functions
'MACADDR8_SET7BIT',
// Text Search Functions:https://www.postgresql.org/docs/16/functions-textsearch.html
'ARRAY_TO_TSVECTOR',
'GET_CURRENT_TS_CONFIG',
'NUMNODE',
'PLAINTO_TSQUERY',
'PHRASETO_TSQURY',
'WEBSEARCH_TO_TSQUERY',
'QUERYTREE',
'SETWEIGHT',
'STRIP',
'TO_TSQUERY',
'TO_TSVECTOR',
'JSON_TO_TSVECTOR',
'TS_DELETE',
'TS_FILTER',
'TS_HEADLINE',
'TS_RANK',
'TS_RANK_CD',
'TS_REWRITE',
'TSQUERY_PHRASE',
'TSVECTOR_TO_ARRAY',
'UNNEST',
// Text Search Debugging Functions
'TS_DEBUG',
'TS_LEXIZE',
'TS_PARSE',
'TS_TOKEN_TYPE',
'TS_STAT',
// UUID Functions: https://www.postgresql.org/docs/16/functions-uuid.html
'GEN_RANDOM_UUID',
// XML Functions: https://www.postgresql.org/docs/16/functions-xml.html
'XMLCOMMENT',
'XMLCONCAT',
'XMLELEMENT',
'XMLFOREST',
'XMLPI',
'XMLROOT',
'XMLAGG',
'XMLEXISTS',
'XML_IS_WELL_FORMED',
'XPATH',
'XPATH_EXISTS',
'XMLTABLE',
'TABLE_TO_XML',
'QUERY_TO_XML',
'CURSOR_TO_XML',
'TABLE_TO_XMLSCHEMA',
'QUERY_TO_XMLSCHEMA',
'CURSOR_TO_XMLSCHEMA',
'TABLE_TO_XML_AND_XMLSCHEMA',
'QUERY_TO_XML_AND_XMLSCHEMA',
'CURSOR_TO_XML_AND_XMLSCHEMA',
'SCHEMA_TO_XML',
'SCHEMA_TO_XMLSCHEMA',
'SCHEMA_TO_XML_AND_XMLSCHEMA',
'DATABSE_TO_XML',
'DATABSE_TO_XMLSCHEMA',
'DATABSE_TO_XML_AND_XMLSCHEMA',
'XMLPARSE',
// JSON Functions and Operators: https://www.postgresql.org/docs/16/functions-json.html
'TO_JSON',
'TO_JSONB',
'ARRAY_TO_JSON',
'JSON_ARRAY',
'ROW_TO_JSON',
'JSON_BUILD_ARRAY',
'JSONB_BUILD_ARRAY',
'JSON_OBJECT',
'JSONB_OBJECT',
'JSON_ARRAY_ELEMENTS',
'JSONB_ARRAY_ELEMENTS',
'JSON_ARRAY_ELEMENTS_TEXT',
'JSONB_ARRAY_ELEMENTS_TEXT',
'JSON_ARRAY_LENGTH',
'JSONB_ARRAY_LENGTH',
'JSON_EACH',
'JSONB_EACH',
'JSON_EACH_TEXT',
'JSONB_EACH_TEXT',
'JSON_EXTRACT_PATH',
'JSONB_EXTRACT_PATH',
'JSON_EXTRACT_PATH_TEXT',
'JSONB_EXTRACT_PATH_TEXT',
'JSON_OBJECT_KEYS',
'JSONB_OBJECT_KEYS',
'JSON_POPULATE_RECORD',
'JSONB_POPULATE_RECORD',
'JSON_POPULATE_RECORDSET',
'JSONB_POPULATE_RECORDSET',
'JSON_TO_RECORD',
'JSONB_TO_RECORD',
'JSON_TO_RECORDSET',
'JSONB_TO_RECORDSET',
'JSONB_SET',
'JSONB_SET_LAX',
'JSONB_INSERT',
'JSON_STRIP_NULLS',
'JSONB_STRIP_NULLS',
'JSONB_PATH_EXISTS',
'JSONB_PATH_MATCH',
'JSONB_PATH_QUERY',
'JSONB_PATH_QUERY_ARRAY',
'JSONB_PATH_QUERY_FIRST',
'JSONB_PATH_EXISTS_TZ',
'JSONB_PATH_MATCH_TZ',
'JSONB_PATH_QUERY_TZ',
'JSONB_PATH_QUERY_ARRAY_TZ',
'JSONB_PATH_QUERY_FIRST_TZ',
'JSONB_PRETTY',
'JSONB_TYPEOF',
'JSON_TYPEOF',
'TYPE',
'SIZE',
'DOUBLE',
'DATETIME',
'KEYVALUE',
// Sequence Manipulation Functions:https://www.postgresql.org/docs/16/functions-sequence.html
'NEXTVAL',
'SETVAL',
'CURRVAL',
'LASTVAL',
// https://www.postgresql.org/docs/16/functions-conditional.html
'COALESCE',
'NULLIF',
'GREATEST',
'LEAST',
// https://www.postgresql.org/docs/16/functions-array.html
'ARRAY_APPEND',
'ARRAY_CAT',
'ARRAY_DIMS',
'ARRAY_FILL',
'ARRAY_LENGTH',
'ARRAY_LOWER',
'ARRAY_NDIMS',
'ARRAY_POSITION',
'ARRAY_POSITIONS',
'ARRAY_PREPEND',
'ARRAY_REMOVE',
'ARRAY_REPLACE',
'ARRAY_SAMPLE',
'ARRAY_SHUFFLE',
'ARRAY_TO_STRING',
'ARRAY_UPPER',
'CARDINALITY',
'TRIM_ARRAY',
'UNNEST',
// Range Functions: https://www.postgresql.org/docs/16/functions-range.html
'ISEMPTY',
'LOWER_INC',
'UPPER_INC',
'LOWER_INF',
'UPPER_INF',
'RANGE_MERGE',
'MULTIRANGE',
// Aggregate Functions: https://www.postgresql.org/docs/16/functions-aggregate.html
'ANY_VALUE',
'ARRAY_AGG',
'AVG',
'BIT_AND',
'BIT_OR',
'BIT_XOR',
'BOOL_AND',
'BOOL_OR',
'EVERY',
'JSON_AGG',
'JSONB_AGG',
'JSON_OBJECT_AGG',
'JSONB_OBJECT_AGG',
'JSON_OBJECT_AGG_STRICT',
'JSONB_OBJECT_AGG_STRICT',
'JSON_OBJECT_AGG_UNIQUE',
'JSONB_OBJECT_AGG_UNIQUE',
'JSON_OBJECT_AGG_UNIQUE_STRICT',
'JSONB_OBJECT_AGG_UNIQUE_STRICT',
'MAX',
'MIN',
'RANGE_AGG',
'RANGE_INTERSECT_AGG',
'JSON_AGG_STRICT',
'JSONB_AGG_STRICT',
'STRING_AGG',
'SUM',
'XMLAGG',
'CORR',
'COVAR_POP',
'COVAR_SAMP',
'REGR_AVGX',
'REGR_AVGY',
'REGR_COUNT',
'REGR_INTERCEPT',
'REGR_R2',
'REGR_SLOPE',
'REGR_SXX',
'REGR_SXY',
'REGR_SYY',
'STDDEV',
'STDDEV_POP',
'STDDEV_SAMP',
'VARIANCE',
'VAR_POP',
'VAR_SAMP',
'PERCENTILE_CONT',
'PERCENTILE_DISC',
'RANK',
'SENSE_RANK',
'PERCENT_RANK',
'CUME_DIST',
// Window Functions: https://www.postgresql.org/docs/16/functions-window.html
'ROW_NUMBER',
'DENSE_RANK',
'NTILE',
'LAG',
'LEAD',
'FIRST_VALUE',
'LAST_VALUE',
'NTH_VALUE',
// Set Returning Functions:https://www.postgresql.org/docs/16/functions-srf.html
'GENERATE_SERIES',
'GENERATE_SUBSCRIPTS',
// Session Information Functions:https://www.postgresql.org/docs/16/functions-info.html
'CURRENT_CATALOG',
'CURRENT_DATABASE',
'CURRENT_QUERY',
'CURRENT_ROLE',
'CURRENT_SCHEMA',
'CURRENT_SCHEMAS',
'CURRENT_USER',
'INET_CLIENT_ADDR',
'INET_CLIENT_PORT',
'INET_SERVER_ADDR',
'INET_SERVER_PORT',
'PG_BACKEND_PID',
'PG_BLOCKING_PIDS',
'PG_CONF_LOAD_TIME',
'PG_CURRENT_LOGFILE',
'PG_MY_TEMP_SCHEMA',
'PG_IS_OTHER_TEMP_SCHEMA',
'PG_JIT_AVAILABLE',
'PG_LISTENING_CHANNELS',
'PG_NOTIFICATION_QUEUE_USAGE',
'PG_POSTMASTER_START_TIME',
'PG_SAFE_SNAPSHOT_BLOCKING_PIDS',
'PG_TRIGGER_DEPTH',
'SESSION_USER',
'SYSTEM_USER',
'USER',
'VERSION',
'HAS_TABLE_PRIVILEGE',
'HAS_ANY_COLUMN_PRIVILEGE',
'HAS_COLUMN_PRIVILEGE',
'HAS_DATABASE_PRIVILEGE',
'HAS_FOREIGN_DATA_WRAPPER_PRIVILEGE',
'HAS_FUNCTION_PRIVILEGE',
'HAS_LANGUAGE_PRIVILEGE',
'HAS_PARAMETER_PRIVILEGE',
'HAS_SCHEMA_PRIVILEGE',
'HAS_SEQUENCE_PRIVILEGE',
'HAS_SERVER_PRIVILEGE',
'HAS_TABLE_PRIVILEGE',
'HAS_TABLESPACE_PRIVILEGE',
'HAS_TYPE_PRIVILEGE',
'PG_HAS_ROLE',
'ROW_SECURITY_ACTIVE',
// aclitem Functions
'ACLDEFAULT',
'ACLEXPLODE',
'MAKEACLITEM',
// Schema Visibility Inquiry Functions
'PG_COLLACTION_IS_VISIBLE',
'PG_CONVERSION_IS_VISIBLE',
'PG_FUNCTION_IS_VISIBLE',
'PG_OPCLASS_IS_VISIBLE',
'PG_OPERATOR_IS_VISIBLE',
'PG_OPFAMILY_IS_VISIBLE',
'PG_STATISTICS_OBJ_IS_VISIBLE',
'PG_TABLE_IS_VISIBLE',
'PG_TS_CONFIG_IS_VISIBLE',
'PG_TS_DICT_IS_VISIBLE',
'PG_TS_PARSER_IS_VISIBLE',
'PG_TS_TEMPLATE_IS_VISIBLE',
'PG_TYPE_IS_VISIBLE',
'FORMAT_TYPE',
'PG_CHAR_TO_ENCODING',
'PG_ENCODING_TO_CHAR',
'PG_GET_CATALOG_FOREIGN_KEYS',
'PG_GET_CONSTRAINTDEF',
'PG_GET_EXPR',
'PG_GET_FUNCTIONDEF',
'PG_GET_FUNCTION_ARGUMENTS',
'PG_GET_FUNCTION_IDENTIFY_ARGUMENTS',
'PG_GET_FUNCTION_RESULT',
'PG_GET_KEYWORDS',
'PG_GET_PARTKEYDEF',
'PG_GET_RULEDEF',
'PG_GET_SERIAL_SEQUENCE',
'PG_GET_STATISTICSOBJDEF',
'PG_GET_TRIGGERDEF',
'PG_GET_USERBYID',
'PG_GET_VIEWDEF',
'PG_INDEX_COLUMN_HAS_PROPERTY',
'PG_INDEX_HAS_PROPERTY',
'PG_INDEXAM_HAS_PROPERTY',
'PG_OPTIONS_TO_TABLE',
'PG_SETTINGS_GET_FLAGS',
'PG_TABLESPACE_DATABASES',
'PG_TABLESPACE_LOCATION',
'PG_TYPEOF',
'TO_REGCLASS',
'TO_REGCOLLATION',
'TO_REGNAMESPACE',
'TO_REGOPER',
'TO_REGOPERATOR',
'TO_REGPROC',
'TO_REGPROCEDURE',
'TO_REGROLE',
'TO_REGTYPE',
// Object Information and Addressing Functions
'PG_DESCRIBE_OBJECT',
'PG_IDENTIFY_OBJECT',
'PG_IDENTIFY_OBJECT_AS_ADDRESS',
'PG_GET_OBJECT_ADDRESS',
// Comment Information Functions
'COL_DESCRIPTION',
'OBJ_DESCRIPTION',
'SHOBJ_DESCRIPTION',
// Data Validity Checking Functions
'PG_INPUT_IS_VALID',
'PG_INPUT_ERROR_INFO',
// Transaction ID and Snapshot Information Functions
'PG_CURRENT_XACT_ID',
'PG_CURRENT_XACT_ID_IF_ASSIGNED',
'PG_XACT_STATUS',
'PG_SNAPSHOT_XIP',
'PG_CURRENT_SNAPSHOT',
'PG_SNAPSHOT_XMAX',
'PG_SNAPSHOT_XMIN',
'PG_VISIBLE_IN_SNAPSHOT',
// Deprecated Transaction ID and Snapshot Information Functions
'TXID_CURRENT',
'TXID_CURRENT_IF_ASSIGNED',
'TXID_CURRENT_SNAPSHOT',
'TXID_SNAPSHOT_XIP',
'TXID_SNAPSHOT_XMAX',
'TXID_SNAPSHOT_XMIN',
'TXID_VISIBLE_IN_SNAPSHOT',
'TXID_STATUS',
// Committed Transaction Information Functions
'PG_XACT_COMMIT_TIMESTAMP',
'PG_XACT_COMMIT_TIMESTAMP_ORIGIN',
'PG_LAST_COMMITED_XACT',
// Control Data Functions
'PG_CONTROL_CHECKPOINT',
'PG_CONTROL_SYSTEM',
'PG_CONTROL_INIT',
'PG_CONTROL_RECOVERY',
// System Administration Functions:https://www.postgresql.org/docs/16/functions-admin.html
'CURRENT_SETTING',
'SET_CONFIG',
'PG_CANCEL_BACKEND',
'PG_LOG_BACKEND_MEMORY_CONTEXTS',
'PG_RELOAD_CONF',
'PG_ROTATE_LOGFILE',
'PG_TERMINATE_BACKEND',
// Backup Control Functions
'PG_CREATE_RESTORE_POINT',
'PG_CURRENT_WAL_FLUSH_LSN',
'PG_CURRENT_WAL_LSN',
'PG_BACKUP_START',
'PG_BACKUP_STOP',
'PG_SWITCH_WAL',
'PG_WALFILE_NAME',
'PG_WALFILE_NAME_OFFSET',
'PG_SPLIT_WALFILE_NAME',
'PG_WAL_LSN_DIFF',
// Recovery Control Functions
'PG_IS_IN_RECOVERY',
'PG_LAST_WAL_REPLAY_LSN',
'PG_LAST_XACT_REPLAY_TIMESTAMP',
'PG_GET_WAL_RESOURCE_MANAGERS',
'PG_IS_WAL_REPLAY_PAUSED',
'PG_GET_WAL_REPLAY_PAUSE_STATE',
'PG_PROMOTE',
'PG_WAL_REPLAY_PAUSE',
'PG_WAL_REPLAY_RESUME',
// Snapshot Synchronization Functions
'PG_EXPORT_SNAPSHOT',
'PG_LOG_STANDBY_SNAPSHOT',
// Replication Management Functions
'PG_CREATE_PHYSICAL_REPLICATION_SLOT',
'PG_DROP_REPLICATION_SLOT',
'PG_CREATE_LOGICAL_REPLICATION_SLOT',
'PG_COPY_PHYSICAL_REPLICATION_SLOT',
'PG_COPY_LOGICAL_REPLICATION_SLOT',
'PG_LOGICAL_SLOT_GET_CHANGES',
'PG_LOGICAL_SLOT_PEEK_CHANGES',
'PG_LOGICAL_SLOT_GET_BINARY_CHANGES',
'PG_LOGICAL_SLOT_PEEK_BINARY_CHANGES',
'PG_REPLICATION_SLOT_ADVANCE',
'PG_REPLICATION_ORIGIN_CREATE',
'PG_REPLICATION_ORIGIN_DROP',
'PG_REPLICATION_ORIGIN_OID',
'PG_REPLICATION_ORIGIN_SESSION_SETUP',
'PG_REPLICATION_ORIGIN_SESSION_RESET',
'PG_REPLICATION_ORIGIN_SESSION_IS_SETUP',
'PG_REPLICATION_ORIGIN_SESSION_PROGRESS',
'PG_REPLICATION_ORIGIN_XACT_SETUP',
'PG_REPLICATION_ORIGIN_XACT_RESET',
'PG_REPLICATION_ORIGIN_ADVANCE',
'PG_REPLICATION_ORIGIN_PROGRESS',
'PG_LOGICAL_EMIT_MESSAGE',
// Database Object Management Functions
'PG_COLUMN_SIZE',
'PG_COLUMN_COMPRESSION',
'PG_DATABASE_SIZE',
'PG_INDEXES_SIZE',
'PG_RELATION_SIZE',
'PG_SIZE_BYTES',
'PG_SIZE_PRETTY',
'PG_TABLE_SIZE',
'PG_TABLESPACE_SIZE',
'PG_TOTAL_RELATION_SIZE',
// Database Object Location Functions
'PG_RELATION_FILENODE',
'PG_RELATION_FILEPATH',
'PG_FILENODE_RELATION',
// Collation Management Functions
'PG_COLLATION_ACTUAL_VERSION',
'PG_DATABASE_COLLATION_ACTUAL_VERSION',
'PG_IMPORT_SYSTEM_COLLATIONS',
// Partitioning Information Functions
'PG_PARTITION_TREE',
'PG_PARTITION_ANCESTORS',
'PG_PARTITION_ROOT',
// Index Maintenance Functions
'BRIN_SUMMARIZE_NEW_VALUES',
'BRIN_SUMMARIZE_RANGE',
'BRIN_DESUMMARIZE_RANGE',
'GIN_CLEAN_PENDING_LIST',
// Generic File Access Functions
'PG_LS_DIR',
'PG_LS_LOGDIR',
'PG_LS_WALDIR',
'PG_LS_LOGICALSNAPDIR',
'PG_LS_REPLSLOTDIR',
'PG_LS_ARCHIVE_STATUSDIR',
'PG_LS_TMPDIR',
'PG_READ_FILE',
'PG_READ_BINARY_FILE',
'PG_STAT_FILE',
// Advisory Lock Functions
'PG_ADVISORY_LOCK',
'PG_ADVISORY_LOCK_SHARED',
'PG_ADVISORY_UNLOCK',
'PG_ADVISORY_UNLOCK_SHARED',
'PG_ADVISORY_UNLOCK_ALL',
'PG_ADVISORY_XACT_LOCK',
'PG_ADVISORY_XACT_LOCK_SHARED',
'PG_TRY_ADVISORY_LOCK',
'PG_TRY_ADVISORY_LOCK_SHARED',
'PG_TRY_ADVISORY_XACT_LOCK',
'PG_TRY_ADVISORY_XACT_LOCK_SHARED',
// Trigger Functions:https://www.postgresql.org/docs/16/functions-trigger.html
'SUPPRESS_REDUNDANT_UPDATES_TRIGGER',
'TSVECTOR_UPDATE_TRIGGER',
'TSVECTOR_UPDATE_TRIGGER_COLUMN',
// Event Trigger Functions:https://www.postgresql.org/docs/16/functions-event-triggers.html
'PG_EVENT_TRIGGER_DDL_COMMANDS',
'PG_EVENT_TRIGGER_DROPPED_OBJECTS',
'PG_EVENT_TRIGGER_TABLE_REWRITE_OID',
'PG_EVENT_TRIGGER_TABLE_REWRITE_REASON',
// Statistics Information Functions:https://www.postgresql.org/docs/16/functions-statistics.html
'PG_MCV_LIST_ITEMS'
],
builtinVariables: [
// NOT SUPPORTED
],
typeKeywords: [
// monaco-sql-language 自定义属性
// https://www.postgresql.org/docs/16/datatype.html
'SMALLINT',
'INTEGER',
'BIGINT',
'DECIMAL',
'NUMERIC',
'REAL',
'DOUBLE',
'PRECISION',
'SMALLSERIAL',
'SERIAL',
'BIGSERIAL',
'CHARACTER',
'VARYING',
'VARCHAR',
'CHARACTER',
'CAHR',
'BPCHAR',
'TEXT',
'BYTEA',
'JSON',
'GEOMETRY',
'MAP',
'ARRAY',
'INT',
'TIMESTAMP',
'DATE',
'INTERVAL',
'TIME',
'BOOLEAN',
'ENUM',
'NONE',
'INT4RANGE',
'INT8RANGE',
'NUMRANGE',
'TSRANGE',
'TSTZRANGE',
'DATERANGE',
'ANY',
'INTERNAL',
'UNKNOWN'
],
scopeKeywords: ['PREPARE', 'END', 'DECLARE', 'CASE', 'WHEN', 'THEN', 'ELSE'],
pseudoColumns: [
// Not support
],
tokenizer: {
root: [
{ include: '@comments' },
{ include: '@whitespace' },
{ include: '@pseudoColumns' },
{ include: '@customParams' },
{ include: '@numbers' },
{ include: '@strings' },
{ include: '@complexIdentifiers' },
{ include: '@scopes' },
{ include: '@complexDataTypes' },
[/[:;,.]/, TokenClassConsts.DELIMITER],
[/[\(\)\[\]\{\}]/, '@brackets'],
[
/[\w@#$]+/,
{
cases: {
'@scopeKeywords': TokenClassConsts.KEYWORD_SCOPE,
'@operators': TokenClassConsts.OPERATOR_KEYWORD,
'@typeKeywords': TokenClassConsts.TYPE,
'@builtinVariables': TokenClassConsts.VARIABLE,
'@builtinFunctions': TokenClassConsts.PREDEFINED,
'@keywords': TokenClassConsts.KEYWORD,
'@default': TokenClassConsts.IDENTIFIER
}
}
],
[/[<>=!%&+\-*/|~^]/, TokenClassConsts.OPERATOR_SYMBOL]
],
whitespace: [[/\s+/, TokenClassConsts.WHITE]],
comments: [
[/--+.*/, TokenClassConsts.COMMENT],
[/\/\*/, { token: TokenClassConsts.COMMENT_QUOTE, next: '@comment' }]
],
comment: [
[/[^*/]+/, TokenClassConsts.COMMENT],
// Not supporting nested comments, as nested comments seem to not be standard?
// [/\/\*/, { token: 'comment.quote', next: '@push' }], // nested comment not allowed :-(
[/\*\//, { token: TokenClassConsts.COMMENT_QUOTE, next: '@pop' }],
[/./, TokenClassConsts.COMMENT]
],
pseudoColumns: [
// Not support
],
customParams: [
[/\${[A-Za-z0-9._-]*}/, TokenClassConsts.VARIABLE],
[/\@\@{[A-Za-z0-9._-]*}/, TokenClassConsts.VARIABLE]
],
numbers: [
[/0[xX][0-9a-fA-F]*/, TokenClassConsts.NUMBER_HEX],
[/[$][+-]*\d*(\.\d*)?/, TokenClassConsts.NUMBER],
[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, TokenClassConsts.NUMBER]
],
strings: [
[/'/, { token: TokenClassConsts.STRING, next: '@string' }],
[/"/, { token: TokenClassConsts.STRING, next: '@stringDouble' }]
],
string: [
[/[^']+/, TokenClassConsts.STRING_ESCAPE],
[/''/, TokenClassConsts.STRING],
[/'/, { token: TokenClassConsts.STRING, next: '@pop' }]
],
stringDouble: [
[/[^"]+/, TokenClassConsts.STRING_ESCAPE],
[/""/, TokenClassConsts.STRING],
[/"/, { token: TokenClassConsts.STRING, next: '@pop' }]
],
complexIdentifiers: [
[/`/, { token: TokenClassConsts.IDENTIFIER_QUOTE, next: '@quotedIdentifier' }]
],
quotedIdentifier: [
[/[^`]+/, TokenClassConsts.IDENTIFIER_QUOTE],
[/``/, TokenClassConsts.IDENTIFIER_QUOTE],
[/`/, { token: TokenClassConsts.IDENTIFIER_QUOTE, next: '@pop' }]
],
scopes: [
// Not support
],
complexDataTypes: [
[/DOUBLE\s+PRECISION\b/i, { token: TokenClassConsts.TYPE }],
[/REFERENCES\b/i, { token: TokenClassConsts.TYPE }]
]
}
};