]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
synced preproc.y with gram.y
authorMichael Meskes <meskes@postgresql.org>
Mon, 22 Oct 2001 17:05:56 +0000 (17:05 +0000)
committerMichael Meskes <meskes@postgresql.org>
Mon, 22 Oct 2001 17:05:56 +0000 (17:05 +0000)
src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/preproc/preproc.y

index a2b413bb8a7999b6a97678171086fcc87cdde903..07d6c2548f0ebdd7125e8af52fe611b2ad3eab35 100644 (file)
@@ -1138,5 +1138,9 @@ Thu Oct 18 12:57:04 CEST 2001
 Fri Oct 19 16:32:06 CEST 2001
 
        - Removed "not yet fully implemented" warnig for nullif.
+
+Sun Oct 21 14:19:42 CEST 2001
+
+       - Synced preproc.y with gram.y.
        - Set ecpg version to 2.9.0.
         - Set library version to 3.3.0.
index afd92b85c1cfb8ccec031299a3016c77098e0b4d..4451ee8ca855e2566a71bda80d6ca1191f0077ab 100644 (file)
@@ -833,7 +833,21 @@ opt_boolean:  TRUE_P               { $$ = make_str("true"); }
                | OFF           { $$ = make_str("off"); }
                ;
 
-zone_value:  StringConst                       { $$ = $1; }
+/* Timezone values can be:
+* - a string such as 'pst8pdt'
+* - an integer or floating point number
+* - a time interval per SQL99
+*/
+zone_value:  StringConst               { $$ = $1; }
+               | ConstInterval StringConst opt_interval
+                                       {
+                                         $$ = cat_str(3, $1, $2, $3); 
+                                       }
+               | ConstInterval '(' PosIntConst ')' StringConst opt_interval
+                                       {
+                                         $$ = cat_str(6, $1, make_str("("), $3, make_str(")"), $5, $6);
+                                       }
+               | NumConst              { $$ = $1; }
                | DEFAULT               { $$ = make_str("default"); }
                | LOCAL                 { $$ = make_str("local"); }
                ;
@@ -844,7 +858,7 @@ opt_encoding:       StringConst             { $$ = $1; }
                ;
 
 ColId_or_Sconst: ColId         { $$ = $1; }
-               | SCONST        { $$ = $1; }
+               | StringConst   { $$ = $1; }
                ;
 
 VariableShowStmt:  SHOW ColId
@@ -2950,8 +2964,9 @@ Iresult:  PosIntConst             { $$ = atol($1); }
        |       Iresult '%' Iresult     { $$ = $1 % $3; }
        ;
 
-SimpleTypename:  ConstTypename { $$ = $1; }
-               | ConstInterval { $$ = $1; }
+SimpleTypename:  ConstTypename                                 { $$ = $1; }
+               | ConstInterval opt_interval                    { $$ = cat2_str($1, $2); }
+              | ConstInterval '(' PosIntConst ')' opt_interval { $$ = cat_str(5, $1, make_str("("), $3, make_str(")"), $5); }
                ;  
 
 ConstTypename:  Generic        { $$ = $1; }
@@ -3120,9 +3135,9 @@ ConstDatetime:  datetime
                                }
                ;
 
-ConstInterval: INTERVAL opt_interval
+ConstInterval: INTERVAL
                                {
-                                       $$ = cat2_str(make_str("interval"), $2);
+                                       $$ = make_str("interval");
                                }
                ;
 
@@ -3139,15 +3154,20 @@ opt_timezone:  WITH TIME ZONE                           { $$ = make_str("with time zone"); }
                | /*EMPTY*/                                     { $$ = EMPTY; }
                ;
 
-opt_interval:  datetime                                        { $$ = $1; }
-               | YEAR_P TO MONTH_P                     { $$ = make_str("year to #month"); }
-               | DAY_P TO HOUR_P                       { $$ = make_str("day to hour"); }
-               | DAY_P TO MINUTE_P                     { $$ = make_str("day to minute"); }
-               | DAY_P TO SECOND_P                     { $$ = make_str("day to second"); }
-               | HOUR_P TO MINUTE_P                    { $$ = make_str("hour to minute"); }
-               | MINUTE_P TO SECOND_P                  { $$ = make_str("minute to second"); }
-               | HOUR_P TO SECOND_P                    { $$ = make_str("hour to second"); }
-               | /*EMPTY*/                                     { $$ = EMPTY; }
+opt_interval:  YEAR_P                          { $$ = make_str("year"); }
+               | MONTH_P                       { $$ = make_str("month"); }
+               | DAY_P                         { $$ = make_str("day"); }
+               | HOUR_P                        { $$ = make_str("hour"); }
+               | MINUTE_P                      { $$ = make_str("minute"); }
+               | SECOND_P                      { $$ = make_str("second"); }
+               | YEAR_P TO MONTH_P             { $$ = make_str("year to month"); }
+               | DAY_P TO HOUR_P               { $$ = make_str("day to hour"); }
+               | DAY_P TO MINUTE_P             { $$ = make_str("day to minute"); }
+               | DAY_P TO SECOND_P             { $$ = make_str("day to second"); }
+               | HOUR_P TO MINUTE_P            { $$ = make_str("hour to minute"); }
+               | MINUTE_P TO SECOND_P          { $$ = make_str("minute to second"); }
+               | HOUR_P TO SECOND_P            { $$ = make_str("hour to second"); }
+               | /*EMPTY*/                     { $$ = EMPTY; }
                ;
 
 
@@ -3523,7 +3543,7 @@ extract_list:  extract_arg FROM a_expr
  */
 
 extract_arg:  datetime         { $$ = $1; }
-       | SCONST                                { $$ = $1; }
+       | StringConst                           { $$ = $1; }
        | IDENT                                 { $$ = $1; }
                ;
 
@@ -3761,6 +3781,10 @@ AexprConst:  PosAllConst
                                {
                                        $$ = cat_str(3, $1, $2, $3);
                                }
+               | ConstInterval  '(' PosIntConst ')' StringConst opt_interval
+                               {
+                                       $$ = cat_str(6, $1, make_str("("), $3, make_str(")"), $5, $6);
+                               }
                | ParamNo
                                {       $$ = $1;  }
                | TRUE_P
@@ -5081,7 +5105,6 @@ ECPGColId: ident                  { $$ = $1; }
        | TYPE_P                        { $$ = make_str("type"); }
        | datetime                      { $$ = $1; }
        | TokenId                       { $$ = $1; }
-       | INTERVAL                      { $$ = make_str("interval"); }
        | NATIONAL                      { $$ = make_str("national"); }
        | NONE                          { $$ = make_str("none"); }
        | PATH_P                        { $$ = make_str("path_p"); }
@@ -5140,11 +5163,13 @@ ECPGColLabel:  ECPGColId        { $$ = $1; }
                | GROUP         { $$ = make_str("group"); }
                | HAVING        { $$ = make_str("having"); }
                | ILIKE         { $$ = make_str("ilike"); }
+               | IN            { $$ = make_str("in"); }
                | INITIALLY     { $$ = make_str("initially"); }
                | INNER_P       { $$ = make_str("inner"); }
+               | INOUT         { $$ = make_str("inout"); }
                | INTERSECT     { $$ = make_str("intersect"); }
+               | INTERVAL      { $$ = make_str("interval"); }
                | INTO          { $$ = make_str("into"); }
-               | INOUT         { $$ = make_str("inout"); }
                | JOIN          { $$ = make_str("join"); }
                | LEADING       { $$ = make_str("leading"); }
                | LEFT          { $$ = make_str("left"); }