From 8c1f606de02ff7aa8799046abc067949b76d4046 Mon Sep 17 00:00:00 2001 From: Maksim Milyutin Date: Fri, 11 Apr 2025 15:43:42 +0300 Subject: [PATCH v1 1/2] Simplify COALESCE with single argument --- src/backend/optimizer/util/clauses.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c index 26a3e050086..c15a3a41cb6 100644 --- a/src/backend/optimizer/util/clauses.c +++ b/src/backend/optimizer/util/clauses.c @@ -3333,6 +3333,13 @@ eval_const_expressions_mutator(Node *node, -1, coalesceexpr->coalescecollid); + /* + * COALESCE with single valued argument looks like identity + * function so that it's converged to its single argument + */ + if (list_length(newargs) == 1) + return (Node *) linitial(newargs); + newcoalesce = makeNode(CoalesceExpr); newcoalesce->coalescetype = coalesceexpr->coalescetype; newcoalesce->coalescecollid = coalesceexpr->coalescecollid; -- 2.43.0