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]  (Tom Lane <tgl@sss.pgh.pa.us>)
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:

Previous
From: Bruce Momjian
Date:
Subject: Re: [GENERAL] Strange notices, should I worry?
Next
From: Bruce Momjian
Date:
Subject: Re: [GENERAL] Strange notices, should I worry?