From 18e9c7db5695bf5386d552f4c396110eeff2f568 Mon Sep 17 00:00:00 2001 From: test Date: Tue, 9 Jun 2026 00:19:46 +0200 Subject: [PATCH v2 4/6] fix estimate_num_groups --- src/backend/utils/adt/selfuncs.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c index d6efd07073a..5bd705c93ab 100644 --- a/src/backend/utils/adt/selfuncs.c +++ b/src/backend/utils/adt/selfuncs.c @@ -3915,7 +3915,10 @@ estimate_num_groups(PlannerInfo *root, List *groupExprs, double input_rows, if (varshere == NIL) { if (contain_volatile_functions(groupexpr)) + { + list_free(varinfos); return input_rows; + } continue; } @@ -4033,6 +4036,7 @@ estimate_num_groups(PlannerInfo *root, List *groupExprs, double input_rows, } /* we're done with this relation */ + list_free(relvarinfos); relvarinfos = NIL; } } @@ -4119,6 +4123,9 @@ estimate_num_groups(PlannerInfo *root, List *groupExprs, double input_rows, numdistinct *= reldistinct; } + list_free(varinfos); + list_free_deep(relvarinfos); + varinfos = newvarinfos; } while (varinfos != NIL); @@ -4134,6 +4141,8 @@ estimate_num_groups(PlannerInfo *root, List *groupExprs, double input_rows, if (numdistinct < 1.0) numdistinct = 1.0; + list_free(varinfos); + return numdistinct; } -- 2.54.0