aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeHashjoin.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2003-01-27 20:51:54 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2003-01-27 20:51:54 +0000
commit70fba70430bd42b1a31c6d49646f9d1991eb8e7c (patch)
tree865c11bc1262e1fd48067f9b897abf2a50653ddf /src/backend/executor/nodeHashjoin.c
parentb2773d4099d2dbccc4d23165a093581090c49451 (diff)
downloadpostgresql-70fba70430bd42b1a31c6d49646f9d1991eb8e7c.tar.gz
postgresql-70fba70430bd42b1a31c6d49646f9d1991eb8e7c.zip
Upgrade cost estimation for joins, per discussion with Bradley Baetz.
Try to model the effect of rescanning input tuples in mergejoins; account for JOIN_IN short-circuiting where appropriate. Also, recognize that mergejoin and hashjoin clauses may now be more than single operator calls, so we have to charge appropriate execution costs.
Diffstat (limited to 'src/backend/executor/nodeHashjoin.c')
-rw-r--r--src/backend/executor/nodeHashjoin.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/backend/executor/nodeHashjoin.c b/src/backend/executor/nodeHashjoin.c
index d452d3865f5..3603fd9b680 100644
--- a/src/backend/executor/nodeHashjoin.c
+++ b/src/backend/executor/nodeHashjoin.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeHashjoin.c,v 1.47 2003/01/20 18:54:45 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeHashjoin.c,v 1.48 2003/01/27 20:51:48 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -253,6 +253,13 @@ ExecHashJoin(HashJoinState *node)
return result;
}
}
+
+ /* If we didn't return a tuple, may need to set NeedNewOuter */
+ if (node->js.jointype == JOIN_IN)
+ {
+ node->hj_NeedNewOuter = true;
+ break; /* out of loop over hash bucket */
+ }
}
}