

KEYWORDS = [
    'ABORT', 'ABSOLUTE', 'ACCESS', 'ACTION', 'ADD', 'ADMIN', 'AFTER',
    'AGGREGATE', 'ALL', 'ALSO', 'ALTER', 'ALWAYS', 'ANALYSE', 'ANALYZE',
    'ANY', 'ARRAY', 'AS', 'ASC', 'ASSERTION', 'ASSIGNMENT',
    'ASYMMETRIC', 'AT', 'ATTRIBUTE', 'AUTHORIZATION', 'BACKWARD', 'BEFORE',
    'BEGIN', 'BETWEEN', 'BIGINT', 'BINARY', 'BIT', 'BOOLEAN', 'BOTH', 'BY',
    'CACHE', 'CALLED', 'CASCADE', 'CASCADED', 'CASE', 'CAST', 'CATALOG',
    'CHAIN', 'CHAR', 'CHARACTER', 'CHARACTERISTICS', 'CHECK', 'CHECKPOINT',
    'CLASS', 'CLOSE', 'CLUSTER', 'COALESCE', 'COLLATE', 'COLLATION',
    'COLUMN', 'COMMENT', 'COMMENTS', 'COMMIT', 'COMMITTED', 'CONCURRENTLY',
    'CONFIGURATION', 'CONNECTION', 'CONSTRAINT', 'CONSTRAINTS', 'CONTENT',
    'CONTINUE', 'CONVERSION', 'COPY', 'COST', 'CROSS', 'CSV',
    'CURRENT', 'CURRENT_CATALOG', 'CURRENT_DATE', 'CURRENT_ROLE',
    'CURRENT_SCHEMA', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER',
    'CURSOR', 'CYCLE', 'DATA', 'DATABASE', 'DAY', 'DEALLOCATE', 'DEC',
    'DECIMAL', 'DECLARE', 'DEFAULT', 'DEFAULTS', 'DEFERRABLE', 'DEFERRED',
    'DEFINER', 'DELETE', 'DELIMITER', 'DELIMITERS', 'DESC', 'DICTIONARY',
    'DISABLE', 'DISCARD', 'DISTINCT', 'DO', 'DOCUMENT', 'DOMAIN', 'DOUBLE',
    'EACH', 'ELSE', 'ENABLE', 'ENCODING', 'ENCRYPTED', 'END',
    'ENUM', 'ESCAPE', 'EXCEPT', 'EXCLUDE', 'EXCLUDING', 'EXCLUSIVE',
    'EXECUTE', 'EXISTS', 'EXPLAIN', 'EXTENSION', 'EXTERNAL', 'EXTRACT',
    'FALSE', 'FAMILY', 'FETCH', 'FIRST', 'FLOAT', 'FOLLOWING', 'FOR',
    'FORCE', 'FOREIGN', 'FORWARD', 'FREEZE', 'FROM', 'FULL', 'FUNCTION',
    'FUNCTIONS', 'GLOBAL', 'GRANT', 'GRANTED', 'GREATEST', 'GROUP',
    'HANDLER', 'HAVING', 'HEADER', 'HOLD', 'HOUR', 'IDENTITY', 'IF',
    'ILIKE', 'IMMEDIATE', 'IMMUTABLE', 'IMPLICIT', 'INCLUDING',
    'INCREMENT', 'INDEX', 'INDEXES', 'INHERIT', 'INHERITS', 'INITIALLY',
    'INLINE', 'INNER', 'INOUT', 'INPUT', 'INSENSITIVE', 'INSERT', 'INSTEAD',
    'INT', 'INTEGER', 'INTERSECT', 'INTERVAL', 'INTO', 'INVOKER', 'IS',
    'ISNULL', 'ISOLATION', 'JOIN', 'KEY', 'LABEL', 'LANGUAGE', 'LARGE',
    'LAST', 'LC_COLLATE', 'LC_CTYPE', 'LEADING', 'LEAST', 'LEFT', 'LEVEL',
    'LIKE', 'LIMIT', 'LISTEN', 'LOAD', 'LOCAL', 'LOCALTIME',
    'LOCALTIMESTAMP', 'LOCATION', 'LOCK', 'MAPPING', 'MATCH', 'MAXVALUE',
    'MINUTE', 'MINVALUE', 'MODE', 'MONTH', 'MOVE', 'NAME', 'NAMES',
    'NATIONAL', 'NATURAL', 'NCHAR', 'NEXT', 'NO', 'NONE', 'NOT', 'NOTHING',
    'NOTIFY', 'NOTNULL', 'NOWAIT', 'NULL', 'NULLIF', 'NULLS', 'NUMERIC',
    'OBJECT', 'OF', 'OFF', 'OFFSET', 'OIDS', 'ON', 'ONLY', 'OPERATOR',
    'OPTION', 'OPTIONS', 'ORDER', 'OUT', 'OUTER', 'OVER', 'OVERLAPS',
    'OVERLAY', 'OWNED', 'OWNER', 'PARSER', 'PARTIAL', 'PARTITION',
    'PASSING', 'PASSWORD', 'PLACING', 'PLANS', 'POSITION', 'PRECEDING',
    'PRECISION', 'PREPARE', 'PREPARED', 'PRESERVE', 'PRIMARY', 'PRIOR',
    'PRIVILEGES', 'PROCEDURAL', 'PROCEDURE', 'QUOTE', 'RANGE', 'READ',
    'REAL', 'REASSIGN', 'RECHECK', 'RECURSIVE', 'REF', 'REFERENCES',
    'REINDEX', 'RELATIVE', 'RELEASE', 'RENAME', 'REPEATABLE', 'REPLACE',
    'REPLICA', 'RESET', 'RESTART', 'RESTRICT', 'RETURNING', 'RETURNS',
    'REVOKE', 'RIGHT', 'ROLE', 'ROLLBACK', 'ROW', 'ROWS', 'RULE',
    'SAVEPOINT', 'SCHEMA', 'SCROLL', 'SEARCH', 'SECOND', 'SECURITY',
    'SELECT', 'SEQUENCE', 'SEQUENCES', 'SERIALIZABLE', 'SERVER', 'SESSION',
    'SESSION_USER', 'SET', 'SETOF', 'SHARE', 'SHOW', 'SIMILAR', 'SIMPLE',
    'SMALLINT', 'SOME', 'STABLE', 'STANDALONE', 'START', 'STATEMENT',
    'STATISTICS', 'STDIN', 'STDOUT', 'STORAGE', 'STRICT', 'STRIP',
    'SUBSTRING', 'SYMMETRIC', 'SYSID', 'SYSTEM', 'TABLE', 'TABLES',
    'TABLESPACE', 'TEMP', 'TEMPLATE', 'TEMPORARY', 'TEXT', 'THEN', 'TIME',
    'TIMESTAMP', 'TO', 'TRAILING', 'TRANSACTION', 'TREAT', 'TRIGGER',
    'TRIM', 'TRUE', 'TRUNCATE', 'TRUSTED', 'TYPE', 'UNBOUNDED',
    'UNCOMMITTED', 'UNENCRYPTED', 'UNION', 'UNIQUE', 'UNKNOWN', 'UNLISTEN',
    'UNLOGGED', 'UNTIL', 'UPDATE', 'USING', 'VACUUM', 'VALID',
    'VALIDATE', 'VALIDATOR', 'VALUE', 'VALUES', 'VARCHAR', 'VARIADIC',
    'VARYING', 'VERBOSE', 'VERSION', 'VIEW', 'VOLATILE', 'WHEN', 'WHERE',
    'WHITESPACE', 'WINDOW', 'WITH', 'WITHOUT', 'WORK', 'WRAPPER', 'WRITE',
    'XML', 'XMLATTRIBUTES', 'XMLCONCAT', 'XMLELEMENT', 'XMLEXISTS',
    'XMLFOREST', 'XMLPARSE', 'XMLPI', 'XMLROOT', 'XMLSERIALIZE', 'YEAR',
    'YES', 'ZONE',

    'abort', 'absolute', 'access', 'action', 'add', 'admin', 'after',
    'aggregate', 'all', 'also', 'alter', 'always', 'analyse', 'analyze',
    'any', 'array', 'as', 'asc', 'assertion', 'assignment',
    'asymmetric', 'at', 'attribute', 'authorization', 'backward', 'before',
    'begin', 'between', 'bigint', 'binary', 'bit', 'boolean', 'both', 'by',
    'cache', 'called', 'cascade', 'cascaded', 'case', 'cast', 'catalog',
    'chain', 'char', 'character', 'characteristics', 'check', 'checkpoint',
    'class', 'close', 'cluster', 'coalesce', 'collate', 'collation',
    'column', 'comment', 'comments', 'commit', 'committed', 'concurrently',
    'configuration', 'connection', 'constraint', 'constraints', 'content',
    'continue', 'conversion', 'copy', 'cost', 'cross', 'csv',
    'current', 'current_catalog', 'current_date', 'current_role',
    'current_schema', 'current_time', 'current_timestamp', 'current_user',
    'cursor', 'cycle', 'data', 'database', 'day', 'deallocate', 'dec',
    'decimal', 'declare', 'default', 'defaults', 'deferrable', 'deferred',
    'definer', 'delete', 'delimiter', 'delimiters', 'desc', 'dictionary',
    'disable', 'discard', 'distinct', 'do', 'document', 'domain', 'double',
    'each', 'else', 'enable', 'encoding', 'encrypted', 'end',
    'enum', 'escape', 'except', 'exclude', 'excluding', 'exclusive',
    'execute', 'exists', 'explain', 'extension', 'external', 'extract',
    'false', 'family', 'fetch', 'first', 'float', 'following', 'for',
    'force', 'foreign', 'forward', 'freeze', 'from', 'full', 'function',
    'functions', 'global', 'grant', 'granted', 'greatest', 'group',
    'handler', 'having', 'header', 'hold', 'hour', 'identity', 'if',
    'ilike', 'immediate', 'immutable', 'implicit', 'including',
    'increment', 'index', 'indexes', 'inherit', 'inherits', 'initially',
    'inline', 'inner', 'inout', 'input', 'insensitive', 'insert', 'instead',
    'int', 'integer', 'intersect', 'interval', 'into', 'invoker', 'is',
    'isnull', 'isolation', 'join', 'key', 'label', 'language', 'large',
    'last', 'lc_collate', 'lc_ctype', 'leading', 'least', 'left', 'level',
    'like', 'limit', 'listen', 'load', 'local', 'localtime',
    'localtimestamp', 'location', 'lock', 'mapping', 'match', 'maxvalue',
    'minute', 'minvalue', 'mode', 'month', 'move', 'name', 'names',
    'national', 'natural', 'nchar', 'next', 'no', 'none', 'not', 'nothing',
    'notify', 'notnull', 'nowait', 'null', 'nullif', 'nulls', 'numeric',
    'object', 'of', 'off', 'offset', 'oids', 'on', 'only', 'operator',
    'option', 'options', 'order', 'out', 'outer', 'over', 'overlaps',
    'overlay', 'owned', 'owner', 'parser', 'partial', 'partition',
    'passing', 'password', 'placing', 'plans', 'position', 'preceding',
    'precision', 'prepare', 'prepared', 'preserve', 'primary', 'prior',
    'privileges', 'procedural', 'procedure', 'quote', 'range', 'read',
    'real', 'reassign', 'recheck', 'recursive', 'ref', 'references',
    'reindex', 'relative', 'release', 'rename', 'repeatable', 'replace',
    'replica', 'reset', 'restart', 'restrict', 'returning', 'returns',
    'revoke', 'right', 'role', 'rollback', 'row', 'rows', 'rule',
    'savepoint', 'schema', 'scroll', 'search', 'second', 'security',
    'select', 'sequence', 'sequences', 'serializable', 'server', 'session',
    'session_user', 'set', 'setof', 'share', 'show', 'similar', 'simple',
    'smallint', 'some', 'stable', 'standalone', 'start', 'statement',
    'statistics', 'stdin', 'stdout', 'storage', 'strict', 'strip',
    'substring', 'symmetric', 'sysid', 'system', 'table', 'tables',
    'tablespace', 'temp', 'template', 'temporary', 'text', 'then', 'time',
    'timestamp', 'to', 'trailing', 'transaction', 'treat', 'trigger',
    'trim', 'true', 'truncate', 'trusted', 'type', 'unbounded',
    'uncommitted', 'unencrypted', 'union', 'unique', 'unknown', 'unlisten',
    'unlogged', 'until', 'update', 'using', 'vacuum', 'valid',
    'validate', 'validator', 'value', 'values', 'varchar', 'variadic',
    'varying', 'verbose', 'version', 'view', 'volatile', 'when', 'where',
    'whitespace', 'window', 'with', 'without', 'work', 'wrapper', 'write',
    'xml', 'xmlattributes', 'xmlconcat', 'xmlelement', 'xmlexists',
    'xmlforest', 'xmlparse', 'xmlpi', 'xmlroot', 'xmlserialize', 'year',
    'yes', 'zone',
]


DATATYPES = [
    'BIGINT', 'BIGSERIAL', 'BIT', 'BIT VARYING', 'BOOL', 'BOOLEAN', 'BOX',
    'BYTEA', 'CHAR', 'CHARACTER', 'CHARACTER VARYING', 'CIDR', 'CIRCLE',
    'DATE', 'DECIMAL', 'DOUBLE PRECISION', 'FLOAT4', 'FLOAT8', 'INET',
    'INT', 'INT2', 'INT4', 'INT8', 'INTEGER', 'INTERVAL', 'JSON', 'LINE',
    'LSEG', 'MACADDR', 'MONEY', 'NUMERIC', 'PATH', 'POINT', 'POLYGON',
    'REAL', 'SERIAL', 'SERIAL2', 'SERIAL4', 'SERIAL8', 'SMALLINT',
    'SMALLSERIAL', 'TEXT', 'TIME', 'TIMESTAMP', 'TIMESTAMPTZ', 'TIMETZ',
    'TSQUERY', 'TSVECTOR', 'TXID_SNAPSHOT', 'UUID', 'VARBIT', 'VARCHAR',
    'WITH TIME ZONE', 'WITHOUT TIME ZONE', 'XML',
    'bigint', 'bigserial', 'bit', 'bit varying', 'bool', 'boolean', 'box',
    'bytea', 'char', 'character', 'character varying', 'cidr', 'circle',
    'date', 'decimal', 'double precision', 'float4', 'float8', 'inet',
    'int', 'int2', 'int4', 'int8', 'integer', 'interval', 'json', 'line',
    'lseg', 'macaddr', 'money', 'numeric', 'path', 'point', 'polygon',
    'real', 'serial', 'serial2', 'serial4', 'serial8', 'smallint',
    'smallserial', 'text', 'time', 'timestamp', 'timestamptz', 'timetz',
    'tsquery', 'tsvector', 'txid_snapshot', 'uuid', 'varbit', 'varchar',
    'with time zone', 'without time zone', 'xml',
]

OPERATOR_WORDS = [
    'NOT', 'IN', 'BETWEEN', 'AND', 'OR',
    'not', 'in', 'between', 'and', 'or'
]

NAMESPACE = [
    'DROP', 'CREATE',
    'drop', 'create'
]

PSEUDO_TYPES = [
    'NOT',
    'not'
]
