Add comment about why BETWEEN uses operator strings and not opclasses,
authorBruce Momjian <bruce@momjian.us>
Wed, 7 Jan 2009 22:54:45 +0000 (22:54 +0000)
committerBruce Momjian <bruce@momjian.us>
Wed, 7 Jan 2009 22:54:45 +0000 (22:54 +0000)
with URL pointing to email discussion.

src/backend/parser/gram.y

index 90d18c98f6f4523de5caa8f76708c8a29f65cb11..21b74983410a876b6296a5d6ebe1df3c595acc5b 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.651 2009/01/01 17:23:45 momjian Exp $
+ *       $PostgreSQL: pgsql/src/backend/parser/gram.y,v 2.652 2009/01/07 22:54:45 momjian Exp $
  *
  * HISTORY
  *       AUTHOR                        DATE                    MAJOR EVENT
@@ -8361,6 +8361,11 @@ a_expr:          c_expr                                                                  { $$ = $1; }
                                {
                                        $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2);
                                }
+                       /*
+                        *      Ideally we would not use hard-wired operators below but instead use
+                        *      opclasses.  However, mixed data types and other issues make this
+                        *      difficult:  http://archives.postgresql.org/pgsql-hackers/2008-08/msg01142.php
+                        */                     
                        | a_expr BETWEEN opt_asymmetric b_expr AND b_expr               %prec BETWEEN
                                {
                                        $$ = (Node *) makeA_Expr(AEXPR_AND, NIL,