aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/util/relnode.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2007-07-31 19:54:27 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2007-07-31 19:54:27 +0000
commitc14066aa7049bac14cadc18d0c48bcf6ea81ff52 (patch)
treee1643d93294f4b79c71b10c54c3eae79f8280b59 /src/backend/optimizer/util/relnode.c
parentfab6a867fd38cb4abe326a9cb68f924d093f3dcf (diff)
downloadpostgresql-c14066aa7049bac14cadc18d0c48bcf6ea81ff52.tar.gz
postgresql-c14066aa7049bac14cadc18d0c48bcf6ea81ff52.zip
Fix a bug in the original implementation of redundant-join-clause removal:
clauses in which one side or the other references both sides of the join cannot be removed as redundant, because that expression won't have been constrained below the join. Per report from Sergey Burladyan.
Diffstat (limited to 'src/backend/optimizer/util/relnode.c')
-rw-r--r--src/backend/optimizer/util/relnode.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c
index ea15e20f2ba..6ad2e82319b 100644
--- a/src/backend/optimizer/util/relnode.c
+++ b/src/backend/optimizer/util/relnode.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/relnode.c,v 1.52.4.1 2003/12/08 18:20:10 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/relnode.c,v 1.52.4.2 2007/07/31 19:54:27 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -466,7 +466,10 @@ build_joinrel_restrictlist(Query *root,
* previous clauses (see optimizer/README for discussion). We detect
* that case and omit the redundant clause from the result list.
*/
- result = remove_redundant_join_clauses(root, rlist, jointype);
+ result = remove_redundant_join_clauses(root, rlist,
+ outer_rel->relids,
+ inner_rel->relids,
+ jointype);
freeList(rlist);