diff options
author | Amit Langote <amitlan@postgresql.org> | 2024-03-25 19:43:29 +0900 |
---|---|---|
committer | Amit Langote <amitlan@postgresql.org> | 2024-03-25 19:45:27 +0900 |
commit | 0f7863afef67e462574fe5af6317e26a2f2d47fb (patch) | |
tree | 436b3055c4b298ff3ff9f156b565121d04e24b2b /src | |
parent | cc0e7ebd304a24815c0531000a4c3693878cd96c (diff) | |
download | postgresql-0f7863afef67e462574fe5af6317e26a2f2d47fb.tar.gz postgresql-0f7863afef67e462574fe5af6317e26a2f2d47fb.zip |
Code review for 6190d828cd2
* Fix the comment of init_dummy_sjinfo() to remove references to
non-existing parameters 'rel1' and 'rel2'.
* Adjust consider_new_or_clause() to call init_dummy_sjinfo() to make
up a SpecialJoinInfo for inner joins like other code sites that
were adjusted in 6190d828cd2 to do so.
Author: Richard Guo <guofenglinux@gmail.com>
Reported-by: Richard Guo <guofenglinux@gmail.com>
Discussion: https://postgr.es/m/CAExHW5tHqEf3ASVqvFFcghYGPfpy7o3xnvhHwBGbJFMRH8KjNw@mail.gmail.com
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/optimizer/path/joinrels.c | 5 | ||||
-rw-r--r-- | src/backend/optimizer/util/orclauses.c | 23 |
2 files changed, 8 insertions, 20 deletions
diff --git a/src/backend/optimizer/path/joinrels.c b/src/backend/optimizer/path/joinrels.c index 17ef825a345..f3a9412d18a 100644 --- a/src/backend/optimizer/path/joinrels.c +++ b/src/backend/optimizer/path/joinrels.c @@ -656,8 +656,9 @@ join_is_legal(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2, /* * init_dummy_sjinfo - * Populate the given SpecialJoinInfo for a plain inner join between rel1 - * and rel2 + * Populate the given SpecialJoinInfo for a plain inner join between the + * left and right relations specified by left_relids and right_relids + * respectively. * * Normally, an inner join does not have a SpecialJoinInfo node associated with * it. But some functions involved in join planning require one containing at diff --git a/src/backend/optimizer/util/orclauses.c b/src/backend/optimizer/util/orclauses.c index d911c6547d9..5e2bf26ec43 100644 --- a/src/backend/optimizer/util/orclauses.c +++ b/src/backend/optimizer/util/orclauses.c @@ -19,6 +19,7 @@ #include "nodes/nodeFuncs.h" #include "optimizer/optimizer.h" #include "optimizer/orclauses.h" +#include "optimizer/paths.h" #include "optimizer/restrictinfo.h" @@ -325,24 +326,10 @@ consider_new_or_clause(PlannerInfo *root, RelOptInfo *rel, * Make up a SpecialJoinInfo for JOIN_INNER semantics. (Compare * approx_tuple_count() in costsize.c.) */ - sjinfo.type = T_SpecialJoinInfo; - sjinfo.min_lefthand = bms_difference(join_or_rinfo->clause_relids, - rel->relids); - sjinfo.min_righthand = rel->relids; - sjinfo.syn_lefthand = sjinfo.min_lefthand; - sjinfo.syn_righthand = sjinfo.min_righthand; - sjinfo.jointype = JOIN_INNER; - sjinfo.ojrelid = 0; - sjinfo.commute_above_l = NULL; - sjinfo.commute_above_r = NULL; - sjinfo.commute_below_l = NULL; - sjinfo.commute_below_r = NULL; - /* we don't bother trying to make the remaining fields valid */ - sjinfo.lhs_strict = false; - sjinfo.semi_can_btree = false; - sjinfo.semi_can_hash = false; - sjinfo.semi_operators = NIL; - sjinfo.semi_rhs_exprs = NIL; + init_dummy_sjinfo(&sjinfo, + bms_difference(join_or_rinfo->clause_relids, + rel->relids), + rel->relids); /* Compute inner-join size */ orig_selec = clause_selectivity(root, (Node *) join_or_rinfo, |