|
11 | 11 | *
|
12 | 12 | *
|
13 | 13 | * IDENTIFICATION
|
14 |
| - * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.492 2005/06/08 21:15:28 tgl Exp $ |
| 14 | + * $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.493 2005/06/14 23:47:39 momjian Exp $ |
15 | 15 | *
|
16 | 16 | * HISTORY
|
17 | 17 | * AUTHOR DATE MAJOR EVENT
|
@@ -338,7 +338,7 @@ static void doNegateFloat(Value *v);
|
338 | 338 | /* ordinary key words in alphabetical order */
|
339 | 339 | %token <keyword> ABORT_P ABSOLUTE_P ACCESS ACTION ADD AFTER
|
340 | 340 | AGGREGATE ALL ALSO ALTER ANALYSE ANALYZE AND ANY ARRAY AS ASC
|
341 |
| - ASSERTION ASSIGNMENT AT AUTHORIZATION |
| 341 | + ASSERTION ASSIGNMENT ASYMMETRIC AT AUTHORIZATION |
342 | 342 |
|
343 | 343 | BACKWARD BEFORE BEGIN_P BETWEEN BIGINT BINARY BIT
|
344 | 344 | BOOLEAN_P BOTH BY
|
@@ -399,7 +399,8 @@ static void doNegateFloat(Value *v);
|
399 | 399 | SAVEPOINT SCHEMA SCROLL SECOND_P SECURITY SELECT SEQUENCE
|
400 | 400 | SERIALIZABLE SESSION SESSION_USER SET SETOF SHARE
|
401 | 401 | SHOW SIMILAR SIMPLE SMALLINT SOME STABLE START STATEMENT
|
402 |
| - STATISTICS STDIN STDOUT STORAGE STRICT_P SUBSTRING SYSID |
| 402 | + STATISTICS STDIN STDOUT STORAGE STRICT_P SUBSTRING SYMMETRIC |
| 403 | + SYSID |
403 | 404 |
|
404 | 405 | TABLE TABLESPACE TEMP TEMPLATE TEMPORARY THEN TIME TIMESTAMP
|
405 | 406 | TO TOAST TRAILING TRANSACTION TREAT TRIGGER TRIM TRUE_P
|
@@ -6333,18 +6334,41 @@ a_expr: c_expr { $$ = $1; }
|
6333 | 6334 | {
|
6334 | 6335 | $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "!=", $1, (Node *) $6);
|
6335 | 6336 | }
|
6336 |
| - | a_expr BETWEEN b_expr AND b_expr %prec BETWEEN |
| 6337 | + | a_expr BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN |
6337 | 6338 | {
|
6338 | 6339 | $$ = (Node *) makeA_Expr(AEXPR_AND, NIL,
|
6339 |
| - (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $3), |
6340 |
| - (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $5)); |
| 6340 | + (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $4), |
| 6341 | + (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $6)); |
6341 | 6342 | }
|
6342 |
| - | a_expr NOT BETWEEN b_expr AND b_expr %prec BETWEEN |
| 6343 | + | a_expr NOT BETWEEN opt_asymmetric b_expr AND b_expr %prec BETWEEN |
6343 | 6344 | {
|
6344 | 6345 | $$ = (Node *) makeA_Expr(AEXPR_OR, NIL,
|
6345 |
| - (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $4), |
6346 |
| - (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $6)); |
| 6346 | + (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $5), |
| 6347 | + (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $7)); |
6347 | 6348 | }
|
| 6349 | + |
| 6350 | + | a_expr BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN |
| 6351 | + { |
| 6352 | + $$ = (Node *) makeA_Expr(AEXPR_OR, NIL, |
| 6353 | + (Node *) makeA_Expr(AEXPR_AND, NIL, |
| 6354 | + (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $4), |
| 6355 | + (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $6)), |
| 6356 | + (Node *) makeA_Expr(AEXPR_AND, NIL, |
| 6357 | + (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $6), |
| 6358 | + (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $4))); |
| 6359 | + } |
| 6360 | + | a_expr NOT BETWEEN SYMMETRIC b_expr AND b_expr %prec BETWEEN |
| 6361 | + { |
| 6362 | + $$ = (Node *) makeA_Expr(AEXPR_AND, NIL, |
| 6363 | + (Node *) makeA_Expr(AEXPR_OR, NIL, |
| 6364 | + (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $5), |
| 6365 | + (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $7)), |
| 6366 | + (Node *) makeA_Expr(AEXPR_OR, NIL, |
| 6367 | + (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $7), |
| 6368 | + (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $5))); |
| 6369 | + } |
| 6370 | + |
| 6371 | + |
6348 | 6372 | | a_expr IN_P in_expr
|
6349 | 6373 | {
|
6350 | 6374 | /* in_expr returns a SubLink or a list of a_exprs */
|
@@ -6443,6 +6467,11 @@ a_expr: c_expr { $$ = $1; }
|
6443 | 6467 | }
|
6444 | 6468 | ;
|
6445 | 6469 |
|
| 6470 | +opt_asymmetric: ASYMMETRIC {} |
| 6471 | + | /*EMPTY*/ {} |
| 6472 | + ; |
| 6473 | + |
| 6474 | + |
6446 | 6475 | /*
|
6447 | 6476 | * Restricted expressions
|
6448 | 6477 | *
|
@@ -7721,6 +7750,7 @@ unreserved_keyword:
|
7721 | 7750 | | ALTER
|
7722 | 7751 | | ASSERTION
|
7723 | 7752 | | ASSIGNMENT
|
| 7753 | + | ASYMMETRIC |
7724 | 7754 | | AT
|
7725 | 7755 | | BACKWARD
|
7726 | 7756 | | BEFORE
|
@@ -7867,6 +7897,7 @@ unreserved_keyword:
|
7867 | 7897 | | STDIN
|
7868 | 7898 | | STDOUT
|
7869 | 7899 | | STORAGE
|
| 7900 | + | SYMMETRIC |
7870 | 7901 | | SYSID
|
7871 | 7902 | | STRICT_P
|
7872 | 7903 | | TABLESPACE
|
|
0 commit comments