Don't call simplify_aggref with a NULL PlannerInfo master github/master
authorDavid Rowley <drowley@postgresql.org>
Sat, 29 Nov 2025 23:55:34 +0000 (12:55 +1300)
committerDavid Rowley <drowley@postgresql.org>
Sat, 29 Nov 2025 23:55:34 +0000 (12:55 +1300)
42473b3b3 added prosupport infrastructure to allow simplification of
Aggrefs during constant-folding.  In some cases the context->root that's
given to eval_const_expressions_mutator() can be NULL.  42473b3b3 failed
to take that into account, which could result in a crash.

To fix, add a check and only call simplify_aggref() when the PlannerInfo
is set.

Author: David Rowley <dgrowleyml@gmail.com>
Reported-by: Birler, Altan <altan.birler@tum.de>
Discussion: https://postgr.es/m/132d4da23b844d5ab9e352d34096eab5@tum.de

src/backend/optimizer/util/clauses.c

index 9975185934b5684325ff6b0b943283210535bb9d..bda4c4eb29226805f95a128d19568aa21cead931 100644 (file)
@@ -2638,7 +2638,9 @@ eval_const_expressions_mutator(Node *node,
            }
        case T_Aggref:
            node = ece_generic_processing(node);
-           return simplify_aggref((Aggref *) node, context);
+           if (context->root != NULL)
+               return simplify_aggref((Aggref *) node, context);
+           return node;
        case T_OpExpr:
            {
                OpExpr     *expr = (OpExpr *) node;