aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/path/joinrels.c
diff options
context:
space:
mode:
authorVadim B. Mikheev <vadim4o@yahoo.com>1997-02-20 02:54:09 +0000
committerVadim B. Mikheev <vadim4o@yahoo.com>1997-02-20 02:54:09 +0000
commit4de2f24895315e90db17d15c3e07f87df265e301 (patch)
treec22eb069e72537dde7f0f3cf848d7e44344fe2fa /src/backend/optimizer/path/joinrels.c
parent6eb05251854b15b073357b3e30ebcf4f182af1a8 (diff)
downloadpostgresql-4de2f24895315e90db17d15c3e07f87df265e301.tar.gz
postgresql-4de2f24895315e90db17d15c3e07f87df265e301.zip
Fix for queries with 3 or more relations participating in
one clause.
Diffstat (limited to 'src/backend/optimizer/path/joinrels.c')
-rw-r--r--src/backend/optimizer/path/joinrels.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/backend/optimizer/path/joinrels.c b/src/backend/optimizer/path/joinrels.c
index b26e3364f93..2632fc39514 100644
--- a/src/backend/optimizer/path/joinrels.c
+++ b/src/backend/optimizer/path/joinrels.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.1.1.1 1996/07/09 06:21:36 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.2 1997/02/20 02:54:09 vadim Exp $
*
*-------------------------------------------------------------------------
*/
@@ -297,10 +297,18 @@ new_joininfo_list(List *joininfo_list, List *join_relids)
List *xjoininfo = NIL;
foreach (xjoininfo, joininfo_list) {
+ List *or;
JInfo *joininfo = (JInfo*)lfirst(xjoininfo);
new_otherrels = joininfo->otherrels;
- if (nonoverlap_sets(new_otherrels,join_relids)) {
+ foreach (or, new_otherrels)
+ {
+ if ( intMember (lfirsti(or), join_relids) )
+ new_otherrels = lremove ((void*)lfirst(or), new_otherrels);
+ }
+ joininfo->otherrels = new_otherrels;
+ if ( new_otherrels != NIL )
+ {
other_joininfo = joininfo_member(new_otherrels,
current_joininfo_list);
if(other_joininfo) {