*
* src/backend/optimizer/path/allpaths.c
*
- * static functions:
- * set_plain_rel_pathlist()
- * add_paths_to_append_rel()
- * try_partitionwise_join()
- *
* public functions:
* standard_join_search(): This funcion is not static. The reason for
* including this function is make_rels_by_clause_joins. In order to
* change the behavior of make_join_rel, which is called under this
* function.
*
+ * static functions:
+ * set_plain_rel_pathlist()
+ * set_append_rel_pathlist()
+ * create_plain_partial_paths()
+ *
* src/backend/optimizer/path/joinrels.c
*
* public functions:
* join_is_legal()
* has_join_restriction()
* restriction_is_constant_false()
- * update_child_rel_info()
* build_child_join_sjinfo()
* get_matching_part_pairs()
* compute_partition_bounds()
- *
+ * try_partitionwise_join()
*
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*/
static void populate_joinrel_with_paths(PlannerInfo *root, RelOptInfo *rel1,
- RelOptInfo *rel2, RelOptInfo *joinrel,
- SpecialJoinInfo *sjinfo, List *restrictlist);
+ RelOptInfo *rel2, RelOptInfo *joinrel,
+ SpecialJoinInfo *sjinfo, List *restrictlist);
/*
* set_plain_rel_pathlist
return rel;
}
+
/*
* create_plain_partial_paths
* Build partial access paths for parallel scan of a plain relation
return false;
}
+
/*
* restriction_is_constant_false --- is a restrictlist just FALSE?
*
return false;
}
+
/*
* Construct the SpecialJoinInfo for a child-join by translating
* SpecialJoinInfo for the join between parents. left_relids and right_relids
return sjinfo;
}
+
/*
* get_matching_part_pairs
* Generate pairs of partitions to be joined from inputs
* modifications.
*
* src/backend/optimizer/path/joinrels.c
+ *
+ * This file contains the following functions from corresponding files.
+ *
+ * static functions:
* make_join_rel()
+ * populate_joinrel_with_paths()
*
* Portions Copyright (c) 2013-2020, NIPPON TELEGRAPH AND TELEPHONE CORPORATION
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
return result;
}
+
/*
* make_join_rel
* Find or create a join RelOptInfo that represents the join of
/*
* If the rows_hint's target relids is not a subset of both of
* component rels and is a subset of this joinrel, ths hint's
- * targets spread over both component rels. This means that
+ * targets spread over both component rels. This menas that
* this hint has been never applied so far and this joinrel is
* the first (and only) chance to fire in current join tree.
* Only the multiplication hint has the cumulative nature so we
{
/*
* If a hint just for me is found, no other adjust method is
- * useless, but this cannot be more than twice becuase this joinrel
+ * useles, but this cannot be more than twice becuase this joinrel
* is already adjusted by this hint.
*/
if (justforme->base.state == HINT_STATE_NOTUSED)
return joinrel;
}
+
/*
* populate_joinrel_with_paths
* Add paths to the given joinrel for given pair of joining relations. The