From e7032368270b9ac58698e9249f766739b66c848a Mon Sep 17 00:00:00 2001 From: Pierre Forstmann Date: Sat, 18 Jul 2026 17:33:33 +0200 Subject: [PATCH] bug#19558: Fix user-defined prefix operators '|' and '->' --- src/backend/parser/gram.y | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index ff4e138..331da79 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -15873,6 +15873,10 @@ a_expr: c_expr { $$ = $1; } { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } | '-' a_expr %prec UMINUS { $$ = doNegate($2, @1); } + | '|' a_expr %prec UMINUS + { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "|", NULL , $2, @1); } + | RIGHT_ARROW a_expr %prec UMINUS + { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "->", NULL , $2, @1); } | a_expr '+' a_expr { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); } | a_expr '-' a_expr @@ -15902,6 +15906,7 @@ a_expr: c_expr { $$ = $1; } | 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 @@ -16355,6 +16360,10 @@ b_expr: c_expr { $$ = makeTypeCast($1, $3, @2); } | '+' b_expr %prec UMINUS { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); } + | '|' b_expr %prec UMINUS + { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "|", NULL, $2, @1); } + | RIGHT_ARROW b_expr %prec UMINUS + { $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "->", NULL, $2, @1); } | '-' b_expr %prec UMINUS { $$ = doNegate($2, @1); } | b_expr '+' b_expr -- 2.52.0