From e8a82ddeaf69b077125cf9303df809234461bd37 Mon Sep 17 00:00:00 2001 From: Andrew Dunstan Date: Sat, 9 May 2026 14:57:09 -0400 Subject: [PATCH] Fire create_upper_paths_hook for UPPERREL_PARTIAL_GROUP_AGG create_partial_grouping_paths() called the FDW callback GetForeignUpperPaths for UPPERREL_PARTIAL_GROUP_AGG, but never the general-purpose create_upper_paths_hook that non-FDW extensions rely on. create_partial_distinct_paths() already fires both for UPPERREL_PARTIAL_DISTINCT. Add the missing call right next to GetForeignUpperPaths, so an extension can add partial-aggregate paths here too, before the caller gathers them and builds a Finalize Aggregate on top. Reviewed-by: Bryan Green Reviewed-by: Himanshu Upadhyaya Reviewed-by: Shihao Zhong Discussion: https://postgr.es/m/6fc72a7d-9f52-4a72-9adf-1912da255605@dunslane.net --- src/backend/optimizer/plan/planner.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index 55a35aa3397..9458efab480 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -7976,6 +7976,12 @@ create_partial_grouping_paths(PlannerInfo *root, extra); } + /* Let extensions possibly add some more partial paths */ + if (create_upper_paths_hook) + (*create_upper_paths_hook) (root, UPPERREL_PARTIAL_GROUP_AGG, + input_rel, partially_grouped_rel, + extra); + return partially_grouped_rel; }