From 8481b482ab23fee014d3a0277a275749990f19a9 Mon Sep 17 00:00:00 2001
From: Pierre Forstmann <pierre.forstmann@gmail.com>
Date: Sat, 18 Jul 2026 17:53:55 +0200
Subject: [PATCH 2/2] bug#19558: Fix user-defined prefix operators '|' and
 '->': fixed %prec

---
 src/backend/parser/gram.y | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 331da79..071bbf2 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -15873,9 +15873,9 @@ a_expr:		c_expr									{ $$ = $1; }
 				{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); }
 			| '-' a_expr					%prec UMINUS
 				{ $$ = doNegate($2, @1); }
-			| '|' a_expr                  %prec UMINUS 
+			| '|' a_expr                  %prec Op 
 				 { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "|", NULL , $2, @1); }
-			| RIGHT_ARROW a_expr                  %prec UMINUS 
+			| RIGHT_ARROW a_expr                  %prec Op 
 				 { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "->", NULL , $2, @1); }
 			| a_expr '+' a_expr
 				{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); }
@@ -15905,8 +15905,6 @@ a_expr:		c_expr									{ $$ = $1; }
 				{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "->", $1, $3, @2); }
 			| a_expr '|' a_expr
 				{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "|", $1, $3, @2); }
-
-
 			| a_expr qual_Op a_expr				%prec Op
 				{ $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); }
 			| qual_Op a_expr					%prec Op
-- 
2.52.0

