diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 36690cf1e68df47a1781fc1bc93dcbfc7d70a414..dfa97e797319b975379e6c87b16b8afea18c0d46 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.217 2001/01/20 17:37:52 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.218 2001/01/23 22:39:08 tgl Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -383,16 +383,16 @@ static void doNegateFloat(Value *v); %nonassoc OVERLAPS %nonassoc BETWEEN %nonassoc IN +%left POSTFIXOP /* dummy for postfix Op rules */ %left Op /* multi-character ops and user-defined operators */ %nonassoc NOTNULL %nonassoc ISNULL -%nonassoc NULL_P -%nonassoc IS +%nonassoc IS NULL_P TRUE_P FALSE_P /* sets precedence for IS NULL, etc */ %left '+' '-' %left '*' '/' '%' %left '^' /* Unary Operators */ -%left AT +%left AT ZONE /* sets precedence for AT TIME ZONE */ %right UMINUS %left '.' %left '[' ']' @@ -4355,7 +4355,7 @@ a_expr: c_expr { $$ = makeA_Expr(OP, $2, $1, $3); } | Op a_expr { $$ = makeA_Expr(OP, $1, NULL, $2); } - | a_expr Op + | a_expr Op %prec POSTFIXOP { $$ = makeA_Expr(OP, $2, $1, NULL); } | a_expr AND a_expr @@ -4463,13 +4463,13 @@ a_expr: c_expr n->typename->typmod = -1; $$ = makeA_Expr(OP, "=", $1,(Node *)n); } - | a_expr BETWEEN b_expr AND b_expr + | a_expr BETWEEN b_expr AND b_expr %prec BETWEEN { $$ = makeA_Expr(AND, NULL, makeA_Expr(OP, ">=", $1, $3), makeA_Expr(OP, "<=", $1, $5)); } - | a_expr NOT BETWEEN b_expr AND b_expr + | a_expr NOT BETWEEN b_expr AND b_expr %prec BETWEEN { $$ = makeA_Expr(OR, NULL, makeA_Expr(OP, "<", $1, $4), @@ -4529,7 +4529,7 @@ a_expr: c_expr $$ = n; } } - | a_expr all_Op sub_type select_with_parens + | a_expr all_Op sub_type select_with_parens %prec Op { SubLink *n = makeNode(SubLink); n->lefthand = makeList1($1); @@ -4591,7 +4591,7 @@ b_expr: c_expr { $$ = makeA_Expr(OP, $2, $1, $3); } | Op b_expr { $$ = makeA_Expr(OP, $1, NULL, $2); } - | b_expr Op + | b_expr Op %prec POSTFIXOP { $$ = makeA_Expr(OP, $2, $1, NULL); } ;