/* * pg_kwlist.h * PostgreSQL keyword lookup table for Lime parser. * * AUTO-GENERATED by gen_kwlist.py -- do not edit manually. * * Each entry maps a lowercase keyword string to its Lime token ID, * reservation category, and bare-label eligibility. */ #ifndef PG_KWLIST_H #define PG_KWLIST_H #include #include #include #include "pg_grammar.h" /* Token ID #defines */ typedef enum { PG_KW_UNRESERVED, /* Can be used as any identifier */ PG_KW_COL_NAME, /* Can be column/table name, not type/func name */ PG_KW_TYPE_FUNC_NAME, /* Can be type or function name */ PG_KW_RESERVED /* Only usable as ColLabel (after AS) */ } PgKwCategory; typedef struct { const char *keyword; /* Lowercase keyword string */ int token_id; /* Lime token ID from pg_grammar.h */ PgKwCategory category; /* Reservation category */ bool is_bare_label; /* Can be used as column label without AS */ } PgKwEntry; #define PG_NUM_KEYWORDS 510 static const PgKwEntry pg_keywords[] = { {"abort", ABORT_P , PG_KW_UNRESERVED , true }, {"absent", ABSENT , PG_KW_UNRESERVED , true }, {"absolute", ABSOLUTE_P , PG_KW_UNRESERVED , true }, {"access", ACCESS , PG_KW_UNRESERVED , true }, {"action", ACTION , PG_KW_UNRESERVED , true }, {"add", ADD_P , PG_KW_UNRESERVED , true }, {"admin", ADMIN , PG_KW_UNRESERVED , true }, {"after", AFTER , PG_KW_UNRESERVED , true }, {"aggregate", AGGREGATE , PG_KW_UNRESERVED , true }, {"all", ALL , PG_KW_RESERVED , true }, {"also", ALSO , PG_KW_UNRESERVED , true }, {"alter", ALTER , PG_KW_UNRESERVED , true }, {"always", ALWAYS , PG_KW_UNRESERVED , true }, {"analyse", ANALYSE , PG_KW_RESERVED , true }, {"analyze", ANALYZE , PG_KW_RESERVED , true }, {"and", AND , PG_KW_RESERVED , true }, {"any", ANY , PG_KW_RESERVED , true }, {"array", ARRAY , PG_KW_RESERVED , false}, {"as", AS , PG_KW_RESERVED , false}, {"asc", ASC , PG_KW_RESERVED , true }, {"asensitive", ASENSITIVE , PG_KW_UNRESERVED , true }, {"assertion", ASSERTION , PG_KW_UNRESERVED , true }, {"assignment", ASSIGNMENT , PG_KW_UNRESERVED , true }, {"asymmetric", ASYMMETRIC , PG_KW_RESERVED , true }, {"at", AT , PG_KW_UNRESERVED , true }, {"atomic", ATOMIC , PG_KW_UNRESERVED , true }, {"attach", ATTACH , PG_KW_UNRESERVED , true }, {"attribute", ATTRIBUTE , PG_KW_UNRESERVED , true }, {"authorization", AUTHORIZATION , PG_KW_TYPE_FUNC_NAME , true }, {"backward", BACKWARD , PG_KW_UNRESERVED , true }, {"before", BEFORE , PG_KW_UNRESERVED , true }, {"begin", BEGIN_P , PG_KW_UNRESERVED , true }, {"between", BETWEEN , PG_KW_COL_NAME , true }, {"bigint", BIGINT , PG_KW_COL_NAME , true }, {"binary", BINARY , PG_KW_TYPE_FUNC_NAME , true }, {"bit", BIT , PG_KW_COL_NAME , true }, {"boolean", BOOLEAN_P , PG_KW_COL_NAME , true }, {"both", BOTH , PG_KW_RESERVED , true }, {"breadth", BREADTH , PG_KW_UNRESERVED , true }, {"by", BY , PG_KW_UNRESERVED , true }, {"cache", CACHE , PG_KW_UNRESERVED , true }, {"call", CALL , PG_KW_UNRESERVED , true }, {"called", CALLED , PG_KW_UNRESERVED , true }, {"cascade", CASCADE , PG_KW_UNRESERVED , true }, {"cascaded", CASCADED , PG_KW_UNRESERVED , true }, {"case", CASE , PG_KW_RESERVED , true }, {"cast", CAST , PG_KW_RESERVED , true }, {"catalog", CATALOG_P , PG_KW_UNRESERVED , true }, {"chain", CHAIN , PG_KW_UNRESERVED , true }, {"char", CHAR_P , PG_KW_COL_NAME , false}, {"character", CHARACTER , PG_KW_COL_NAME , false}, {"characteristics", CHARACTERISTICS , PG_KW_UNRESERVED , true }, {"check", CHECK , PG_KW_RESERVED , true }, {"checkpoint", CHECKPOINT , PG_KW_UNRESERVED , true }, {"class", CLASS , PG_KW_UNRESERVED , true }, {"close", CLOSE , PG_KW_UNRESERVED , true }, {"cluster", CLUSTER , PG_KW_UNRESERVED , true }, {"coalesce", COALESCE , PG_KW_COL_NAME , true }, {"collate", COLLATE , PG_KW_RESERVED , true }, {"collation", COLLATION , PG_KW_TYPE_FUNC_NAME , true }, {"column", COLUMN , PG_KW_RESERVED , true }, {"columns", COLUMNS , PG_KW_UNRESERVED , true }, {"comment", COMMENT , PG_KW_UNRESERVED , true }, {"comments", COMMENTS , PG_KW_UNRESERVED , true }, {"commit", COMMIT , PG_KW_UNRESERVED , true }, {"committed", COMMITTED , PG_KW_UNRESERVED , true }, {"compression", COMPRESSION , PG_KW_UNRESERVED , true }, {"concurrently", CONCURRENTLY , PG_KW_TYPE_FUNC_NAME , true }, {"conditional", CONDITIONAL , PG_KW_UNRESERVED , true }, {"configuration", CONFIGURATION , PG_KW_UNRESERVED , true }, {"conflict", CONFLICT , PG_KW_UNRESERVED , true }, {"connection", CONNECTION , PG_KW_UNRESERVED , true }, {"constraint", CONSTRAINT , PG_KW_RESERVED , true }, {"constraints", CONSTRAINTS , PG_KW_UNRESERVED , true }, {"content", CONTENT_P , PG_KW_UNRESERVED , true }, {"continue", CONTINUE_P , PG_KW_UNRESERVED , true }, {"conversion", CONVERSION_P , PG_KW_UNRESERVED , true }, {"copy", COPY , PG_KW_UNRESERVED , true }, {"cost", COST , PG_KW_UNRESERVED , true }, {"create", CREATE , PG_KW_RESERVED , false}, {"cross", CROSS , PG_KW_TYPE_FUNC_NAME , true }, {"csv", CSV , PG_KW_UNRESERVED , true }, {"cube", CUBE , PG_KW_UNRESERVED , true }, {"current", CURRENT_P , PG_KW_UNRESERVED , true }, {"current_catalog", CURRENT_CATALOG , PG_KW_RESERVED , true }, {"current_date", CURRENT_DATE , PG_KW_RESERVED , true }, {"current_role", CURRENT_ROLE , PG_KW_RESERVED , true }, {"current_schema", CURRENT_SCHEMA , PG_KW_TYPE_FUNC_NAME , true }, {"current_time", CURRENT_TIME , PG_KW_RESERVED , true }, {"current_timestamp", CURRENT_TIMESTAMP , PG_KW_RESERVED , true }, {"current_user", CURRENT_USER , PG_KW_RESERVED , true }, {"cursor", CURSOR , PG_KW_UNRESERVED , true }, {"cycle", CYCLE , PG_KW_UNRESERVED , true }, {"data", DATA_P , PG_KW_UNRESERVED , true }, {"database", DATABASE , PG_KW_UNRESERVED , true }, {"day", DAY_P , PG_KW_UNRESERVED , false}, {"deallocate", DEALLOCATE , PG_KW_UNRESERVED , true }, {"dec", DEC , PG_KW_COL_NAME , true }, {"decimal", DECIMAL_P , PG_KW_COL_NAME , true }, {"declare", DECLARE , PG_KW_UNRESERVED , true }, {"default", DEFAULT , PG_KW_RESERVED , true }, {"defaults", DEFAULTS , PG_KW_UNRESERVED , true }, {"deferrable", DEFERRABLE , PG_KW_RESERVED , true }, {"deferred", DEFERRED , PG_KW_UNRESERVED , true }, {"definer", DEFINER , PG_KW_UNRESERVED , true }, {"delete", DELETE_P , PG_KW_UNRESERVED , true }, {"delimiter", DELIMITER , PG_KW_UNRESERVED , true }, {"delimiters", DELIMITERS , PG_KW_UNRESERVED , true }, {"depends", DEPENDS , PG_KW_UNRESERVED , true }, {"depth", DEPTH , PG_KW_UNRESERVED , true }, {"desc", DESC , PG_KW_RESERVED , true }, {"destination", DESTINATION , PG_KW_UNRESERVED , true }, {"detach", DETACH , PG_KW_UNRESERVED , true }, {"dictionary", DICTIONARY , PG_KW_UNRESERVED , true }, {"disable", DISABLE_P , PG_KW_UNRESERVED , true }, {"discard", DISCARD , PG_KW_UNRESERVED , true }, {"distinct", DISTINCT , PG_KW_RESERVED , true }, {"do", DO , PG_KW_RESERVED , true }, {"document", DOCUMENT_P , PG_KW_UNRESERVED , true }, {"domain", DOMAIN_P , PG_KW_UNRESERVED , true }, {"double", DOUBLE_P , PG_KW_UNRESERVED , true }, {"drop", DROP , PG_KW_UNRESERVED , true }, {"each", EACH , PG_KW_UNRESERVED , true }, {"edge", EDGE , PG_KW_UNRESERVED , true }, {"else", ELSE , PG_KW_RESERVED , true }, {"empty", EMPTY_P , PG_KW_UNRESERVED , true }, {"enable", ENABLE_P , PG_KW_UNRESERVED , true }, {"encoding", ENCODING , PG_KW_UNRESERVED , true }, {"encrypted", ENCRYPTED , PG_KW_UNRESERVED , true }, {"end", END_P , PG_KW_RESERVED , true }, {"enforced", ENFORCED , PG_KW_UNRESERVED , true }, {"enum", ENUM_P , PG_KW_UNRESERVED , true }, {"error", ERROR_P , PG_KW_UNRESERVED , true }, {"escape", ESCAPE , PG_KW_UNRESERVED , true }, {"event", EVENT , PG_KW_UNRESERVED , true }, {"except", EXCEPT , PG_KW_RESERVED , false}, {"exclude", EXCLUDE , PG_KW_UNRESERVED , true }, {"excluding", EXCLUDING , PG_KW_UNRESERVED , true }, {"exclusive", EXCLUSIVE , PG_KW_UNRESERVED , true }, {"execute", EXECUTE , PG_KW_UNRESERVED , true }, {"exists", EXISTS , PG_KW_COL_NAME , true }, {"explain", EXPLAIN , PG_KW_UNRESERVED , true }, {"expression", EXPRESSION , PG_KW_UNRESERVED , true }, {"extension", EXTENSION , PG_KW_UNRESERVED , true }, {"external", EXTERNAL , PG_KW_UNRESERVED , true }, {"extract", EXTRACT , PG_KW_COL_NAME , true }, {"false", FALSE_P , PG_KW_RESERVED , true }, {"family", FAMILY , PG_KW_UNRESERVED , true }, {"fetch", FETCH , PG_KW_RESERVED , false}, {"filter", FILTER , PG_KW_UNRESERVED , false}, {"finalize", FINALIZE , PG_KW_UNRESERVED , true }, {"first", FIRST_P , PG_KW_UNRESERVED , true }, {"float", FLOAT_P , PG_KW_COL_NAME , true }, {"following", FOLLOWING , PG_KW_UNRESERVED , true }, {"for", FOR , PG_KW_RESERVED , false}, {"force", FORCE , PG_KW_UNRESERVED , true }, {"foreign", FOREIGN , PG_KW_RESERVED , true }, {"format", FORMAT , PG_KW_UNRESERVED , true }, {"forward", FORWARD , PG_KW_UNRESERVED , true }, {"freeze", FREEZE , PG_KW_TYPE_FUNC_NAME , true }, {"from", FROM , PG_KW_RESERVED , false}, {"full", FULL , PG_KW_TYPE_FUNC_NAME , true }, {"function", FUNCTION , PG_KW_UNRESERVED , true }, {"functions", FUNCTIONS , PG_KW_UNRESERVED , true }, {"generated", GENERATED , PG_KW_UNRESERVED , true }, {"global", GLOBAL , PG_KW_UNRESERVED , true }, {"grant", GRANT , PG_KW_RESERVED , false}, {"granted", GRANTED , PG_KW_UNRESERVED , true }, {"graph", GRAPH , PG_KW_UNRESERVED , true }, {"graph_table", GRAPH_TABLE , PG_KW_COL_NAME , true }, {"greatest", GREATEST , PG_KW_COL_NAME , true }, {"group", GROUP_P , PG_KW_RESERVED , false}, {"grouping", GROUPING , PG_KW_COL_NAME , true }, {"groups", GROUPS , PG_KW_UNRESERVED , true }, {"handler", HANDLER , PG_KW_UNRESERVED , true }, {"having", HAVING , PG_KW_RESERVED , false}, {"header", HEADER_P , PG_KW_UNRESERVED , true }, {"hold", HOLD , PG_KW_UNRESERVED , true }, {"hour", HOUR_P , PG_KW_UNRESERVED , false}, {"identity", IDENTITY_P , PG_KW_UNRESERVED , true }, {"if", IF_P , PG_KW_UNRESERVED , true }, {"ignore", IGNORE_P , PG_KW_UNRESERVED , false}, {"ilike", ILIKE , PG_KW_TYPE_FUNC_NAME , true }, {"immediate", IMMEDIATE , PG_KW_UNRESERVED , true }, {"immutable", IMMUTABLE , PG_KW_UNRESERVED , true }, {"implicit", IMPLICIT_P , PG_KW_UNRESERVED , true }, {"import", IMPORT_P , PG_KW_UNRESERVED , true }, {"in", IN_P , PG_KW_RESERVED , true }, {"include", INCLUDE , PG_KW_UNRESERVED , true }, {"including", INCLUDING , PG_KW_UNRESERVED , true }, {"increment", INCREMENT , PG_KW_UNRESERVED , true }, {"indent", INDENT , PG_KW_UNRESERVED , true }, {"index", INDEX , PG_KW_UNRESERVED , true }, {"indexes", INDEXES , PG_KW_UNRESERVED , true }, {"inherit", INHERIT , PG_KW_UNRESERVED , true }, {"inherits", INHERITS , PG_KW_UNRESERVED , true }, {"initially", INITIALLY , PG_KW_RESERVED , true }, {"inline", INLINE_P , PG_KW_UNRESERVED , true }, {"inner", INNER_P , PG_KW_TYPE_FUNC_NAME , true }, {"inout", INOUT , PG_KW_COL_NAME , true }, {"input", INPUT_P , PG_KW_UNRESERVED , true }, {"insensitive", INSENSITIVE , PG_KW_UNRESERVED , true }, {"insert", INSERT , PG_KW_UNRESERVED , true }, {"instead", INSTEAD , PG_KW_UNRESERVED , true }, {"int", INT_P , PG_KW_COL_NAME , true }, {"integer", INTEGER , PG_KW_COL_NAME , true }, {"intersect", INTERSECT , PG_KW_RESERVED , false}, {"interval", INTERVAL , PG_KW_COL_NAME , true }, {"into", INTO , PG_KW_RESERVED , false}, {"invoker", INVOKER , PG_KW_UNRESERVED , true }, {"is", IS , PG_KW_TYPE_FUNC_NAME , true }, {"isnull", ISNULL , PG_KW_TYPE_FUNC_NAME , false}, {"isolation", ISOLATION , PG_KW_UNRESERVED , true }, {"join", JOIN , PG_KW_TYPE_FUNC_NAME , true }, {"json", JSON , PG_KW_COL_NAME , true }, {"json_array", JSON_ARRAY , PG_KW_COL_NAME , true }, {"json_arrayagg", JSON_ARRAYAGG , PG_KW_COL_NAME , true }, {"json_exists", JSON_EXISTS , PG_KW_COL_NAME , true }, {"json_object", JSON_OBJECT , PG_KW_COL_NAME , true }, {"json_objectagg", JSON_OBJECTAGG , PG_KW_COL_NAME , true }, {"json_query", JSON_QUERY , PG_KW_COL_NAME , true }, {"json_scalar", JSON_SCALAR , PG_KW_COL_NAME , true }, {"json_serialize", JSON_SERIALIZE , PG_KW_COL_NAME , true }, {"json_table", JSON_TABLE , PG_KW_COL_NAME , true }, {"json_value", JSON_VALUE , PG_KW_COL_NAME , true }, {"keep", KEEP , PG_KW_UNRESERVED , true }, {"key", KEY , PG_KW_UNRESERVED , true }, {"keys", KEYS , PG_KW_UNRESERVED , true }, {"label", LABEL , PG_KW_UNRESERVED , true }, {"language", LANGUAGE , PG_KW_UNRESERVED , true }, {"large", LARGE_P , PG_KW_UNRESERVED , true }, {"last", LAST_P , PG_KW_UNRESERVED , true }, {"lateral", LATERAL_P , PG_KW_RESERVED , true }, {"leading", LEADING , PG_KW_RESERVED , true }, {"leakproof", LEAKPROOF , PG_KW_UNRESERVED , true }, {"least", LEAST , PG_KW_COL_NAME , true }, {"left", LEFT , PG_KW_TYPE_FUNC_NAME , true }, {"level", LEVEL , PG_KW_UNRESERVED , true }, {"like", LIKE , PG_KW_TYPE_FUNC_NAME , true }, {"limit", LIMIT , PG_KW_RESERVED , false}, {"listen", LISTEN , PG_KW_UNRESERVED , true }, {"load", LOAD , PG_KW_UNRESERVED , true }, {"local", LOCAL , PG_KW_UNRESERVED , true }, {"localtime", LOCALTIME , PG_KW_RESERVED , true }, {"localtimestamp", LOCALTIMESTAMP , PG_KW_RESERVED , true }, {"location", LOCATION , PG_KW_UNRESERVED , true }, {"lock", LOCK_P , PG_KW_UNRESERVED , true }, {"locked", LOCKED , PG_KW_UNRESERVED , true }, {"logged", LOGGED , PG_KW_UNRESERVED , true }, {"lsn", LSN_P , PG_KW_UNRESERVED , true }, {"mapping", MAPPING , PG_KW_UNRESERVED , true }, {"match", MATCH , PG_KW_UNRESERVED , true }, {"matched", MATCHED , PG_KW_UNRESERVED , true }, {"materialized", MATERIALIZED , PG_KW_UNRESERVED , true }, {"maxvalue", MAXVALUE , PG_KW_UNRESERVED , true }, {"merge", MERGE , PG_KW_UNRESERVED , true }, {"merge_action", MERGE_ACTION , PG_KW_COL_NAME , true }, {"method", METHOD , PG_KW_UNRESERVED , true }, {"minute", MINUTE_P , PG_KW_UNRESERVED , false}, {"minvalue", MINVALUE , PG_KW_UNRESERVED , true }, {"mode", MODE , PG_KW_UNRESERVED , true }, {"month", MONTH_P , PG_KW_UNRESERVED , false}, {"move", MOVE , PG_KW_UNRESERVED , true }, {"name", NAME_P , PG_KW_UNRESERVED , true }, {"names", NAMES , PG_KW_UNRESERVED , true }, {"national", NATIONAL , PG_KW_COL_NAME , true }, {"natural", NATURAL , PG_KW_TYPE_FUNC_NAME , true }, {"nchar", NCHAR , PG_KW_COL_NAME , true }, {"nested", NESTED , PG_KW_UNRESERVED , true }, {"new", NEW , PG_KW_UNRESERVED , true }, {"next", NEXT , PG_KW_UNRESERVED , true }, {"nfc", NFC , PG_KW_UNRESERVED , true }, {"nfd", NFD , PG_KW_UNRESERVED , true }, {"nfkc", NFKC , PG_KW_UNRESERVED , true }, {"nfkd", NFKD , PG_KW_UNRESERVED , true }, {"no", NO , PG_KW_UNRESERVED , true }, {"node", NODE , PG_KW_UNRESERVED , true }, {"none", NONE , PG_KW_COL_NAME , true }, {"normalize", NORMALIZE , PG_KW_COL_NAME , true }, {"normalized", NORMALIZED , PG_KW_UNRESERVED , true }, {"not", NOT , PG_KW_RESERVED , true }, {"nothing", NOTHING , PG_KW_UNRESERVED , true }, {"notify", NOTIFY , PG_KW_UNRESERVED , true }, {"notnull", NOTNULL , PG_KW_TYPE_FUNC_NAME , false}, {"nowait", NOWAIT , PG_KW_UNRESERVED , true }, {"null", NULL_P , PG_KW_RESERVED , true }, {"nullif", NULLIF , PG_KW_COL_NAME , true }, {"nulls", NULLS_P , PG_KW_UNRESERVED , true }, {"numeric", NUMERIC , PG_KW_COL_NAME , true }, {"object", OBJECT_P , PG_KW_UNRESERVED , true }, {"objects", OBJECTS_P , PG_KW_UNRESERVED , true }, {"of", OF , PG_KW_UNRESERVED , true }, {"off", OFF , PG_KW_UNRESERVED , true }, {"offset", OFFSET , PG_KW_RESERVED , false}, {"oids", OIDS , PG_KW_UNRESERVED , true }, {"old", OLD , PG_KW_UNRESERVED , true }, {"omit", OMIT , PG_KW_UNRESERVED , true }, {"on", ON , PG_KW_RESERVED , false}, {"only", ONLY , PG_KW_RESERVED , true }, {"operator", OPERATOR , PG_KW_UNRESERVED , true }, {"option", OPTION , PG_KW_UNRESERVED , true }, {"options", OPTIONS , PG_KW_UNRESERVED , true }, {"or", OR , PG_KW_RESERVED , true }, {"order", ORDER , PG_KW_RESERVED , false}, {"ordinality", ORDINALITY , PG_KW_UNRESERVED , true }, {"others", OTHERS , PG_KW_UNRESERVED , true }, {"out", OUT_P , PG_KW_COL_NAME , true }, {"outer", OUTER_P , PG_KW_TYPE_FUNC_NAME , true }, {"over", OVER , PG_KW_UNRESERVED , false}, {"overlaps", OVERLAPS , PG_KW_TYPE_FUNC_NAME , false}, {"overlay", OVERLAY , PG_KW_COL_NAME , true }, {"overriding", OVERRIDING , PG_KW_UNRESERVED , true }, {"owned", OWNED , PG_KW_UNRESERVED , true }, {"owner", OWNER , PG_KW_UNRESERVED , true }, {"parallel", PARALLEL , PG_KW_UNRESERVED , true }, {"parameter", PARAMETER , PG_KW_UNRESERVED , true }, {"parser", PARSER , PG_KW_UNRESERVED , true }, {"partial", PARTIAL , PG_KW_UNRESERVED , true }, {"partition", PARTITION , PG_KW_UNRESERVED , true }, {"partitions", PARTITIONS , PG_KW_UNRESERVED , true }, {"passing", PASSING , PG_KW_UNRESERVED , true }, {"password", PASSWORD , PG_KW_UNRESERVED , true }, {"path", PATH , PG_KW_UNRESERVED , true }, {"period", PERIOD , PG_KW_UNRESERVED , true }, {"placing", PLACING , PG_KW_RESERVED , true }, {"plan", PLAN , PG_KW_UNRESERVED , true }, {"plans", PLANS , PG_KW_UNRESERVED , true }, {"policy", POLICY , PG_KW_UNRESERVED , true }, {"position", POSITION , PG_KW_COL_NAME , true }, {"preceding", PRECEDING , PG_KW_UNRESERVED , true }, {"precision", PRECISION , PG_KW_COL_NAME , false}, {"prepare", PREPARE , PG_KW_UNRESERVED , true }, {"prepared", PREPARED , PG_KW_UNRESERVED , true }, {"preserve", PRESERVE , PG_KW_UNRESERVED , true }, {"primary", PRIMARY , PG_KW_RESERVED , true }, {"prior", PRIOR , PG_KW_UNRESERVED , true }, {"privileges", PRIVILEGES , PG_KW_UNRESERVED , true }, {"procedural", PROCEDURAL , PG_KW_UNRESERVED , true }, {"procedure", PROCEDURE , PG_KW_UNRESERVED , true }, {"procedures", PROCEDURES , PG_KW_UNRESERVED , true }, {"program", PROGRAM , PG_KW_UNRESERVED , true }, {"properties", PROPERTIES , PG_KW_UNRESERVED , true }, {"property", PROPERTY , PG_KW_UNRESERVED , true }, {"publication", PUBLICATION , PG_KW_UNRESERVED , true }, {"quote", QUOTE , PG_KW_UNRESERVED , true }, {"quotes", QUOTES , PG_KW_UNRESERVED , true }, {"range", RANGE , PG_KW_UNRESERVED , true }, {"read", READ , PG_KW_UNRESERVED , true }, {"real", REAL , PG_KW_COL_NAME , true }, {"reassign", REASSIGN , PG_KW_UNRESERVED , true }, {"recursive", RECURSIVE , PG_KW_UNRESERVED , true }, {"ref", REF_P , PG_KW_UNRESERVED , true }, {"references", REFERENCES , PG_KW_RESERVED , true }, {"referencing", REFERENCING , PG_KW_UNRESERVED , true }, {"refresh", REFRESH , PG_KW_UNRESERVED , true }, {"reindex", REINDEX , PG_KW_UNRESERVED , true }, {"relationship", RELATIONSHIP , PG_KW_UNRESERVED , true }, {"relative", RELATIVE_P , PG_KW_UNRESERVED , true }, {"release", RELEASE , PG_KW_UNRESERVED , true }, {"rename", RENAME , PG_KW_UNRESERVED , true }, {"repack", REPACK , PG_KW_UNRESERVED , true }, {"repeatable", REPEATABLE , PG_KW_UNRESERVED , true }, {"replace", REPLACE , PG_KW_UNRESERVED , true }, {"replica", REPLICA , PG_KW_UNRESERVED , true }, {"reset", RESET , PG_KW_UNRESERVED , true }, {"respect", RESPECT_P , PG_KW_UNRESERVED , false}, {"restart", RESTART , PG_KW_UNRESERVED , true }, {"restrict", RESTRICT , PG_KW_UNRESERVED , true }, {"return", RETURN , PG_KW_UNRESERVED , true }, {"returning", RETURNING , PG_KW_RESERVED , false}, {"returns", RETURNS , PG_KW_UNRESERVED , true }, {"revoke", REVOKE , PG_KW_UNRESERVED , true }, {"right", RIGHT , PG_KW_TYPE_FUNC_NAME , true }, {"role", ROLE , PG_KW_UNRESERVED , true }, {"rollback", ROLLBACK , PG_KW_UNRESERVED , true }, {"rollup", ROLLUP , PG_KW_UNRESERVED , true }, {"routine", ROUTINE , PG_KW_UNRESERVED , true }, {"routines", ROUTINES , PG_KW_UNRESERVED , true }, {"row", ROW , PG_KW_COL_NAME , true }, {"rows", ROWS , PG_KW_UNRESERVED , true }, {"rule", RULE , PG_KW_UNRESERVED , true }, {"savepoint", SAVEPOINT , PG_KW_UNRESERVED , true }, {"scalar", SCALAR , PG_KW_UNRESERVED , true }, {"schema", SCHEMA , PG_KW_UNRESERVED , true }, {"schemas", SCHEMAS , PG_KW_UNRESERVED , true }, {"scroll", SCROLL , PG_KW_UNRESERVED , true }, {"search", SEARCH , PG_KW_UNRESERVED , true }, {"second", SECOND_P , PG_KW_UNRESERVED , false}, {"security", SECURITY , PG_KW_UNRESERVED , true }, {"select", SELECT , PG_KW_RESERVED , true }, {"sequence", SEQUENCE , PG_KW_UNRESERVED , true }, {"sequences", SEQUENCES , PG_KW_UNRESERVED , true }, {"serializable", SERIALIZABLE , PG_KW_UNRESERVED , true }, {"server", SERVER , PG_KW_UNRESERVED , true }, {"session", SESSION , PG_KW_UNRESERVED , true }, {"session_user", SESSION_USER , PG_KW_RESERVED , true }, {"set", SET , PG_KW_UNRESERVED , true }, {"setof", SETOF , PG_KW_COL_NAME , true }, {"sets", SETS , PG_KW_UNRESERVED , true }, {"share", SHARE , PG_KW_UNRESERVED , true }, {"show", SHOW , PG_KW_UNRESERVED , true }, {"similar", SIMILAR , PG_KW_TYPE_FUNC_NAME , true }, {"simple", SIMPLE , PG_KW_UNRESERVED , true }, {"skip", SKIP , PG_KW_UNRESERVED , true }, {"smallint", SMALLINT , PG_KW_COL_NAME , true }, {"snapshot", SNAPSHOT , PG_KW_UNRESERVED , true }, {"some", SOME , PG_KW_RESERVED , true }, {"source", SOURCE , PG_KW_UNRESERVED , true }, {"split", SPLIT , PG_KW_UNRESERVED , true }, {"sql", SQL_P , PG_KW_UNRESERVED , true }, {"stable", STABLE , PG_KW_UNRESERVED , true }, {"standalone", STANDALONE_P , PG_KW_UNRESERVED , true }, {"start", START , PG_KW_UNRESERVED , true }, {"statement", STATEMENT , PG_KW_UNRESERVED , true }, {"statistics", STATISTICS , PG_KW_UNRESERVED , true }, {"stdin", STDIN , PG_KW_UNRESERVED , true }, {"stdout", STDOUT , PG_KW_UNRESERVED , true }, {"storage", STORAGE , PG_KW_UNRESERVED , true }, {"stored", STORED , PG_KW_UNRESERVED , true }, {"strict", STRICT_P , PG_KW_UNRESERVED , true }, {"string", STRING_P , PG_KW_UNRESERVED , true }, {"strip", STRIP_P , PG_KW_UNRESERVED , true }, {"subscription", SUBSCRIPTION , PG_KW_UNRESERVED , true }, {"substring", SUBSTRING , PG_KW_COL_NAME , true }, {"support", SUPPORT , PG_KW_UNRESERVED , true }, {"symmetric", SYMMETRIC , PG_KW_RESERVED , true }, {"sysid", SYSID , PG_KW_UNRESERVED , true }, {"system", SYSTEM_P , PG_KW_UNRESERVED , true }, {"system_user", SYSTEM_USER , PG_KW_RESERVED , true }, {"table", TABLE , PG_KW_RESERVED , true }, {"tables", TABLES , PG_KW_UNRESERVED , true }, {"tablesample", TABLESAMPLE , PG_KW_TYPE_FUNC_NAME , true }, {"tablespace", TABLESPACE , PG_KW_UNRESERVED , true }, {"target", TARGET , PG_KW_UNRESERVED , true }, {"temp", TEMP , PG_KW_UNRESERVED , true }, {"template", TEMPLATE , PG_KW_UNRESERVED , true }, {"temporary", TEMPORARY , PG_KW_UNRESERVED , true }, {"text", TEXT_P , PG_KW_UNRESERVED , true }, {"then", THEN , PG_KW_RESERVED , true }, {"ties", TIES , PG_KW_UNRESERVED , true }, {"time", TIME , PG_KW_COL_NAME , true }, {"timestamp", TIMESTAMP , PG_KW_COL_NAME , true }, {"to", TO , PG_KW_RESERVED , false}, {"trailing", TRAILING , PG_KW_RESERVED , true }, {"transaction", TRANSACTION , PG_KW_UNRESERVED , true }, {"transform", TRANSFORM , PG_KW_UNRESERVED , true }, {"treat", TREAT , PG_KW_COL_NAME , true }, {"trigger", TRIGGER , PG_KW_UNRESERVED , true }, {"trim", TRIM , PG_KW_COL_NAME , true }, {"true", TRUE_P , PG_KW_RESERVED , true }, {"truncate", TRUNCATE , PG_KW_UNRESERVED , true }, {"trusted", TRUSTED , PG_KW_UNRESERVED , true }, {"type", TYPE_P , PG_KW_UNRESERVED , true }, {"types", TYPES_P , PG_KW_UNRESERVED , true }, {"uescape", UESCAPE , PG_KW_UNRESERVED , true }, {"unbounded", UNBOUNDED , PG_KW_UNRESERVED , true }, {"uncommitted", UNCOMMITTED , PG_KW_UNRESERVED , true }, {"unconditional", UNCONDITIONAL , PG_KW_UNRESERVED , true }, {"unencrypted", UNENCRYPTED , PG_KW_UNRESERVED , true }, {"union", UNION , PG_KW_RESERVED , false}, {"unique", UNIQUE , PG_KW_RESERVED , true }, {"unknown", UNKNOWN , PG_KW_UNRESERVED , true }, {"unlisten", UNLISTEN , PG_KW_UNRESERVED , true }, {"unlogged", UNLOGGED , PG_KW_UNRESERVED , true }, {"until", UNTIL , PG_KW_UNRESERVED , true }, {"update", UPDATE , PG_KW_UNRESERVED , true }, {"user", USER , PG_KW_RESERVED , true }, {"using", USING , PG_KW_RESERVED , true }, {"vacuum", VACUUM , PG_KW_UNRESERVED , true }, {"valid", VALID , PG_KW_UNRESERVED , true }, {"validate", VALIDATE , PG_KW_UNRESERVED , true }, {"validator", VALIDATOR , PG_KW_UNRESERVED , true }, {"value", VALUE_P , PG_KW_UNRESERVED , true }, {"values", VALUES , PG_KW_COL_NAME , true }, {"varchar", VARCHAR , PG_KW_COL_NAME , true }, {"variadic", VARIADIC , PG_KW_RESERVED , true }, {"varying", VARYING , PG_KW_UNRESERVED , false}, {"verbose", VERBOSE , PG_KW_TYPE_FUNC_NAME , true }, {"version", VERSION_P , PG_KW_UNRESERVED , true }, {"vertex", VERTEX , PG_KW_UNRESERVED , true }, {"view", VIEW , PG_KW_UNRESERVED , true }, {"views", VIEWS , PG_KW_UNRESERVED , true }, {"virtual", VIRTUAL , PG_KW_UNRESERVED , true }, {"volatile", VOLATILE , PG_KW_UNRESERVED , true }, {"wait", WAIT , PG_KW_UNRESERVED , true }, {"when", WHEN , PG_KW_RESERVED , true }, {"where", WHERE , PG_KW_RESERVED , false}, {"whitespace", WHITESPACE_P , PG_KW_UNRESERVED , true }, {"window", WINDOW , PG_KW_RESERVED , false}, {"with", WITH , PG_KW_RESERVED , false}, {"within", WITHIN , PG_KW_UNRESERVED , false}, {"without", WITHOUT , PG_KW_UNRESERVED , false}, {"work", WORK , PG_KW_UNRESERVED , true }, {"wrapper", WRAPPER , PG_KW_UNRESERVED , true }, {"write", WRITE , PG_KW_UNRESERVED , true }, {"xml", XML_P , PG_KW_UNRESERVED , true }, {"xmlattributes", XMLATTRIBUTES , PG_KW_COL_NAME , true }, {"xmlconcat", XMLCONCAT , PG_KW_COL_NAME , true }, {"xmlelement", XMLELEMENT , PG_KW_COL_NAME , true }, {"xmlexists", XMLEXISTS , PG_KW_COL_NAME , true }, {"xmlforest", XMLFOREST , PG_KW_COL_NAME , true }, {"xmlnamespaces", XMLNAMESPACES , PG_KW_COL_NAME , true }, {"xmlparse", XMLPARSE , PG_KW_COL_NAME , true }, {"xmlpi", XMLPI , PG_KW_COL_NAME , true }, {"xmlroot", XMLROOT , PG_KW_COL_NAME , true }, {"xmlserialize", XMLSERIALIZE , PG_KW_COL_NAME , true }, {"xmltable", XMLTABLE , PG_KW_COL_NAME , true }, {"year", YEAR_P , PG_KW_UNRESERVED , false}, {"yes", YES_P , PG_KW_UNRESERVED , true }, {"zone", ZONE , PG_KW_UNRESERVED , true }, }; /* * Binary search for a keyword. Input must be lowercase. * Returns a pointer to the PgKwEntry, or NULL if not found. */ static inline const PgKwEntry * pg_kw_lookup(const char *str, size_t len) { int lo = 0; int hi = PG_NUM_KEYWORDS - 1; while (lo <= hi) { int mid = (lo + hi) / 2; const PgKwEntry *entry = &pg_keywords[mid]; int cmp = strncmp(str, entry->keyword, len); if (cmp == 0) { /* Check for exact length match */ if (entry->keyword[len] == '\0') return entry; /* str is a prefix of keyword -- str is "less" */ cmp = -1; } if (cmp < 0) hi = mid - 1; else lo = mid + 1; } return NULL; } #endif /* PG_KWLIST_H */