]> granicus.if.org Git - postgresql/commitdiff
Synced preproc.y and keywords.c.
authorMichael Meskes <meskes@postgresql.org>
Mon, 22 Apr 2002 18:54:43 +0000 (18:54 +0000)
committerMichael Meskes <meskes@postgresql.org>
Mon, 22 Apr 2002 18:54:43 +0000 (18:54 +0000)
src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/preproc/keywords.c
src/interfaces/ecpg/preproc/preproc.y

index d3246ddff0cc2312978a10ad82a9787b85f4c2d6..bc591ecd74d84b59bc044de5c07d8127614e8e39 100644 (file)
@@ -1237,6 +1237,11 @@ Sun Apr 14 10:53:14 CEST 2002
        - Fixed one bug in structure handling resulting in using sizeof
          indicator instead of variable.
        - Synced preproc.y with gram.y.
+
+Mon Apr 22 20:44:56 CEST 2002
+       
+       - Synced preproc.y with gram.y.
+       - Synced keywords.c.
        - Set ecpg version to 2.10.0.
        - Set library version to 3.4.0.
 
index d3b0e90ffb5268fab8b59d7c2b3d6196e2de92d4..b7613c3f0a79edfd990c9ad1d9fda966cfd386bf 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.46 2001/10/15 00:06:04 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/keywords.c,v 1.47 2002/04/22 18:54:43 meskes Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -43,6 +43,7 @@ static ScanKeyword ScanKeywords[] = {
        {"any", ANY},
        {"as", AS},
        {"asc", ASC},
+       {"assertion", ASSERTION},
        {"at", AT},
        {"authorization", AUTHORIZATION},
        {"backward", BACKWARD},
@@ -97,6 +98,7 @@ static ScanKeyword ScanKeywords[] = {
        {"desc", DESC},
        {"distinct", DISTINCT},
        {"do", DO},
+       {"domain", DOMAIN_P},
        {"double", DOUBLE},
        {"drop", DROP},
        {"each", EACH},
@@ -210,7 +212,6 @@ static ScanKeyword ScanKeywords[] = {
        {"privileges", PRIVILEGES},
        {"procedural", PROCEDURAL},
        {"procedure", PROCEDURE},
-       {"public", PUBLIC},
        {"read", READ},
        {"references", REFERENCES},
        {"reindex", REINDEX},
@@ -243,6 +244,7 @@ static ScanKeyword ScanKeywords[] = {
        {"statistics", STATISTICS},
        {"stdin", STDIN},
        {"stdout", STDOUT},
+       {"storage", STORAGE},
        {"substring", SUBSTRING},
        {"sysid", SYSID},
        {"table", TABLE},
@@ -269,6 +271,7 @@ static ScanKeyword ScanKeywords[] = {
        {"unlisten", UNLISTEN},
        {"until", UNTIL},
        {"update", UPDATE},
+       {"usage", USAGE},
        {"user", USER},
        {"using", USING},
        {"vacuum", VACUUM},
index fab5614e6174906fdd1757661e131dd6d9027665..54d85a8b88dc8f38142b546574a2dbe91fabdca2 100644 (file)
@@ -177,8 +177,8 @@ make_name(void)
 /* Keywords (in SQL92 reserved words) */
 %token ABSOLUTE, ACTION, ADD, ALL, ALTER, AND, ANY, AS, ASC,
                AT, AUTHORIZATION, BEGIN_TRANS, BETWEEN, BOTH, BY,
-               CASCADE, CASE, CAST, CHAIN, CHAR, CHARACTER,
-               CHARACTERISTICS, CHECK, CLOSE, COALESCE, COLLATE,
+               CASCADE, CASE, CAST, CHAR, CHARACTER,
+               CHECK, CLOSE, COALESCE, COLLATE,
                COLUMN, COMMIT, CONSTRAINT, CONSTRAINTS, CREATE, CROSS,
                CURRENT, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
                CURRENT_USER, CURSOR, DAY_P, DEC, DECIMAL, DECLARE,
@@ -193,7 +193,7 @@ make_name(void)
                NULL_P, NUMERIC, OF, OFF, OLD, ON, ONLY, OPTION, OR,
                ORDER, OUT, OUTER_P, OVERLAPS, PARTIAL, PATH_P,
                POSITION, PRECISION, PRIMARY, PRIOR, PRIVILEGES,
-               PROCEDURE, PUBLIC, READ, REFERENCES, RELATIVE, REVOKE,
+               PROCEDURE, READ, REFERENCES, RELATIVE, REVOKE,
                RIGHT, ROLLBACK, SCHEMA, SCROLL, SECOND_P, SELECT,
                SESSION, SESSION_USER, SET, SOME, SUBSTRING, TABLE,
                TEMPORARY, THEN, TIME, TIMESTAMP TO, TRAILING,
@@ -202,8 +202,9 @@ make_name(void)
                VARYING, VIEW, WHEN, WHERE, WITH, WITHOUT, WORK,
                YEAR_P, ZONE
 
-/* Keywords (in SQL3 reserved words) */
-%token DEFERRABLE, DEFERRED, IMMEDIATE, INITIALLY, PENDANT,
+/* Keywords (in SQL99 reserved words) */
+%token ASSERTION, CHAIN, CHARACTERISTICS,
+               DEFERRABLE, DEFERRED, IMMEDIATE, INITIALLY, PENDANT,
                REPLACE, RESTRICT, TRIGGER
 
 /* Keywords (in SQL92 non-reserved words) */
@@ -284,8 +285,8 @@ make_name(void)
 %type  <str>   ConstraintElem key_actions ColQualList type_name DropSchemaStmt
 %type  <str>   target_list target_el update_target_list alias_clause
 %type  <str>   update_target_el opt_id qualified_name database_name
-%type  <str>   access_method attr_name class index_name name func_name
-%type  <str>   file_name AexprConst c_expr ConstTypename
+%type  <str>   access_method attr_name index_name name func_name
+%type  <str>   file_name AexprConst c_expr ConstTypename var_list
 %type  <str>   in_expr_nodes a_expr b_expr TruncateStmt CommentStmt
 %type  <str>   opt_indirection expr_list extract_list extract_arg
 %type  <str>   position_list substr_list substr_from alter_column_default
@@ -311,7 +312,7 @@ make_name(void)
 %type  <str>   index_opt_unique IndexStmt func_return ConstInterval
 %type  <str>   func_args_list func_args opt_with ProcedureStmt def_arg
 %type  <str>   def_elem def_list definition DefineStmt select_with_parens
-%type  <str>   opt_instead event RuleActionList opt_using
+%type  <str>   opt_instead event RuleActionList opt_using CreateAssertStmt
 %type  <str>   RuleActionStmtOrEmpty RuleActionMulti func_as reindex_type
 %type  <str>   RuleStmt opt_column opt_name oper_argtypes NumConst
 %type  <str>   MathOp RemoveFuncStmt aggr_argtype for_update_clause
@@ -335,7 +336,7 @@ make_name(void)
 %type  <str>   opt_cursor ConstraintsSetStmt AllConst CreateDomainStmt
 %type  <str>   case_expr when_clause_list case_default case_arg when_clause
 %type  <str>   select_clause opt_select_limit select_limit_value
-%type  <str>   ConstraintTimeSpec AlterDatabaseSetStmt
+%type  <str>   ConstraintTimeSpec AlterDatabaseSetStmt DropAssertStmt
 %type  <str>   select_offset_value ReindexStmt join_type opt_boolean
 %type  <str>   join_qual update_list AlterSchemaStmt joined_table
 %type  <str>   opt_level opt_lock lock_type OptGroupList OptGroupElem
@@ -348,7 +349,7 @@ make_name(void)
 %type  <str>   OptSchemaName OptSchemaEltList schema_stmt opt_drop_behavior
 %type  <str>   handler_name any_name_list any_name opt_as insert_column_list
 %type  <str>   columnref dotted_name function_name insert_target_el
-%type  <str>   insert_target_list insert_column_item 
+%type  <str>   insert_target_list insert_column_item DropRuleStmt
 
 %type  <str>   ECPGWhenever ECPGConnect connection_target ECPGOpen
 %type  <str>   indicator ECPGExecute ECPGPrepare ecpg_using ecpg_into
@@ -431,6 +432,7 @@ stmt:  AlterDatabaseSetStmt { output_statement($1, 0, connection); }
                | CreateGroupStmt       { output_statement($1, 0, connection); }
                | CreateSeqStmt         { output_statement($1, 0, connection); }
                | CreatePLangStmt       { output_statement($1, 0, connection); }
+               | CreateAssertStmt      { output_statement($1, 0, connection); }
                | CreateTrigStmt        { output_statement($1, 0, connection); }
                | CreateUserStmt        { output_statement($1, 0, connection); }
                | ClusterStmt           { output_statement($1, 0, connection); }
@@ -440,7 +442,9 @@ stmt:  AlterDatabaseSetStmt { output_statement($1, 0, connection); }
                | TruncateStmt          { output_statement($1, 0, connection); }
                | DropGroupStmt         { output_statement($1, 0, connection); }
                | DropPLangStmt         { output_statement($1, 0, connection); }
+               | DropAssertStmt        { output_statement($1, 0, connection); }
                | DropTrigStmt          { output_statement($1, 0, connection); }
+               | DropRuleStmt          { output_statement($1, 0, connection); }
                | DropUserStmt          { output_statement($1, 0, connection); }
                | ExplainStmt           { output_statement($1, 0, connection); }
                | FetchStmt             { output_statement($1, 1, connection); }
@@ -808,9 +812,9 @@ schema_stmt: CreateStmt             { $$ = $1; }
  *
  *****************************************************************************/
 
-VariableSetStmt:  SET ColId TO var_value
+VariableSetStmt:  SET ColId TO var_list
                        { $$ = cat_str(4, make_str("set"), $2, make_str("to"), $4); }
-               | SET ColId '=' var_value
+               | SET ColId '=' var_list
                        { $$ = cat_str(4, make_str("set"), $2, make_str("="), $4); }
                | SET TIME ZONE zone_value
                        { $$ = cat2_str(make_str("set time zone"), $4); }
@@ -824,21 +828,22 @@ VariableSetStmt:  SET ColId TO var_value
                        { $$ = cat2_str(make_str("set session authorization"), $4); }
                ;
 
+var_list:  var_value
+                       { $$ = $1; }
+               | var_list ',' var_value
+                       { $$ = cat_str(3, $1, make_str(","), $3); }
+               | DEFAULT
+                       { $$ = make_str("default"); }
+               ;
+               
 opt_level:     READ COMMITTED  { $$ = make_str("read committed"); }
                | SERIALIZABLE          { $$ = make_str("serializable"); }
                ;
 
 
 var_value:     opt_boolean             { $$ = $1; }
-               | AllConst                      { $$ = $1; }
-               | name_list
-               {
-                       if (strlen($1) == 0)
-                       mmerror(PARSE_ERROR, ET_ERROR, "SET must have at least one argument.");
-
-                       $$ = $1;
-               }
-               | DEFAULT                       { $$ = make_str("default"); }
+               | NumConst                      { $$ = $1; }
+               | ColId_or_Sconst       { $$ = $1; }    
                ;
 
 opt_boolean:  TRUE_P           { $$ = make_str("true"); }
@@ -848,11 +853,15 @@ opt_boolean:  TRUE_P              { $$ = make_str("true"); }
                ;
 
 /* Timezone values can be:
-* - a string such as 'pst8pdt'
-* - an integer or floating point number
-* - a time interval per SQL99
-*/
+ * - a string such as 'pst8pdt'
+ * - a column identifier such as "pst8pdt"
+ * - an integer or floating point number
+ * - a time interval per SQL99
+ * ConstInterval and ColId give shift/reduce errors,
+ * so use IDENT and reject anything which is a reserved word.
+ */
 zone_value:  AllConst          { $$ = $1; }
+               | IDENT         { $$ = $1; }
                | ConstInterval StringConst opt_interval
                        { $$ = cat_str(3, $1, $2, $3); }
                | ConstInterval '(' PosIntConst ')' StringConst opt_interval
@@ -1427,6 +1436,29 @@ DropTrigStmt:  DROP TRIGGER name ON qualified_name
                        { $$ = cat_str(4, make_str("drop trigger"), $3, make_str("on"), $5); }
                ;
 
+/*****************************************************************************
+ *
+ *             QUERIES :
+ *                             CREATE ASSERTION ...
+ *                             DROP ASSERTION ...
+ *
+ *****************************************************************************/
+CreateAssertStmt:  CREATE ASSERTION name
+                       CHECK '(' a_expr ')' ConstraintAttributeSpec
+                       {
+                               mmerror(PARSE_ERROR, ET_ERROR, "CREATE ASSERTION is not yet supported");
+                               $$ = cat_str(6, make_str("create assertion"), $3, make_str("check ("), $6, make_str(")"), $8);
+                       }
+               ;
+
+DropAssertStmt:  DROP ASSERTION name
+       {
+               mmerror(PARSE_ERROR, ET_ERROR, "DROP ASSERTION is not yet supported");
+               $$ = cat2_str(make_str("drop assertion"), $3);
+       }
+       ;
+
+                      
 /*****************************************************************************
  *
  *             QUERY :
@@ -1476,7 +1508,6 @@ drop_type:        TABLE           { $$ = make_str("table"); }
                | SEQUENCE              { $$ = make_str("sequence"); }
                | VIEW                  { $$ = make_str("view"); }
                | INDEX                 { $$ = make_str("index"); }
-               | RULE                  { $$ = make_str("rule"); }
                | TYPE_P                { $$ = make_str("type"); }
                | DOMAIN_P              { $$ = make_str("domain"); }
                ;
@@ -1563,11 +1594,11 @@ from_in: IN                                     { $$ = make_str("in"); }
  *     The COMMENT ON statement can take different forms based upon the type of
  *     the object associated with the comment. The form of the statement is:
  *
- *     COMMENT ON [ [ DATABASE | DOMAIN | INDEX | RULE | SEQUENCE | TABLE | TYPE | VIEW ]
+ *     COMMENT ON [ [ DATABASE | DOMAIN | INDEX |  SEQUENCE | TABLE | TYPE | VIEW ]
  *                              <objname> | AGGREGATE <aggname> (<aggtype>) | FUNCTION
  *                             <funcname> (arg1, arg2, ...) | OPERATOR <op>
  *                             (leftoperand_typ rightoperand_typ) | TRIGGER <triggername> ON
- *                             <relname> ] IS 'text'
+ *                             <relname> | RULE <rulename> ON <relname> ] IS 'text'
  *
  *****************************************************************************/
 CommentStmt:   COMMENT ON comment_type name IS comment_text
@@ -1584,11 +1615,14 @@ CommentStmt:   COMMENT ON comment_type name IS comment_text
                        { $$ = cat_str(6, make_str("comment on operator"), $4, make_str("("), $6, make_str(") is"), $9); }
                | COMMENT ON TRIGGER name ON qualified_name IS comment_text
                        { $$ = cat_str(6, make_str("comment on trigger"), $4, make_str("on"), $6, make_str("is"), $8); }
+               | COMMENT ON RULE name ON any_name IS comment_text
+                       { $$ = cat_str(6, make_str("comment on rule"), $4, make_str("on"), $6, make_str("is"), $8); }
+               | COMMENT ON RULE name IS comment_text
+                       { $$ = cat_str(4, make_str("comment on rule"), $4, make_str("is"), $6); }
                ;
 
 comment_type:  DATABASE                { $$ = make_str("database"); }
                | INDEX         { $$ = make_str("idnex"); }
-               | RULE          { $$ = make_str("rule"); }
                | SEQUENCE      { $$ = make_str("sequence"); }
                | TABLE         { $$ = make_str("table"); }
                | DOMAIN_P      { $$ = make_str("domain"); }
@@ -1635,6 +1669,9 @@ privilege:        SELECT                  { $$ = make_str("select"); }
                | TRIGGER                       { $$ = make_str("trigger"); }
                | EXECUTE                       { $$ = make_str("execute"); }
                | USAGE                         { $$ = make_str("usage"); }
+               | CREATE                        { $$ = make_str("create"); }
+               | TEMPORARY                     { $$ = make_str("temporary"); }
+               | TEMP                          { $$ = make_str("temp"); }
                ;
 
 privilege_target: qualified_name_list  
@@ -1643,8 +1680,12 @@ privilege_target: qualified_name_list
                        { $$ = cat2_str(make_str("table"), $2); }
                | FUNCTION function_with_argtypes_list
                        { $$ = cat2_str(make_str("function"), $2); }
+               | DATABASE name_list
+                       { $$ = cat2_str(make_str("database"), $2); }
                | LANGUAGE name_list                    
                        { $$ = cat2_str(make_str("language") , $2); }
+               | SCHEMA name_list                      
+                       { $$ = cat2_str(make_str("schema") , $2); }
                ;
 
 grantee_list: grantee                          
@@ -1653,9 +1694,8 @@ grantee_list: grantee
                        { $$ = cat_str(3, $1, make_str(","), $3); }
                ;
 
-grantee:  PUBLIC                       { $$ = make_str("public"); }
+grantee:  ColId                        { $$ = $1; }
                | GROUP ColId           { $$ = cat2_str(make_str("group"), $2); }
-               | ColId                         { $$ = $1; }
                ;
 
 opt_grant_grant_option:  WITH GRANT OPTION
@@ -1724,26 +1764,8 @@ index_elem:  attr_name opt_class
                        { $$ = cat2_str($1, $2); }
                ;
 
-opt_class:     class
-               {
-                       /*
-                        * Release 7.0 removed network_ops, timespan_ops, and
-                        * datetime_ops, so we suppress it from being passed to
-                        * the parser so the default *_ops is used.  This can be
-                        * removed in some later release.       bjm 2000/02/07
-                        *
-                        * Release 7.1 removes lztext_ops, so suppress that too
-                        * for a while.  tgl 2000/07/30
-                        */
-                       if (strcmp($1, "network_ops") != 0 &&
-                                strcmp($1, "timespan_ops") != 0 &&
-                                strcmp($1, "datetime_ops") != 0 &&
-                                strcmp($1, "lztext_ops") != 0)
-                               $$ = $1;
-                       else
-                               $$ = EMPTY;
-               }
-               | USING class   { $$ = cat2_str(make_str("using"), $2); }
+opt_class:     any_name        { $$ = $1; }
+               | USING any_name        { $$ = cat2_str(make_str("using"), $2); }
                | /*EMPTY*/             { $$ = EMPTY; }
                ;
 
@@ -1974,6 +1996,9 @@ opt_instead:  INSTEAD             { $$ = make_str("instead"); }
                | /*EMPTY*/                     { $$ = EMPTY; }
                ;
 
+DropRuleStmt:  DROP RULE name ON qualified_name
+               { $$ = cat_str(4, make_str("drop rule"), $3, make_str("on"), $5);}
+               ;
 
 /*****************************************************************************
  *
@@ -3398,7 +3423,6 @@ name:                                     ColId                   { $$ = $1; };
 database_name:                 ColId                   { $$ = $1; };
 access_method:                 ColId                   { $$ = $1; };
 attr_name:                             ColId                   { $$ = $1; };
-class:                                 ColId                   { $$ = $1; };
 index_name:                            ColId                   { $$ = $1; };
 
 file_name:                             StringConst             { $$ = $1; };
@@ -4780,6 +4804,7 @@ unreserved_keyword:
                | AFTER                                                 { $$ = make_str("after"); }
                | AGGREGATE                                             { $$ = make_str("aggregate"); }
                | ALTER                                                 { $$ = make_str("alter"); }
+               | ASSERTION                                                     { $$ = make_str("assertion"); }
                | AT                                                    { $$ = make_str("at"); }
                | BACKWARD                                              { $$ = make_str("backward"); }
                | BEFORE                                                { $$ = make_str("before"); }
@@ -4993,7 +5018,6 @@ func_name_keyword:
                | NOTNULL                                               { $$ = make_str("notnull"); }
                | OUTER_P                                               { $$ = make_str("outer"); }
                | OVERLAPS                                              { $$ = make_str("overlaps"); }
-               | PUBLIC                                                { $$ = make_str("public"); }
                | RIGHT                                                 { $$ = make_str("right"); }
                | VERBOSE                                               { $$ = make_str("verbose"); }
                ;