mirror of
https://github.com/postgres/postgres.git
synced 2025-11-26 23:43:30 +03:00
Assorted preparatory refactoring for partition-wise join.
Instead of duplicating the logic to search for a matching ParamPathInfo in multiple places, factor it out into a separate function. Pass only the relevant bits of the PartitionKey to partition_bounds_equal instead of the whole thing, because partition-wise join will want to call this without having a PartitionKey available. Adjust allow_star_schema_join and calc_nestloop_required_outer to take relevant Relids rather than the entire Path, because partition-wise join will want to call it with the top-parent relids to determine whether a child join is allowable. Ashutosh Bapat. Review and testing of the larger patch set of which this is a part by Amit Langote, Rajkumar Raghuwanshi, Rafia Sabih, Thomas Munro, Dilip Kumar, and me. Discussion: http://postgr.es/m/CA+TgmobQK80vtXjAsPZWWXd7c8u13G86gmuLupN+uUJjA+i4nA@mail.gmail.com
This commit is contained in:
@@ -112,7 +112,10 @@ extern ForeignPath *create_foreignscan_path(PlannerInfo *root, RelOptInfo *rel,
|
||||
Path *fdw_outerpath,
|
||||
List *fdw_private);
|
||||
|
||||
extern Relids calc_nestloop_required_outer(Path *outer_path, Path *inner_path);
|
||||
extern Relids calc_nestloop_required_outer(Relids outerrelids,
|
||||
Relids outer_paramrels,
|
||||
Relids innerrelids,
|
||||
Relids inner_paramrels);
|
||||
extern Relids calc_non_nestloop_required_outer(Path *outer_path, Path *inner_path);
|
||||
|
||||
extern NestPath *create_nestloop_path(PlannerInfo *root,
|
||||
@@ -285,5 +288,7 @@ extern ParamPathInfo *get_joinrel_parampathinfo(PlannerInfo *root,
|
||||
List **restrict_clauses);
|
||||
extern ParamPathInfo *get_appendrel_parampathinfo(RelOptInfo *appendrel,
|
||||
Relids required_outer);
|
||||
extern ParamPathInfo *find_param_path_info(RelOptInfo *rel,
|
||||
Relids required_outer);
|
||||
|
||||
#endif /* PATHNODE_H */
|
||||
|
||||
Reference in New Issue
Block a user