From fcabd0753ce68424971db367abc4c52845ff7dde Mon Sep 17 00:00:00 2001
From: "Thomas G. Lockhart" <lockhart@fourpalms.org>
Date: Thu, 1 Jan 1998 05:44:54 +0000
Subject: [PATCH] Change precedence for boolean operators to match expected
 behavior. 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       | 6 +++---
 src/backend/parser/parse_oper.c | 8 +++++++-
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 7454c1c2bf5..c64c8d41d25 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -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		'[' ']'
diff --git a/src/backend/parser/parse_oper.c b/src/backend/parser/parse_oper.c
index ddc97a45239..4fbe3f1446f 100644
--- a/src/backend/parser/parse_oper.c
+++ b/src/backend/parser/parse_oper.c
@@ -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));
 }
 
-- 
GitLab