diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c index f8e02b9..9d06fb2 100644 --- a/src/backend/optimizer/path/joinpath.c +++ b/src/backend/optimizer/path/joinpath.c @@ -223,12 +223,7 @@ add_paths_to_joinrel(PlannerInfo *root, jointype, &extra); /* - * 6. Consider gathering partial paths. - */ - generate_gather_paths(root, joinrel); - - /* - * 7. Finally, give extensions a chance to manipulate the path list. + * 6. Finally, give extensions a chance to manipulate the path list. */ if (set_join_pathlist_hook) set_join_pathlist_hook(root, joinrel, outerrel, innerrel, diff --git a/src/backend/optimizer/path/joinrels.c b/src/backend/optimizer/path/joinrels.c index 01d4fea..1b72b46 100644 --- a/src/backend/optimizer/path/joinrels.c +++ b/src/backend/optimizer/path/joinrels.c @@ -869,6 +869,12 @@ make_join_rel(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2) break; } + /* + * Consider gathering partial paths. This has to be done after + * generating all the partial paths for a joinrel. + */ + generate_gather_paths(root, joinrel); + bms_free(joinrelids); return joinrel;