/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
export var 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 var language = {
    defaultToken: '',
    tokenPostfix: '.sql',
    ignoreCase: true,
    brackets: [
        { open: '[', close: ']', token: 'delimiter.square' },
        { open: '(', close: ')', token: 'delimiter.parenthesis' }
    ],
    keywords: [
        'A',
        'ABORT',
        'ABS',
        'ABSENT',
        'ABSOLUTE',
        'ACCESS',
        'ACCORDING',
        'ACTION',
        'ADA',
        'ADD',
        'ADMIN',
        'AFTER',
        'AGGREGATE',
        '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'
    ],
    operators: [
        'AND',
        'BETWEEN',
        'IN',
        'LIKE',
        'NOT',
        'OR',
        'IS',
        'NULL',
        'INTERSECT',
        'UNION',
        'INNER',
        'JOIN',
        'LEFT',
        'OUTER',
        'RIGHT'
    ],
    builtinFunctions: [
        'abbrev',
        'abs',
        'acos',
        'acosd',
        'age',
        'any',
        'area',
        'array_agg',
        '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_to_json',
        'array_to_string',
        'array_to_tsvector',
        'array_upper',
        'ascii',
        'asin',
        'asind',
        'atan',
        'atan2',
        'atan2d',
        'atand',
        'avg',
        'bit',
        'bit_and',
        'bit_length',
        'bit_or',
        'bool_and',
        'bool_or',
        'bound_box',
        'box',
        'brin_summarize_new_values',
        'broadcast',
        'btrim',
        'cardinality',
        'cbrt',
        'ceil',
        'ceiling',
        'center',
        'char_length',
        'character_length',
        'chr',
        'circle',
        'clock_timestamp',
        'coalesce',
        'col_description',
        'concat',
        'concat_ws',
        'convert',
        'convert_from',
        'convert_to',
        'corr',
        'cos',
        'cosd',
        'cot',
        'cotd',
        'count',
        'covar_pop',
        'covar_samp',
        'cume_dist',
        'current_catalog',
        'current_database',
        'current_date',
        'current_query',
        'current_role',
        'current_schema',
        'current_schemas',
        'current_setting',
        'current_time',
        'current_timestamp',
        'current_user',
        'currval',
        'cursor_to_xml',
        'date_part',
        'date_trunc',
        'decode',
        'degrees',
        'dense_rank',
        'diameter',
        'div',
        'encode',
        'enum_first',
        'enum_last',
        'enum_range',
        'every',
        'exp',
        'extract',
        'family',
        'first_value',
        'floor',
        'format',
        'format_type',
        'generate_series',
        'generate_subscripts',
        'get_bit',
        'get_byte',
        'get_current_ts_config',
        'gin_clean_pending_list',
        'greatest',
        'grouping',
        'has_any_column_privilege',
        'has_column_privilege',
        'has_database_privilege',
        'has_foreign_data_wrapper_privilege',
        'has_function_privilege',
        'has_language_privilege',
        'has_schema_privilege',
        'has_sequence_privilege',
        'has_server_privilege',
        'has_table_privilege',
        'has_tablespace_privilege',
        'has_type_privilege',
        'height',
        'host',
        'hostmask',
        'inet_client_addr',
        'inet_client_port',
        'inet_merge',
        'inet_same_family',
        'inet_server_addr',
        'inet_server_port',
        'initcap',
        'isclosed',
        'isempty',
        'isfinite',
        'isopen',
        'json_agg',
        'json_object',
        'json_object_agg',
        'json_populate_record',
        'json_populate_recordset',
        'json_to_record',
        'json_to_recordset',
        'jsonb_agg',
        'jsonb_object_agg',
        'justify_days',
        'justify_hours',
        'justify_interval',
        'lag',
        'last_value',
        'lastval',
        'lead',
        'least',
        'left',
        'length',
        'line',
        'ln',
        'localtime',
        'localtimestamp',
        'log',
        'lower',
        'lower_inc',
        'lower_inf',
        'lpad',
        'lseg',
        'ltrim',
        'make_date',
        'make_interval',
        'make_time',
        'make_timestamp',
        'make_timestamptz',
        'masklen',
        'max',
        'md5',
        'min',
        'mod',
        'mode',
        'netmask',
        'network',
        'nextval',
        'now',
        'npoints',
        'nth_value',
        'ntile',
        'nullif',
        'num_nonnulls',
        'num_nulls',
        'numnode',
        'obj_description',
        'octet_length',
        'overlay',
        'parse_ident',
        'path',
        'pclose',
        'percent_rank',
        'percentile_cont',
        'percentile_disc',
        'pg_advisory_lock',
        'pg_advisory_lock_shared',
        'pg_advisory_unlock',
        'pg_advisory_unlock_all',
        'pg_advisory_unlock_shared',
        'pg_advisory_xact_lock',
        'pg_advisory_xact_lock_shared',
        'pg_backend_pid',
        'pg_backup_start_time',
        'pg_blocking_pids',
        'pg_cancel_backend',
        'pg_client_encoding',
        'pg_collation_is_visible',
        'pg_column_size',
        'pg_conf_load_time',
        'pg_control_checkpoint',
        'pg_control_init',
        'pg_control_recovery',
        'pg_control_system',
        'pg_conversion_is_visible',
        'pg_create_logical_replication_slot',
        'pg_create_physical_replication_slot',
        'pg_create_restore_point',
        'pg_current_xlog_flush_location',
        'pg_current_xlog_insert_location',
        'pg_current_xlog_location',
        'pg_database_size',
        'pg_describe_object',
        'pg_drop_replication_slot',
        'pg_export_snapshot',
        'pg_filenode_relation',
        'pg_function_is_visible',
        'pg_get_constraintdef',
        'pg_get_expr',
        'pg_get_function_arguments',
        'pg_get_function_identity_arguments',
        'pg_get_function_result',
        'pg_get_functiondef',
        'pg_get_indexdef',
        'pg_get_keywords',
        'pg_get_object_address',
        'pg_get_owned_sequence',
        'pg_get_ruledef',
        'pg_get_serial_sequence',
        'pg_get_triggerdef',
        'pg_get_userbyid',
        'pg_get_viewdef',
        'pg_has_role',
        'pg_identify_object',
        'pg_identify_object_as_address',
        'pg_index_column_has_property',
        'pg_index_has_property',
        'pg_indexam_has_property',
        'pg_indexes_size',
        'pg_is_in_backup',
        'pg_is_in_recovery',
        'pg_is_other_temp_schema',
        'pg_is_xlog_replay_paused',
        'pg_last_committed_xact',
        'pg_last_xact_replay_timestamp',
        'pg_last_xlog_receive_location',
        'pg_last_xlog_replay_location',
        'pg_listening_channels',
        'pg_logical_emit_message',
        'pg_logical_slot_get_binary_changes',
        'pg_logical_slot_get_changes',
        'pg_logical_slot_peek_binary_changes',
        'pg_logical_slot_peek_changes',
        'pg_ls_dir',
        'pg_my_temp_schema',
        'pg_notification_queue_usage',
        'pg_opclass_is_visible',
        'pg_operator_is_visible',
        'pg_opfamily_is_visible',
        'pg_options_to_table',
        'pg_postmaster_start_time',
        'pg_read_binary_file',
        'pg_read_file',
        'pg_relation_filenode',
        'pg_relation_filepath',
        'pg_relation_size',
        'pg_reload_conf',
        'pg_replication_origin_create',
        'pg_replication_origin_drop',
        'pg_replication_origin_oid',
        'pg_replication_origin_progress',
        'pg_replication_origin_session_is_setup',
        'pg_replication_origin_session_progress',
        'pg_replication_origin_session_reset',
        'pg_replication_origin_session_setup',
        'pg_replication_origin_xact_reset',
        'pg_replication_origin_xact_setup',
        'pg_rotate_logfile',
        'pg_size_bytes',
        'pg_size_pretty',
        'pg_sleep',
        'pg_sleep_for',
        'pg_sleep_until',
        'pg_start_backup',
        'pg_stat_file',
        'pg_stop_backup',
        'pg_switch_xlog',
        'pg_table_is_visible',
        'pg_table_size',
        'pg_tablespace_databases',
        'pg_tablespace_location',
        'pg_tablespace_size',
        'pg_terminate_backend',
        'pg_total_relation_size',
        'pg_trigger_depth',
        'pg_try_advisory_lock',
        'pg_try_advisory_lock_shared',
        'pg_try_advisory_xact_lock',
        'pg_try_advisory_xact_lock_shared',
        'pg_ts_config_is_visible',
        'pg_ts_dict_is_visible',
        'pg_ts_parser_is_visible',
        'pg_ts_template_is_visible',
        'pg_type_is_visible',
        'pg_typeof',
        'pg_xact_commit_timestamp',
        'pg_xlog_location_diff',
        'pg_xlog_replay_pause',
        'pg_xlog_replay_resume',
        'pg_xlogfile_name',
        'pg_xlogfile_name_offset',
        'phraseto_tsquery',
        'pi',
        'plainto_tsquery',
        'point',
        'polygon',
        'popen',
        'position',
        'power',
        'pqserverversion',
        'query_to_xml',
        'querytree',
        'quote_ident',
        'quote_literal',
        'quote_nullable',
        'radians',
        'radius',
        'random',
        'range_merge',
        'rank',
        'regexp_matches',
        'regexp_replace',
        'regexp_split_to_array',
        'regexp_split_to_table',
        'regr_avgx',
        'regr_avgy',
        'regr_count',
        'regr_intercept',
        'regr_r2',
        'regr_slope',
        'regr_sxx',
        'regr_sxy',
        'regr_syy',
        'repeat',
        'replace',
        'reverse',
        'right',
        'round',
        'row_number',
        'row_security_active',
        'row_to_json',
        'rpad',
        'rtrim',
        'scale',
        'session_user',
        'set_bit',
        'set_byte',
        'set_config',
        'set_masklen',
        'setseed',
        'setval',
        'setweight',
        'shobj_description',
        'sign',
        'sin',
        'sind',
        'split_part',
        'sprintf',
        'sqrt',
        'statement_timestamp',
        'stddev',
        'stddev_pop',
        'stddev_samp',
        'string_agg',
        'string_to_array',
        'strip',
        'strpos',
        'substr',
        'substring',
        'sum',
        'table_to_xml',
        'table_to_xml_and_xmlschema',
        'tan',
        'tand',
        'text',
        'timeofday',
        'timezone',
        'to_ascii',
        'to_char',
        'to_date',
        'to_hex',
        'to_json',
        'to_number',
        'to_regclass',
        'to_regnamespace',
        'to_regoper',
        'to_regoperator',
        'to_regproc',
        'to_regprocedure',
        'to_regrole',
        'to_regtype',
        'to_timestamp',
        'to_tsquery',
        'to_tsvector',
        'transaction_timestamp',
        'translate',
        'trim',
        'trunc',
        'ts_debug',
        'ts_delete',
        'ts_filter',
        'ts_headline',
        'ts_lexize',
        'ts_parse',
        'ts_rank',
        'ts_rank_cd',
        'ts_rewrite',
        'ts_stat',
        'ts_token_type',
        'tsquery_phrase',
        'tsvector_to_array',
        'tsvector_update_trigger',
        'tsvector_update_trigger_column',
        'txid_current',
        'txid_current_snapshot',
        'txid_snapshot_xip',
        'txid_snapshot_xmax',
        'txid_snapshot_xmin',
        'txid_visible_in_snapshot',
        'unnest',
        'upper',
        'upper_inc',
        'upper_inf',
        'user',
        'var_pop',
        'var_samp',
        'variance',
        'version',
        'width',
        'width_bucket',
        'xml_is_well_formed',
        'xml_is_well_formed_content',
        'xml_is_well_formed_document',
        'xmlagg',
        'xmlcomment',
        'xmlconcat',
        'xmlelement',
        'xmlexists',
        'xmlforest',
        'xmlparse',
        'xmlpi',
        'xmlroot',
        'xmlserialize',
        'xpath',
        'xpath_exists'
    ],
    builtinVariables: [
    // NOT SUPPORTED
    ],
    pseudoColumns: [
    // NOT SUPPORTED
    ],
    tokenizer: {
        root: [
            { include: '@comments' },
            { include: '@whitespace' },
            { include: '@pseudoColumns' },
            { include: '@numbers' },
            { include: '@strings' },
            { include: '@complexIdentifiers' },
            { include: '@scopes' },
            [/[;,.]/, 'delimiter'],
            [/[()]/, '@brackets'],
            [
                /[\w@#$]+/,
                {
                    cases: {
                        '@keywords': 'keyword',
                        '@operators': 'operator',
                        '@builtinVariables': 'predefined',
                        '@builtinFunctions': 'predefined',
                        '@default': 'identifier'
                    }
                }
            ],
            [/[<>=!%&+\-*/|~^]/, 'operator']
        ],
        whitespace: [[/\s+/, 'white']],
        comments: [
            [/--+.*/, 'comment'],
            [/\/\*/, { token: 'comment.quote', next: '@comment' }]
        ],
        comment: [
            [/[^*/]+/, 'comment'],
            // Not supporting nested comments, as nested comments seem to not be standard?
            // i.e. http://stackoverflow.com/questions/728172/are-there-multiline-comment-delimiters-in-sql-that-are-vendor-agnostic
            // [/\/\*/, { token: 'comment.quote', next: '@push' }],    // nested comment not allowed :-(
            [/\*\//, { token: 'comment.quote', next: '@pop' }],
            [/./, 'comment']
        ],
        pseudoColumns: [
            [
                /[$][A-Za-z_][\w@#$]*/,
                {
                    cases: {
                        '@pseudoColumns': 'predefined',
                        '@default': 'identifier'
                    }
                }
            ]
        ],
        numbers: [
            [/0[xX][0-9a-fA-F]*/, 'number'],
            [/[$][+-]*\d*(\.\d*)?/, 'number'],
            [/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, 'number']
        ],
        strings: [[/'/, { token: 'string', next: '@string' }]],
        string: [
            [/[^']+/, 'string'],
            [/''/, 'string'],
            [/'/, { token: 'string', next: '@pop' }]
        ],
        complexIdentifiers: [[/"/, { token: 'identifier.quote', next: '@quotedIdentifier' }]],
        quotedIdentifier: [
            [/[^"]+/, 'identifier'],
            [/""/, 'identifier'],
            [/"/, { token: 'identifier.quote', next: '@pop' }]
        ],
        scopes: [
        // NOT SUPPORTED
        ]
    }
};
