*** empty log message ***
authorMichael Meskes
Thu, 30 Mar 2000 11:41:46 +0000 (11:41 +0000)
committerMichael Meskes
Thu, 30 Mar 2000 11:41:46 +0000 (11:41 +0000)
src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/lib/Makefile.in
src/interfaces/ecpg/preproc/Makefile.in
src/interfaces/ecpg/preproc/pgc.l
src/interfaces/ecpg/preproc/preproc.y
src/interfaces/ecpg/test/test3.pgc

index 42d14534f898b3f8f953963ac19288eaa3ddb8cf..065ac1786ea1b445aca61be5fbbd945a03556b1f 100644 (file)
@@ -875,5 +875,14 @@ Sun Mar 19 11:03:13 CET 2000
 Thu Mar 23 08:13:39 CET 2000
 
    - Synced preproc.y and keyword.c.
+
+Wed Mar 29 09:03:26 CEST 2000
+
+   - Fixed string parsing bug in pgc.l.
+
+Thu Mar 30 11:11:13 CEST 2000
+
+   - Synced preproc.y with gram.y.
+   - Fixed comment parsing bug.
    - Set library version to 3.1.0.
    - Set ecpg version to 2.7.0.
index 521d697add2c2d62056b1d72f70fb37ec17558b1..20f5c314dd1ed5e7569f763566ceb5bb02423cb9 100644 (file)
@@ -6,7 +6,7 @@
 # Copyright (c) 1994, Regents of the University of California
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/Makefile.in,v 1.64 2000/03/09 09:17:10 meskes Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/Makefile.in,v 1.65 2000/03/30 11:41:34 meskes Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -36,11 +36,6 @@ include $(SRCDIR)/Makefile.shlib
 
 install: install-lib $(install-shlib-dep)
 
-# Handmade dependencies in case make depend not done
-ecpglib.o : ecpglib.c ../include/ecpglib.h ../include/ecpgtype.h
-typename.o : typename.c ../include/ecpgtype.h
-
-
 .PHONY: clean
 
 clean: clean-shlib
index 4fbe16915e2854a18bbc7ffe9d5bf349799468b7..7317d0cb553ace8d3ee7b3e74d1533dbe0a9bb18 100644 (file)
@@ -7,7 +7,7 @@ PATCHLEVEL=0
 
 CFLAGS+=-I../include -DMAJOR_VERSION=$(MAJOR_VERSION) \
    -DMINOR_VERSION=$(MINOR_VERSION) -DPATCHLEVEL=$(PATCHLEVEL) \
-   -DINCLUDE_PATH=\"$(HEADERDIR)\"
+   -DINCLUDE_PATH=\"$(HEADERDIR)\" 
 
 OBJS=preproc.o pgc.o type.o ecpg.o ecpg_keywords.o output.o\
     keywords.o c_keywords.o ../lib/typename.o descriptor.o variable.o
@@ -35,7 +35,7 @@ pgc.c: pgc.l
    mv lex.yy.c pgc.c
 
 clean:
-   rm -f *.o core a.out ecpg$(X) *~ *.output
+   rm -f *.o core a.out ecpg$(X) *~ *.output *.tab.c
 # And the garbage that might have been left behind by partial build:
    rm -f y.tab.c y.tab.h lex.yy.c
 # make clean does not remove preproc.c, preproc.h, pgc.c since we want
@@ -47,10 +47,9 @@ install: all
 uninstall:
    rm -f $(BINDIR)/ecpg
 
-preproc.o: preproc.h ../include/ecpgtype.h keywords.c c_keywords.c ecpg_keywords.c
-type.o: ../include/ecpgtype.h
-pgc.o: ../include/ecpgtype.h keywords.c c_keywords.c ecpg_keywords.c preproc.h
-keywords.o: ../include/ecpgtype.h preproc.h
-c_keywords.o: ../include/ecpgtype.h preproc.h 
-ecpg_keywords.o: ../include/ecpgtype.h preproc.h 
+depend dep: preproc.c pgc.c
+   $(CC) -MM $(CFLAGS) *.c >depend
 
+ifeq (depend,$(wildcard depend))
+include depend
+endif
index 992b293085b3de09267af30a446fffe0f12355ba..847a5437334d1a5d3b5f2763857dc92d05b5bbf7 100644 (file)
@@ -12,7 +12,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.56 2000/03/18 18:03:10 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.57 2000/03/30 11:41:40 meskes Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -279,10 +279,10 @@ cppline           {space}*#(.*\\{line_end})*.*
 
 {xcstart}      {
                state_before = YYSTATE;
-               ECHO;
                BEGIN(xc);
                /* Put back any characters past slash-star; see above */
                yyless(2);
+               fputs("/*", yyout);
            }
 
 {xcstop}   { ECHO; BEGIN(state_before); }
@@ -354,12 +354,12 @@ cppline           {space}*#(.*\\{line_end})*.*
 
 <>                { mmerror(ET_ERROR, "Unterminated quoted string"); }
 
-{xdstart}          {
+{xdstart}         {
                    state_before = YYSTATE;
                    BEGIN(xd);
                    startlit();
                }
-{xdstop}           {
+,xdc>{xdstop}           {
                    BEGIN(state_before);
                    yylval.str = mm_strdup(literalbuf);
                    return CSTRING;
@@ -367,7 +367,15 @@ cppline            {space}*#(.*\\{line_end})*.*
 {xdinside}         {
                    addlit(yytext, yyleng);
                }
-<>                { mmerror(ET_ERROR, "Unterminated quoted identifier"); }
+<>                { mmerror(ET_ERROR, "Unterminated quoted identifier"); }
+{xdstart}          {
+                   state_before = YYSTATE;
+                   BEGIN(xdc);
+                   startlit();
+               }
+{xdcinside}       {
+                   addlit(yytext, yyleng);
+               }
 {typecast}            {   return TYPECAST; }
 {self}            { /* 
                   * We may find a ';' inside a structure
index f921fe4081f2382c6db786a4d62b117802e23b50..7715e7d0953d374f1e60b96bcf0671747aa425f3 100644 (file)
@@ -200,7 +200,7 @@ make_name(void)
                 PARTIAL, POSITION, PRECISION, PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC,
                 READ, REFERENCES, RELATIVE, REVOKE, RIGHT, ROLLBACK,
                 SCROLL, SECOND_P, SELECT, SESSION_USER, SET, SUBSTRING,
-                TABLE, TEMP, TEMPORARY, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR,
+                TABLE, TEMPORARY, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR,
        TIMEZONE_MINUTE, TO, TRAILING, TRANSACTION, TRIM, TRUE_P,
                 UNION, UNIQUE, UPDATE, USER, USING,
                 VALUES, VARCHAR, VARYING, VIEW,
@@ -235,7 +235,7 @@ make_name(void)
        OFFSET, OIDS, OPERATOR, PASSWORD, PROCEDURAL,
                 REINDEX, RENAME, RESET, RETURNS, ROW, RULE,
                 SEQUENCE, SERIAL, SETOF, SHARE, SHOW, START, STATEMENT, STDIN, STDOUT, SYSID
-       TRUNCATE, TRUSTED,
+       TEMP, TRUNCATE, TRUSTED,
                 UNLISTEN, UNTIL, VACUUM, VALID, VERBOSE, VERSION
 
 /* Special keywords, not in the query language - see the "lex" file */
@@ -284,7 +284,7 @@ make_name(void)
 %type      target_list target_el update_target_list alias_clause
 %type      update_target_el opt_id relation_name database_name
 %type      access_method attr_name class index_name name func_name
-%type      file_name AexprConst ParamNo TypeId c_expr
+%type      file_name AexprConst ParamNo c_expr
 %type     in_expr_nodes a_expr b_expr TruncateStmt CommentStmt
 %type     opt_indirection expr_list extract_list extract_arg
 %type     position_list substr_list substr_from alter_column_action
@@ -292,7 +292,7 @@ make_name(void)
 %type     Typename SimpleTypename Generic Numeric generic opt_float opt_numeric
 %type     opt_decimal Character character opt_varying opt_charset
 %type     opt_collate Datetime datetime opt_timezone opt_interval
-%type     numeric row_expr row_descriptor row_list
+%type     row_expr row_descriptor row_list
 %type     SelectStmt SubSelect result OptTemp ConstraintAttributeSpec
 %type     opt_table opt_all sort_clause sortby_list ConstraintAttr 
 %type     sortby OptUseOp opt_inh_star relation_name_list name_list
@@ -303,10 +303,10 @@ make_name(void)
 %type      NotifyStmt columnElem copy_dirn UnlistenStmt copy_null
 %type      copy_delimiter ListenStmt CopyStmt copy_file_name opt_binary
 %type      opt_with_copy FetchStmt direction fetch_how_many from_in
-%type      ClosePortalStmt DropStmt VacuumStmt opt_verbose
+%type      ClosePortalStmt DropStmt VacuumStmt opt_verbose func_arg
 %type      opt_analyze opt_va_list va_list ExplainStmt index_params
 %type      index_list func_index index_elem opt_type opt_class access_method_clause
-%type      index_opt_unique IndexStmt set_opt func_return def_rest
+%type      index_opt_unique IndexStmt func_return def_rest
 %type      func_args_list func_args opt_with ProcedureStmt def_arg
 %type      def_elem def_list definition def_name def_type DefineStmt
 %type      opt_instead event event_object RuleActionList opt_using
@@ -1841,22 +1841,23 @@ RecipeStmt:  EXECUTE RECIPE recipe_name
  *
  *     QUERY:
  *             define function 
- *                    (language = , returntype = 
- *                     [, arch_pct = ]
+ *                                              [( { , })]
+ *                                              returns 
+ *                                              as 
+ *                                              language  [with
+ *                                              [  arch_pct = ]
  *                     [, disk_pct = ]
  *                     [, byte_pct = ]
  *                     [, perbyte_cpu = ]
  *                     [, percall_cpu = ]
- *                     [, iscachable])
- *                     [arg is ( { , })]
- *                     as 
+ *                     [, iscachable]
  *
  *****************************************************************************/
 
 ProcedureStmt: CREATE FUNCTION func_name func_args
-            RETURNS func_return opt_with AS func_as LANGUAGE Sconst
+            RETURNS func_return AS func_as LANGUAGE Sconst opt_with
                {
-                   $$ = cat_str(10, make_str("create function"), $3, $4, make_str("returns"), $6, $7, make_str("as"), $9, make_str("language"), $11);
+                   $$ = cat_str(10, make_str("create function"), $3, $4, make_str("returns"), $6, make_str("as"), $8, make_str("language"), $10, $11);
                }
 
 opt_with:  WITH definition         { $$ = cat2_str(make_str("with"), $2); }
@@ -1867,25 +1868,46 @@ func_args:  '(' func_args_list ')'      { $$ = cat_str(3, make_str("("), $2, make_st
        | '(' ')'           { $$ = make_str("()"); }
        ;
 
-func_args_list:  TypeId                { $$ = $1; }
-       | func_args_list ',' TypeId
+func_args_list:  func_arg              { $$ = $1; }
+       | func_args_list ',' func_arg
                {   $$ = cat_str(3, $1, make_str(","), $3); }
        ;
 
+/* Would be nice to use the full Typename production for these fields,
+ * but that one sometimes dives into the catalogs looking for valid types.
+ * Arguments like "opaque" are valid when defining functions,
+ * so that won't work here. The only thing we give up is array notation,
+ * which isn't meaningful in this context anyway.
+ * - thomas 2000-03-25
+ */
+func_arg:  SimpleTypename
+                               {
+                                       /* We can catch over-specified arguments here if we want to,
+                                        * but for now better to silently swallow typmod, etc.
+                                        * - thomas 2000-03-22
+                                        */
+                                       $$ = $1;
+                               }
+               ;
+
 func_as: Sconst                { $$ = $1; }
        | Sconst ',' Sconst { $$ = cat_str(3, $1, make_str(","), $3); }
 
-func_return:  set_opt TypeId
+func_return:  SimpleTypename
+               {
+                                       /* We can catch over-specified arguments here if we want to,
+                                        * but for now better to silently swallow typmod, etc.
+                                        * - thomas 2000-03-22
+                                        */
+                                       $$ = $1;
+                                }
+       | SETOF SimpleTypename
                {
-                   $$ = cat2_str($1, $2);
-               }
-       ;
 
-set_opt:  SETOF                    { $$ = make_str("setof"); }
-       | /*EMPTY*/         { $$ = EMPTY; }
+                   $$ = cat2_str(make_str("setof"), $2);
+               }
        ;
 
-
 /*****************************************************************************
  *
  *     QUERY:
@@ -2984,16 +3006,6 @@ Numeric:  FLOAT opt_float
                }
        ;
 
-numeric:  FLOAT
-               {   $$ = make_str("float"); }
-       | DOUBLE PRECISION
-               {   $$ = make_str("double precision"); }
-       | DECIMAL
-               {   $$ = make_str("decimal"); }
-       | NUMERIC
-               {   $$ = make_str("numeric"); }
-       ;
-
 opt_float:  '(' Iconst ')'
                {
                    if (atol($2) < 1)
@@ -3839,20 +3851,6 @@ Sconst:  SCONST                                 {
                        }
 UserId:  ident                                  { $$ = $1;};
 
-/* Column and type identifier
- * Does not include explicit datetime types
- *  since these must be decoupled in Typename syntax.
- * Use ColId for most identifiers. - thomas 1997-10-21
- */
-TypeId:  ColId
-           {   $$ = $1; }
-       | numeric
-           {   $$ = $1; }
-       | bit
-           {   $$ = $1; }
-       | character
-           {   $$ = $1; }
-       ;
 /* Column identifier
  * Include date/time keywords as SQL92 extension.
  * Include TYPE as a SQL92 unreserved keyword. - thomas 1997-10-05
@@ -4889,8 +4887,12 @@ ECPGTypeName:      SQL_BOOL      { $$ = make_str("bool"); }
        | SQL_SIGNED        { $$ = make_str("signed"); }
        | SQL_UNSIGNED      { $$ = make_str("unsigned"); }
        | DOUBLE        { $$ = make_str("double"); }
+       ;
 
-ECPGLabelTypeName:  FLOAT      { $$ = make_str("float"); }
+ECPGLabelTypeName:   CHAR          { $$ = make_str("char"); }
+           | FLOAT     { $$ = make_str("float"); }
+           | UNION     { $$ = make_str("union"); }
+           | VARCHAR   { $$ = make_str("varchar"); }
            | ECPGTypeName  { $$ = $1; }
        ;
 
@@ -4907,34 +4909,50 @@ ECPGColId:  /* to be used instead of ColId */
    | ABSOLUTE          { $$ = make_str("absolute"); }
    | ACCESS            { $$ = make_str("access"); }
    | ACTION            { $$ = make_str("action"); }
+   | ADD               { $$ = make_str("add"); }
    | AFTER             { $$ = make_str("after"); }
    | AGGREGATE         { $$ = make_str("aggregate"); }
+   | ALTER             { $$ = make_str("alter"); }
    | BACKWARD          { $$ = make_str("backward"); }
    | BEFORE            { $$ = make_str("before"); }
+   | BEGIN_TRANS           { $$ = make_str("begin"); }
+   | BETWEEN           { $$ = make_str("between"); }
    | CACHE             { $$ = make_str("cache"); }
+   | CASCADE           { $$ = make_str("cascade"); }
+   | CLOSE             { $$ = make_str("close"); }
    | COMMENT           { $$ = make_str("comment"); } 
+   | COMMIT            { $$ = make_str("commit"); }
    | COMMITTED         { $$ = make_str("committed"); }
    | CONSTRAINTS           { $$ = make_str("constraints"); }
    | CREATEDB          { $$ = make_str("createdb"); }
    | CREATEUSER            { $$ = make_str("createuser"); }
    | CYCLE             { $$ = make_str("cycle"); }
    | DATABASE          { $$ = make_str("database"); }
+   | DECLARE           { $$ = make_str("declare"); }
    | DEFERRED          { $$ = make_str("deferred"); }
+   | DELETE            { $$ = make_str("delete"); }
    | DELIMITERS            { $$ = make_str("delimiters"); }
+   | DROP              { $$ = make_str("drop"); }
    | EACH              { $$ = make_str("each"); }
    | ENCODING          { $$ = make_str("encoding"); }
    | EXCLUSIVE         { $$ = make_str("exclusive"); }
+   | EXECUTE           { $$ = make_str("execute"); }
+   | FETCH             { $$ = make_str("fetch"); }
    | FORCE             { $$ = make_str("force"); }
    | FORWARD           { $$ = make_str("forward"); }
    | FUNCTION          { $$ = make_str("function"); }
+   | GRANT             { $$ = make_str("grant"); }
    | HANDLER           { $$ = make_str("handler"); }
    | IMMEDIATE         { $$ = make_str("immediate"); }
+   | IN                { $$ = make_str("in"); }
    | INCREMENT         { $$ = make_str("increment"); }
    | INDEX             { $$ = make_str("index"); }
    | INHERITS          { $$ = make_str("inherits"); }
    | INSENSITIVE           { $$ = make_str("insensitive"); }
+   | INSERT            { $$ = make_str("insert"); }
    | INSTEAD           { $$ = make_str("instead"); }
    | INTERVAL          { $$ = make_str("interval"); }
+   | IS                { $$ = make_str("is"); }
    | ISNULL            { $$ = make_str("isnull"); }
    | ISOLATION         { $$ = make_str("isolation"); }
    | KEY               { $$ = make_str("key"); }
@@ -4946,10 +4964,14 @@ ECPGColId:  /* to be used instead of ColId */
    | MAXVALUE          { $$ = make_str("maxvalue"); }
    | MINVALUE          { $$ = make_str("minvalue"); }
    | MODE              { $$ = make_str("mode"); }
+   | NAMES             { $$ = make_str("names"); }
+   | NATIONAL          { $$ = make_str("national"); }
    | NEXT              { $$ = make_str("next"); }
+   | NO                { $$ = make_str("no"); }
    | NOCREATEDB            { $$ = make_str("nocreatedb"); }
    | NOCREATEUSER          { $$ = make_str("nocreateuser"); }
    | NOTHING           { $$ = make_str("nothing"); }
+   | NOTIFY            { $$ = make_str("notify"); }
    | NOTNULL           { $$ = make_str("notnull"); }
    | OF                { $$ = make_str("of"); }
    | OIDS              { $$ = make_str("oids"); }
@@ -4957,22 +4979,27 @@ ECPGColId:  /* to be used instead of ColId */
    | OPERATOR          { $$ = make_str("operator"); }
    | OPTION            { $$ = make_str("option"); }
    | OVERLAPS          { $$ = make_str("overlaps"); }
+   | PARTIAL           { $$ = make_str("partial"); }
    | PASSWORD          { $$ = make_str("password"); }
    | PENDANT           { $$ = make_str("pendant"); }
    | PRIOR             { $$ = make_str("prior"); }
    | PRIVILEGES            { $$ = make_str("privileges"); }
    | PROCEDURAL            { $$ = make_str("procedural"); }
    | READ              { $$ = make_str("read"); }
+   | REINDEX           { $$ = make_str("reindex"); }
    | RELATIVE          { $$ = make_str("relative"); }
    | RENAME            { $$ = make_str("rename"); }
    | RESTRICT          { $$ = make_str("restrict"); }
    | RETURNS           { $$ = make_str("returns"); }
+   | REVOKE            { $$ = make_str("revoke"); }
+   | ROLLBACK          { $$ = make_str("rollback"); }
    | ROW               { $$ = make_str("row"); }
    | RULE              { $$ = make_str("rule"); }
    | SCROLL            { $$ = make_str("scroll"); }
    | SEQUENCE                      { $$ = make_str("sequence"); }
    | SERIAL            { $$ = make_str("serial"); }
    | SERIALIZABLE          { $$ = make_str("serializable"); }
+   | SET               { $$ = make_str("set"); }
    | SHARE             { $$ = make_str("share"); }
    | START             { $$ = make_str("start"); }
    | STATEMENT         { $$ = make_str("statement"); }
@@ -4989,60 +5016,117 @@ ECPGColId:  /* to be used instead of ColId */
    | TRUNCATE          { $$ = make_str("truncate"); }
    | TRUSTED           { $$ = make_str("trusted"); }
    | TYPE_P            { $$ = make_str("type"); }
+   | UNLISTEN          { $$ = make_str("unlisten"); }
+   | UNTIL             { $$ = make_str("until"); }
+   | UPDATE            { $$ = make_str("update"); }
    | VALID             { $$ = make_str("valid"); }
+   | VALUES            { $$ = make_str("values"); }
+   | VARYING           { $$ = make_str("varying"); }
    | VERSION           { $$ = make_str("version"); }
+   | VIEW              { $$ = make_str("view"); }
+   | WITH              { $$ = make_str("with"); }
+   | WORK              { $$ = make_str("work"); }
    | ZONE              { $$ = make_str("zone"); }
    ;
 
 ECPGColLabel:  ECPGColId       { $$ = $1; }
        | ABORT_TRANS           { $$ = make_str("abort"); }
+       | ALL           { $$ = make_str("all"); }
        | ANALYZE               { $$ = make_str("analyze"); }
+       | ANY           { $$ = make_str("any"); }
+       | ASC           { $$ = make_str("asc"); }
        | BINARY                { $$ = make_str("binary"); }
        | BIT                   { $$ = make_str("bit"); }
+       | BOTH          { $$ = make_str("both"); }
        | CASE                  { $$ = make_str("case"); }
+       | CAST          { $$ = make_str("cast"); }
        | CHARACTER             { $$ = make_str("character"); }
+       | CHECK         { $$ = make_str("check"); }
        | CLUSTER       { $$ = make_str("cluster"); }
        | COALESCE              { $$ = make_str("coalesce"); }
+       | COLLATE       { $$ = make_str("collate"); }
+       | COLUMN        { $$ = make_str("column"); }
        | CONSTRAINT        { $$ = make_str("constraint"); }
        | COPY          { $$ = make_str("copy"); }
+       | CROSS         { $$ = make_str("cross"); }
        | CURRENT       { $$ = make_str("current"); }
+       | CURRENT_DATE      { $$ = make_str("current_date"); }
+       | CURRENT_TIME      { $$ = make_str("current_time"); }
+       | CURRENT_TIMESTAMP { $$ = make_str("current_timestamp"); }
        | CURRENT_USER      { $$ = make_str("current_user"); }
        | DEC           { $$ = make_str("dec"); }
        | DECIMAL       { $$ = make_str("decimal"); }
+       | DEFAULT       { $$ = make_str("default"); }
        | DEFERRABLE        { $$ = make_str("deferrable"); }
+       | DESC          { $$ = make_str("desc"); }
+       | DISTINCT      { $$ = make_str("distinct"); }
        | DO            { $$ = make_str("do"); }
        | ELSE                  { $$ = make_str("else"); }
        | END_TRANS             { $$ = make_str("end"); }
+       | EXCEPT        { $$ = make_str("except"); }
+       | EXISTS        { $$ = make_str("exists"); }
        | EXPLAIN       { $$ = make_str("explain"); }
        | EXTEND        { $$ = make_str("extend"); }
+       | EXTRACT       { $$ = make_str("extract"); }
        | FALSE_P       { $$ = make_str("false"); }
+       | FOR           { $$ = make_str("for"); }
        | FOREIGN       { $$ = make_str("foreign"); }
+       | FROM          { $$ = make_str("from"); }
+       | FULL          { $$ = make_str("full"); }
        | GLOBAL        { $$ = make_str("global"); }
        | GROUP         { $$ = make_str("group"); }
+       | HAVING        { $$ = make_str("having"); }
        | INITIALLY     { $$ = make_str("initially"); }
+       | INNER_P       { $$ = make_str("inner"); }
+       | INTERSECT     { $$ = make_str("intersect"); }
+       | INTO          { $$ = make_str("into"); }
+       | JOIN          { $$ = make_str("join"); }
+       | LEADING       { $$ = make_str("leading"); }
+       | LEFT          { $$ = make_str("left"); }
+       | LIKE          { $$ = make_str("like"); }
        | LISTEN        { $$ = make_str("listen"); }
        | LOAD          { $$ = make_str("load"); }
        | LOCK_P        { $$ = make_str("lock"); }
        | MOVE          { $$ = make_str("move"); }
+       | NATURAL       { $$ = make_str("natural"); }
+       | NCHAR         { $$ = make_str("nchar"); }
        | NEW           { $$ = make_str("new"); }
        | NONE          { $$ = make_str("none"); }
+       | NOT           { $$ = make_str("not"); }
        | NULLIF                { $$ = make_str("nullif"); }
+       | NULL_P        { $$ = make_str("null"); }
        | NUMERIC               { $$ = make_str("numeric"); }
+       | OFFSET        { $$ = make_str("offset"); }
+       | ON            { $$ = make_str("on"); }
+       | OR            { $$ = make_str("or"); }
        | ORDER         { $$ = make_str("order"); }
+       | OUTER_P       { $$ = make_str("outer"); }
        | POSITION      { $$ = make_str("position"); }
        | PRECISION     { $$ = make_str("precision"); }
+       | PRIMARY       { $$ = make_str("primary"); }
+       | PROCEDURE     { $$ = make_str("procedure"); }
+       | PUBLIC        { $$ = make_str("public"); }
+       | REFERENCES        { $$ = make_str("references"); }
        | RESET         { $$ = make_str("reset"); }
+       | RIGHT         { $$ = make_str("right"); }
+       | SELECT        { $$ = make_str("select"); }
        | SESSION_USER      { $$ = make_str("session_user"); }
        | SETOF         { $$ = make_str("setof"); }
        | SHOW          { $$ = make_str("show"); }
+       | SUBSTRING     { $$ = make_str("substring"); }
        | TABLE         { $$ = make_str("table"); }
        | THEN                  { $$ = make_str("then"); }
+       | TO            { $$ = make_str("to"); }
        | TRANSACTION       { $$ = make_str("transaction"); }
+       | TRIM          { $$ = make_str("trim"); }
        | TRUE_P        { $$ = make_str("true"); }
+       | UNIQUE        { $$ = make_str("unique"); }
        | USER          { $$ = make_str("user"); }
+       | USING         { $$ = make_str("using"); }
        | VACUUM        { $$ = make_str("vacuum"); }
        | VERBOSE       { $$ = make_str("verbose"); }
        | WHEN                  { $$ = make_str("when"); }
+       | WHERE         { $$ = make_str("where"); }
        ;
 
 into_list : coutputvariable | into_list ',' coutputvariable;
index 9e3e4398df53c2a927515a0552db3f972fd995de..44815067ba0b8b4182c59fff08773b2f04b803f6 100644 (file)
@@ -1,3 +1,6 @@
+/****************************************************************************/
+/* Test comment                                                             */
+/*--------------------------------------------------------------------------*/
 exec sql include header_test;
 
 exec sql type str is varchar[10];