diff options
Diffstat (limited to 'src/backend/parser/keywords.c')
-rw-r--r-- | src/backend/parser/keywords.c | 366 |
1 files changed, 184 insertions, 182 deletions
diff --git a/src/backend/parser/keywords.c b/src/backend/parser/keywords.c index 9aa6da82ca6..b9f1a273398 100644 --- a/src/backend/parser/keywords.c +++ b/src/backend/parser/keywords.c @@ -1,13 +1,13 @@ /*------------------------------------------------------------------------- * * keywords.c-- - * lexical token lookup for reserved words in postgres SQL + * lexical token lookup for reserved words in postgres SQL * * Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.14 1997/09/04 13:24:26 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.15 1997/09/07 04:44:47 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -20,202 +20,204 @@ #include "parse.h" #include "utils/elog.h" #include "parser/keywords.h" -#include "parser/dbcommands.h" /* createdb, destroydb stop_vacuum */ +#include "parser/dbcommands.h" /* createdb, destroydb stop_vacuum */ /* * List of (keyword-name, keyword-token-value) pairs. * * !!WARNING!!: This list must be sorted, because binary - * search is used to locate entries. + * search is used to locate entries. */ static ScanKeyword ScanKeywords[] = { - /* name value */ - { "abort", ABORT_TRANS }, - { "acl", ACL }, - { "add", ADD }, - { "after", AFTER }, - { "aggregate", AGGREGATE }, - { "all", ALL }, - { "alter", ALTER }, - { "analyze", ANALYZE }, - { "and", AND }, - { "append", APPEND }, - { "archIve", ARCHIVE }, /* XXX crooked: I < _ */ - { "arch_store", ARCH_STORE }, - { "archive", ARCHIVE }, /* XXX crooked: i > _ */ - { "as", AS }, - { "asc", ASC }, - { "backward", BACKWARD }, - { "before", BEFORE }, - { "begin", BEGIN_TRANS }, - { "between", BETWEEN }, - { "binary", BINARY }, - { "both", BOTH }, - { "by", BY }, - { "cast", CAST }, - { "change", CHANGE }, - { "check", CHECK }, - { "close", CLOSE }, - { "cluster", CLUSTER }, - { "column", COLUMN }, - { "commit", COMMIT }, - { "constraint", CONSTRAINT }, - { "copy", COPY }, - { "create", CREATE }, - { "cross", CROSS }, - { "current", CURRENT }, - { "cursor", CURSOR }, - { "database", DATABASE }, - { "day", DAYINTERVAL }, - { "declare", DECLARE }, - { "default", DEFAULT }, - { "delete", DELETE }, - { "delimiters", DELIMITERS }, - { "desc", DESC }, - { "distinct", DISTINCT }, - { "do", DO }, - { "drop", DROP }, - { "end", END_TRANS }, - { "execute", EXECUTE }, - { "exists", EXISTS }, - { "explain", EXPLAIN }, - { "extend", EXTEND }, - { "extract", EXTRACT }, - { "fetch", FETCH }, - { "for", FOR }, - { "forward", FORWARD }, - { "from", FROM }, - { "full", FULL }, - { "function", FUNCTION }, - { "grant", GRANT }, - { "group", GROUP }, - { "having", HAVING }, - { "heavy", HEAVY }, - { "hour", HOURINTERVAL }, - { "in", IN }, - { "index", INDEX }, - { "inherits", INHERITS }, - { "inner", INNERJOIN }, - { "insert", INSERT }, - { "instead", INSTEAD }, - { "interval", INTERVAL }, - { "into", INTO }, - { "is", IS }, - { "isnull", ISNULL }, - { "join", JOIN }, - { "language", LANGUAGE }, - { "leading", LEADING }, - { "left", LEFT }, - { "light", LIGHT }, - { "like", LIKE }, - { "listen", LISTEN }, - { "load", LOAD }, - { "local", LOCAL }, - { "merge", MERGE }, - { "minute", MINUTEINTERVAL }, - { "month", MONTHINTERVAL }, - { "move", MOVE }, - { "natural", NATURAL }, - { "new", NEW }, - { "none", NONE }, - { "not", NOT }, - { "nothing", NOTHING }, - { "notify", NOTIFY }, - { "notnull", NOTNULL }, - { "null", PNULL }, - { "oids", OIDS }, - { "on", ON }, - { "operator", OPERATOR }, - { "option", OPTION }, - { "or", OR }, - { "order", ORDER }, - { "outer", OUTERJOIN }, - { "position", POSITION }, - { "privileges", PRIVILEGES }, - { "procedure", PROCEDURE }, - { "public", PUBLIC }, - { "purge", PURGE }, - { "recipe", RECIPE }, - { "rename", RENAME }, - { "replace", REPLACE }, - { "reset", RESET }, - { "retrieve", RETRIEVE }, - { "returns", RETURNS }, - { "revoke", REVOKE }, - { "right", RIGHT }, - { "rollback", ROLLBACK }, - { "rule", RULE }, - { "second", SECONDINTERVAL }, - { "select", SELECT }, - { "sequence", SEQUENCE }, - { "set", SET }, - { "setof", SETOF }, - { "show", SHOW }, - { "stdin", STDIN }, - { "stdout", STDOUT }, - { "store", STORE }, - { "substring", SUBSTRING }, - { "table", TABLE }, - { "time", TIME }, - { "to", TO }, - { "transaction", TRANSACTION }, - { "trailing", TRAILING }, - { "trigger", TRIGGER }, - { "trim", TRIM }, - { "type", P_TYPE }, - { "union", UNION }, - { "unique", UNIQUE }, - { "update", UPDATE }, - { "using", USING }, - { "vacuum", VACUUM }, - { "values", VALUES }, - { "verbose", VERBOSE }, - { "version", VERSION }, - { "view", VIEW }, - { "where", WHERE }, - { "with", WITH }, - { "work", WORK }, - { "year", YEARINTERVAL }, - { "zone", ZONE }, + /* name value */ + {"abort", ABORT_TRANS}, + {"acl", ACL}, + {"add", ADD}, + {"after", AFTER}, + {"aggregate", AGGREGATE}, + {"all", ALL}, + {"alter", ALTER}, + {"analyze", ANALYZE}, + {"and", AND}, + {"append", APPEND}, + {"archIve", ARCHIVE}, /* XXX crooked: I < _ */ + {"arch_store", ARCH_STORE}, + {"archive", ARCHIVE}, /* XXX crooked: i > _ */ + {"as", AS}, + {"asc", ASC}, + {"backward", BACKWARD}, + {"before", BEFORE}, + {"begin", BEGIN_TRANS}, + {"between", BETWEEN}, + {"binary", BINARY}, + {"both", BOTH}, + {"by", BY}, + {"cast", CAST}, + {"change", CHANGE}, + {"check", CHECK}, + {"close", CLOSE}, + {"cluster", CLUSTER}, + {"column", COLUMN}, + {"commit", COMMIT}, + {"constraint", CONSTRAINT}, + {"copy", COPY}, + {"create", CREATE}, + {"cross", CROSS}, + {"current", CURRENT}, + {"cursor", CURSOR}, + {"database", DATABASE}, + {"day", DAYINTERVAL}, + {"declare", DECLARE}, + {"default", DEFAULT}, + {"delete", DELETE}, + {"delimiters", DELIMITERS}, + {"desc", DESC}, + {"distinct", DISTINCT}, + {"do", DO}, + {"drop", DROP}, + {"end", END_TRANS}, + {"execute", EXECUTE}, + {"exists", EXISTS}, + {"explain", EXPLAIN}, + {"extend", EXTEND}, + {"extract", EXTRACT}, + {"fetch", FETCH}, + {"for", FOR}, + {"forward", FORWARD}, + {"from", FROM}, + {"full", FULL}, + {"function", FUNCTION}, + {"grant", GRANT}, + {"group", GROUP}, + {"having", HAVING}, + {"heavy", HEAVY}, + {"hour", HOURINTERVAL}, + {"in", IN}, + {"index", INDEX}, + {"inherits", INHERITS}, + {"inner", INNERJOIN}, + {"insert", INSERT}, + {"instead", INSTEAD}, + {"interval", INTERVAL}, + {"into", INTO}, + {"is", IS}, + {"isnull", ISNULL}, + {"join", JOIN}, + {"language", LANGUAGE}, + {"leading", LEADING}, + {"left", LEFT}, + {"light", LIGHT}, + {"like", LIKE}, + {"listen", LISTEN}, + {"load", LOAD}, + {"local", LOCAL}, + {"merge", MERGE}, + {"minute", MINUTEINTERVAL}, + {"month", MONTHINTERVAL}, + {"move", MOVE}, + {"natural", NATURAL}, + {"new", NEW}, + {"none", NONE}, + {"not", NOT}, + {"nothing", NOTHING}, + {"notify", NOTIFY}, + {"notnull", NOTNULL}, + {"null", PNULL}, + {"oids", OIDS}, + {"on", ON}, + {"operator", OPERATOR}, + {"option", OPTION}, + {"or", OR}, + {"order", ORDER}, + {"outer", OUTERJOIN}, + {"position", POSITION}, + {"privileges", PRIVILEGES}, + {"procedure", PROCEDURE}, + {"public", PUBLIC}, + {"purge", PURGE}, + {"recipe", RECIPE}, + {"rename", RENAME}, + {"replace", REPLACE}, + {"reset", RESET}, + {"retrieve", RETRIEVE}, + {"returns", RETURNS}, + {"revoke", REVOKE}, + {"right", RIGHT}, + {"rollback", ROLLBACK}, + {"rule", RULE}, + {"second", SECONDINTERVAL}, + {"select", SELECT}, + {"sequence", SEQUENCE}, + {"set", SET}, + {"setof", SETOF}, + {"show", SHOW}, + {"stdin", STDIN}, + {"stdout", STDOUT}, + {"store", STORE}, + {"substring", SUBSTRING}, + {"table", TABLE}, + {"time", TIME}, + {"to", TO}, + {"transaction", TRANSACTION}, + {"trailing", TRAILING}, + {"trigger", TRIGGER}, + {"trim", TRIM}, + {"type", P_TYPE}, + {"union", UNION}, + {"unique", UNIQUE}, + {"update", UPDATE}, + {"using", USING}, + {"vacuum", VACUUM}, + {"values", VALUES}, + {"verbose", VERBOSE}, + {"version", VERSION}, + {"view", VIEW}, + {"where", WHERE}, + {"with", WITH}, + {"work", WORK}, + {"year", YEARINTERVAL}, + {"zone", ZONE}, }; -ScanKeyword * +ScanKeyword * ScanKeywordLookup(char *text) { - ScanKeyword *low = &ScanKeywords[0]; - ScanKeyword *high = endof(ScanKeywords) - 1; - ScanKeyword *middle; - int difference; - - while (low <= high) { - middle = low + (high - low) / 2; - difference = strcmp(middle->name, text); - if (difference == 0) - return (middle); - else if (difference < 0) - low = middle + 1; - else - high = middle - 1; - } - - return (NULL); + ScanKeyword *low = &ScanKeywords[0]; + ScanKeyword *high = endof(ScanKeywords) - 1; + ScanKeyword *middle; + int difference; + + while (low <= high) + { + middle = low + (high - low) / 2; + difference = strcmp(middle->name, text); + if (difference == 0) + return (middle); + else if (difference < 0) + low = middle + 1; + else + high = middle - 1; + } + + return (NULL); } #ifdef NOT_USED -char* +char * AtomValueGetString(int atomval) { - ScanKeyword *low = &ScanKeywords[0]; - ScanKeyword *high = endof(ScanKeywords) - 1; - int keyword_list_length = (high-low); - int i; - - for (i=0; i < keyword_list_length ; i++ ) - if (ScanKeywords[i].value == atomval ) - return(ScanKeywords[i].name); - - elog(WARN,"AtomGetString called with bogus atom # : %d", atomval ); - return(NULL); + ScanKeyword *low = &ScanKeywords[0]; + ScanKeyword *high = endof(ScanKeywords) - 1; + int keyword_list_length = (high - low); + int i; + + for (i = 0; i < keyword_list_length; i++) + if (ScanKeywords[i].value == atomval) + return (ScanKeywords[i].name); + + elog(WARN, "AtomGetString called with bogus atom # : %d", atomval); + return (NULL); } + #endif |