Implement AT TIME ZONE SQL9x syntax.
authorThomas G. Lockhart <lockhart@fourpalms.org>
Mon, 6 Nov 2000 15:47:17 +0000 (15:47 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Mon, 6 Nov 2000 15:47:17 +0000 (15:47 +0000)
 AT is now a keyword but is not a reserved word.

src/backend/parser/gram.y
src/backend/parser/keywords.c

index 70245ecd010f402c90fdc3f70325f782a5e34ba2..0de10c74ba85ae1f188fd52e829d8e935861c186 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.205 2000/11/05 22:50:20 vadim Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.206 2000/11/06 15:47:17 thomas Exp $
  *
  * HISTORY
  *       AUTHOR                        DATE                    MAJOR EVENT
@@ -289,7 +289,7 @@ static void doNegateFloat(Value *v);
  */
 
 /* Keywords (in SQL92 reserved words) */
-%token ABSOLUTE, ACTION, ADD, ALL, ALTER, AND, ANY, AS, ASC,
+%token ABSOLUTE, ACTION, ADD, ALL, ALTER, AND, ANY, AS, ASC, AT,
                BEGIN_TRANS, BETWEEN, BOTH, BY,
                CASCADE, CASE, CAST, CHAR, CHARACTER, CHECK, CLOSE, 
                COALESCE, COLLATE, COLUMN, COMMIT,
@@ -386,6 +386,7 @@ static void doNegateFloat(Value *v);
 %left          '*' '/' '%'
 %left          '^'
 /* Unary Operators */
+%left          AT
 %right         UMINUS
 %left          '.'
 %left          '[' ']'
@@ -4298,6 +4299,15 @@ a_expr:  c_expr
                                {       $$ = $1;  }
                | a_expr TYPECAST Typename
                                {       $$ = makeTypeCast($1, $3); }
+               | a_expr AT TIME ZONE c_expr
+                               {
+                                       FuncCall *n = makeNode(FuncCall);
+                                       n->funcname = "timezone";
+                                       n->args = makeList2($5, $1);
+                                       n->agg_star = FALSE;
+                                       n->agg_distinct = FALSE;
+                                       $$ = (Node *) n;
+                               }
                /*
                 * These operators must be called out explicitly in order to make use
                 * of yacc/bison's automatic operator-precedence handling.  All other
@@ -5393,6 +5403,7 @@ TokenId:  ABSOLUTE                                                { $$ = "absolute"; }
                | AFTER                                                 { $$ = "after"; }
                | AGGREGATE                                             { $$ = "aggregate"; }
                | ALTER                                                 { $$ = "alter"; }
+               | AT                                                    { $$ = "at"; }
                | BACKWARD                                              { $$ = "backward"; }
                | BEFORE                                                { $$ = "before"; }
                | BEGIN_TRANS                                   { $$ = "begin"; }
index d8f32e39d02e6fc4a17375980cfb14902ddecc57..b03fc5e55c5f365cbbede000b6cb61c12b9dfeec 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.82 2000/11/05 22:50:20 vadim Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.83 2000/11/06 15:47:17 thomas Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -43,6 +43,7 @@ static ScanKeyword ScanKeywords[] = {
        {"any", ANY},
        {"as", AS},
        {"asc", ASC},
+       {"at", AT},
        {"backward", BACKWARD},
        {"before", BEFORE},
        {"begin", BEGIN_TRANS},