From 11073bee5cc573967627cc114698bc5412e4f919 Mon Sep 17 00:00:00 2001 From: "Vadim B. Mikheev" Date: Thu, 5 Jun 1997 09:33:52 +0000 Subject: [PATCH] allpaths.c:find_join_paths(): compute_rel_size() shouldn't be called for join-relations. Sizes already computed by prune_rel_paths():compute_joinrel_size(). joinrels.c: < if ( _use_right_sided_plans_ ) --- > if ( _use_right_sided_plans_ && > length (outer_rel->relids) > 1 ) - r_plans are useful when outer_rel is join-relation... It decreases the size of search space... --- src/backend/optimizer/path/allpaths.c | 4 +++- src/backend/optimizer/path/joinrels.c | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c index 6469e7ecb6..506bab263a 100644 --- a/src/backend/optimizer/path/allpaths.c +++ b/src/backend/optimizer/path/allpaths.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.8 1997/06/02 11:14:40 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.9 1997/06/05 09:33:50 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -216,7 +216,9 @@ find_join_paths(Query *root, List *outer_rels, int levels_left) foreach(x, new_rels) { rel = (Rel*)lfirst(x); +#if 0 /* compute_joinrel_size already called by prune_rel_paths */ rel->size = compute_rel_size(rel); +#endif rel->width = compute_rel_width(rel); /*#define OPTIMIZER_DEBUG*/ diff --git a/src/backend/optimizer/path/joinrels.c b/src/backend/optimizer/path/joinrels.c index a640988b50..00f8a04a05 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.3 1997/05/20 10:37:26 vadim Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.4 1997/06/05 09:33:52 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -110,7 +110,8 @@ find_clause_joins(Query *root, Rel *outer_rel, List *joininfo_list) get_base_rel(root, lfirsti(other_rels)), joininfo); /* how about right-sided plan ? */ - if ( _use_right_sided_plans_ ) + if ( _use_right_sided_plans_ && + length (outer_rel->relids) > 1 ) { if (rel != NULL) join_list = lappend(join_list, rel);