Define the right-hand input of AT TIME ZONE as a full a_expr instead of
authorTom Lane
Sat, 23 Apr 2005 17:22:16 +0000 (17:22 +0000)
committerTom Lane
Sat, 23 Apr 2005 17:22:16 +0000 (17:22 +0000)
c_expr.  Perhaps the restriction was once needed to avoid bison errors,
but it seems to work just fine now --- and even generates a slightly
smaller state machine.  This change allows examples like
SELECT '13:45'::timetz AT TIME ZONE '-07:00'::interval;
to work without parentheses around the right-hand input.

src/backend/parser/gram.y

index c33a7e657384410262563d15af7bf99bd2e77a10..260a2e1b455efb3edd5f728bd10c9b3a50ed55b0 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.487 2005/04/07 01:51:38 neilc Exp $
+ *   $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.488 2005/04/23 17:22:16 tgl Exp $
  *
  * HISTORY
  *   AUTHOR            DATE            MAJOR EVENT
@@ -6070,7 +6070,7 @@ opt_interval:
 a_expr:        c_expr                                  { $$ = $1; }
            | a_expr TYPECAST Typename
                    { $$ = makeTypeCast($1, $3); }
-           | a_expr AT TIME ZONE c_expr
+           | a_expr AT TIME ZONE a_expr
                {
                    FuncCall *n = makeNode(FuncCall);
                    n->funcname = SystemFuncName("timezone");