postgres.git / summary / log / commit / refs

commit    e8a82ddeaf69b077125cf9303df809234461bd37
Author:   Andrew Dunstan <andrew@dunslane.net>
Date:     Sat May 09 18:57:09 2026 +0000

    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 <dbryan.green@gmail.com>
    Reviewed-by: Himanshu Upadhyaya <upadhyaya.himanshu@gmail.com>
    Reviewed-by: Shihao Zhong <zhong950419@gmail.com>
    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; } [parent: a5447a2deaca]