aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeHashjoin.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/executor/nodeHashjoin.c')
-rw-r--r--src/backend/executor/nodeHashjoin.c40
1 files changed, 4 insertions, 36 deletions
diff --git a/src/backend/executor/nodeHashjoin.c b/src/backend/executor/nodeHashjoin.c
index 8484a287e73..ec37558c127 100644
--- a/src/backend/executor/nodeHashjoin.c
+++ b/src/backend/executor/nodeHashjoin.c
@@ -600,14 +600,8 @@ ExecInitHashJoin(HashJoin *node, EState *estate, int eflags)
HashJoinState *hjstate;
Plan *outerNode;
Hash *hashNode;
- List *lclauses;
- List *rclauses;
- List *rhclauses;
- List *hoperators;
- List *hcollations;
TupleDesc outerDesc,
innerDesc;
- ListCell *l;
const TupleTableSlotOps *ops;
/* check for unsupported flags */
@@ -730,36 +724,10 @@ ExecInitHashJoin(HashJoin *node, EState *estate, int eflags)
hjstate->hj_CurSkewBucketNo = INVALID_SKEW_BUCKET_NO;
hjstate->hj_CurTuple = NULL;
- /*
- * Deconstruct the hash clauses into outer and inner argument values, so
- * that we can evaluate those subexpressions separately. Also make a list
- * of the hash operator OIDs, in preparation for looking up the hash
- * functions to use.
- */
- lclauses = NIL;
- rclauses = NIL;
- rhclauses = NIL;
- hoperators = NIL;
- hcollations = NIL;
- foreach(l, node->hashclauses)
- {
- OpExpr *hclause = lfirst_node(OpExpr, l);
-
- lclauses = lappend(lclauses, ExecInitExpr(linitial(hclause->args),
- (PlanState *) hjstate));
- rclauses = lappend(rclauses, ExecInitExpr(lsecond(hclause->args),
- (PlanState *) hjstate));
- rhclauses = lappend(rhclauses, ExecInitExpr(lsecond(hclause->args),
- innerPlanState(hjstate)));
- hoperators = lappend_oid(hoperators, hclause->opno);
- hcollations = lappend_oid(hcollations, hclause->inputcollid);
- }
- hjstate->hj_OuterHashKeys = lclauses;
- hjstate->hj_InnerHashKeys = rclauses;
- hjstate->hj_HashOperators = hoperators;
- hjstate->hj_Collations = hcollations;
- /* child Hash node needs to evaluate inner hash keys, too */
- ((HashState *) innerPlanState(hjstate))->hashkeys = rhclauses;
+ hjstate->hj_OuterHashKeys = ExecInitExprList(node->hashkeys,
+ (PlanState *) hjstate);
+ hjstate->hj_HashOperators = node->hashoperators;
+ hjstate->hj_Collations = node->hashcollations;
hjstate->hj_JoinState = HJ_BUILD_HASHTABLE;
hjstate->hj_MatchedOuter = false;