aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAmit Langote <amitlan@postgresql.org>2024-03-25 19:43:29 +0900
committerAmit Langote <amitlan@postgresql.org>2024-03-25 19:45:27 +0900
commit0f7863afef67e462574fe5af6317e26a2f2d47fb (patch)
tree436b3055c4b298ff3ff9f156b565121d04e24b2b /src
parentcc0e7ebd304a24815c0531000a4c3693878cd96c (diff)
downloadpostgresql-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.c5
-rw-r--r--src/backend/optimizer/util/orclauses.c23
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,