|
11 | 11 | *
|
12 | 12 | *
|
13 | 13 | * IDENTIFICATION
|
14 |
| - * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.217 2001/01/20 17:37:52 tgl Exp $ |
| 14 | + * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.218 2001/01/23 22:39:08 tgl Exp $ |
15 | 15 | *
|
16 | 16 | * HISTORY
|
17 | 17 | * AUTHOR DATE MAJOR EVENT
|
@@ -383,16 +383,16 @@ static void doNegateFloat(Value *v);
|
383 | 383 | %nonassoc OVERLAPS
|
384 | 384 | %nonassoc BETWEEN
|
385 | 385 | %nonassoc IN
|
| 386 | +%left POSTFIXOP /* dummy for postfix Op rules */ |
386 | 387 | %left Op /* multi-character ops and user-defined operators */
|
387 | 388 | %nonassoc NOTNULL
|
388 | 389 | %nonassoc ISNULL
|
389 |
| -%nonassoc NULL_P |
390 |
| -%nonassoc IS |
| 390 | +%nonassoc IS NULL_P TRUE_P FALSE_P /* sets precedence for IS NULL, etc */ |
391 | 391 | %left '+' '-'
|
392 | 392 | %left '*' '/' '%'
|
393 | 393 | %left '^'
|
394 | 394 | /* Unary Operators */
|
395 |
| -%left AT |
| 395 | +%left AT ZONE /* sets precedence for AT TIME ZONE */ |
396 | 396 | %right UMINUS
|
397 | 397 | %left '.'
|
398 | 398 | %left '[' ']'
|
@@ -4355,7 +4355,7 @@ a_expr: c_expr
|
4355 | 4355 | { $$ = makeA_Expr(OP, $2, $1, $3); }
|
4356 | 4356 | | Op a_expr
|
4357 | 4357 | { $$ = makeA_Expr(OP, $1, NULL, $2); }
|
4358 |
| - | a_expr Op |
| 4358 | + | a_expr Op %prec POSTFIXOP |
4359 | 4359 | { $$ = makeA_Expr(OP, $2, $1, NULL); }
|
4360 | 4360 |
|
4361 | 4361 | | a_expr AND a_expr
|
@@ -4463,13 +4463,13 @@ a_expr: c_expr
|
4463 | 4463 | n->typename->typmod = -1;
|
4464 | 4464 | $$ = makeA_Expr(OP, "=", $1,(Node *)n);
|
4465 | 4465 | }
|
4466 |
| - | a_expr BETWEEN b_expr AND b_expr |
| 4466 | + | a_expr BETWEEN b_expr AND b_expr %prec BETWEEN |
4467 | 4467 | {
|
4468 | 4468 | $$ = makeA_Expr(AND, NULL,
|
4469 | 4469 | makeA_Expr(OP, ">=", $1, $3),
|
4470 | 4470 | makeA_Expr(OP, "<=", $1, $5));
|
4471 | 4471 | }
|
4472 |
| - | a_expr NOT BETWEEN b_expr AND b_expr |
| 4472 | + | a_expr NOT BETWEEN b_expr AND b_expr %prec BETWEEN |
4473 | 4473 | {
|
4474 | 4474 | $$ = makeA_Expr(OR, NULL,
|
4475 | 4475 | makeA_Expr(OP, "<", $1, $4),
|
@@ -4529,7 +4529,7 @@ a_expr: c_expr
|
4529 | 4529 | $$ = n;
|
4530 | 4530 | }
|
4531 | 4531 | }
|
4532 |
| - | a_expr all_Op sub_type select_with_parens |
| 4532 | + | a_expr all_Op sub_type select_with_parens %prec Op |
4533 | 4533 | {
|
4534 | 4534 | SubLink *n = makeNode(SubLink);
|
4535 | 4535 | n->lefthand = makeList1($1);
|
@@ -4591,7 +4591,7 @@ b_expr: c_expr
|
4591 | 4591 | { $$ = makeA_Expr(OP, $2, $1, $3); }
|
4592 | 4592 | | Op b_expr
|
4593 | 4593 | { $$ = makeA_Expr(OP, $1, NULL, $2); }
|
4594 |
| - | b_expr Op |
| 4594 | + | b_expr Op %prec POSTFIXOP |
4595 | 4595 | { $$ = makeA_Expr(OP, $2, $1, NULL); }
|
4596 | 4596 | ;
|
4597 | 4597 |
|
|
0 commit comments