Re: patch for BETWEEN [ASYMMETRIC|SYMMETRIC] - Mailing list pgsql-patches
From | Bruce Momjian |
---|---|
Subject | Re: patch for BETWEEN [ASYMMETRIC|SYMMETRIC] |
Date | |
Msg-id | 200105071847.f47IlQH20283@candle.pha.pa.us Whole thread Raw |
In response to | patch for BETWEEN [ASYMMETRIC|SYMMETRIC] ("Robert B. Easter" <reaster@comptechnews.com>) |
Responses |
Re: patch for BETWEEN [ASYMMETRIC|SYMMETRIC]
|
List | pgsql-patches |
Can someone comment on where we left this? > This was a trivial thing to implement in the parser (unless I overlooked > something!). Please review it and let me know if I missed something. This > adds SQL-1999 BETWEEN [ASYMMETRIC|SYMMETRIC] language. Hopefully it's not > considered just SQL bloat. ;) --------------------------------------------------------------------------- *** gram.y Wed Jan 10 20:45:40 2001 --- gram.y.modi Wed Jan 10 20:44:38 2001 *************** *** 321,332 **** WHEN, WHERE, WITH, WORK, YEAR_P, ZONE /* Keywords (in SQL3 reserved words) */ ! %token CHAIN, CHARACTERISTICS, DEFERRABLE, DEFERRED, IMMEDIATE, INITIALLY, INOUT, OFF, OUT, PATH_P, PENDANT, RESTRICT, TRIGGER, WITHOUT --- 321,334 ---- WHEN, WHERE, WITH, WORK, YEAR_P, ZONE /* Keywords (in SQL3 reserved words) */ ! %token ASYMMETRIC, ! CHAIN, CHARACTERISTICS, DEFERRABLE, DEFERRED, IMMEDIATE, INITIALLY, INOUT, OFF, OUT, PATH_P, PENDANT, RESTRICT, + SYMMETRIC, TRIGGER, WITHOUT *************** *** 4452,4462 **** --- 4454,4496 ---- makeA_Expr(OP, ">=", $1, $3), makeA_Expr(OP, "<=", $1, $5)); } + | a_expr BETWEEN ASYMMETRIC b_expr AND b_expr + { + $$ = makeA_Expr(AND, NULL, + makeA_Expr(OP, ">=", $1, $4), + makeA_Expr(OP, "<=", $1, $6)); + } + | a_expr BETWEEN SYMMETRIC b_expr AND b_expr + { + $$ = makeA_Expr(OR, NULL, + makeA_Expr(AND, NULL, + makeA_Expr(OP, ">=", $1, $4), + makeA_Expr(OP, "<=", $1, $6)), + makeA_Expr(AND, NULL, + makeA_Expr(OP, ">=", $1, $6), + makeA_Expr(OP, "<=", $1, $4)) ); + } | a_expr NOT BETWEEN b_expr AND b_expr { $$ = makeA_Expr(OR, NULL, makeA_Expr(OP, "<", $1, $4), makeA_Expr(OP, ">", $1, $6)); + } + | a_expr NOT BETWEEN ASYMMETRIC b_expr AND b_expr + { + $$ = makeA_Expr(OR, NULL, + makeA_Expr(OP, "<", $1, $5), + makeA_Expr(OP, ">", $1, $7)); + } + | a_expr NOT BETWEEN SYMMETRIC b_expr AND b_expr + { + $$ = makeA_Expr(AND, NULL, + makeA_Expr(OR, NULL, + makeA_Expr(OP, "<", $1, $5), + makeA_Expr(OP, ">", $1, $7)), + makeA_Expr(OR, NULL, + makeA_Expr(OP, "<", $1, $7), + makeA_Expr(OP, ">", $1, $5)) ); } | a_expr IN '(' in_expr ')' { -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
pgsql-patches by date: