Change precedence for boolean operators to match expected behavior.
authorThomas G. Lockhart
Thu, 1 Jan 1998 05:44:54 +0000 (05:44 +0000)
committerThomas G. Lockhart
Thu, 1 Jan 1998 05:44:54 +0000 (05:44 +0000)
Change NOTICE/NOTICE/NOTICE/WARN elog messages to a single message
 with a few newline/tab breaks embedded in the string. Much cleaner I hope.

src/backend/parser/gram.y
src/backend/parser/parse_oper.c

index 7454c1c2bf5a7a031d3c6ce568c135ac30243d65..c64c8d41d25dfd2366973210c4fe6fc750ae1e5f 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.81 1997/12/24 06:06:26 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.82 1998/01/01 05:44:53 thomas Exp $
  *
  * HISTORY
  *   AUTHOR            DATE            MAJOR EVENT
@@ -306,10 +306,11 @@ Oid   param_type(int t); /* used in parse_expr.c */
 %left      AND
 %right     NOT
 %right     '='
+%nonassoc  '<' '>'
 %nonassoc  LIKE
 %nonassoc  BETWEEN
 %nonassoc  IN
-%nonassoc  Op
+%nonassoc  Op              /* multi-character ops and user-defined operators */
 %nonassoc  NOTNULL
 %nonassoc  ISNULL
 %nonassoc  IS
@@ -319,7 +320,6 @@ Oid param_type(int t); /* used in parse_expr.c */
 /* Unary Operators */
 %right     ':'
 %left      ';'             /* end of statement or natural log */
-%nonassoc  '<' '>'
 %right     UMINUS
 %left      '.'
 %left      '[' ']'
index ddc97a45239f07265fa03a10848eaea2cc1f1b9c..4fbe3f1446f0ed13b74b533cc7b8d4663a210ec6 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_oper.c,v 1.3 1997/11/26 03:42:45 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_oper.c,v 1.4 1998/01/01 05:44:54 thomas Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -587,11 +587,17 @@ op_error(char *op, Oid arg1, Oid arg2)
        elog(WARN, "right hand side of operator %s has an unknown type, probably a bad attribute name", op);
    }
 
+#if FALSE
    elog(NOTICE, "there is no operator %s for types %s and %s",
         op, typeTypeName(tp1), typeTypeName(tp2));
    elog(NOTICE, "You will either have to retype this query using an");
    elog(NOTICE, "explicit cast, or you will have to define the operator");
    elog(WARN, "%s for %s and %s using CREATE OPERATOR",
         op, typeTypeName(tp1), typeTypeName(tp2));
+#endif
+   elog(WARN, "There is no operator '%s' for types '%s' and '%s'"
+       "\n\tYou will either have to retype this query using an explicit cast,"
+       "\n\tor you will have to define the operator using CREATE OPERATOR",
+       op, typeTypeName(tp1), typeTypeName(tp2));
 }