summaryrefslogtreecommitdiff
path: root/src/backend/optimizer
diff options
context:
space:
mode:
authorTom Lane2000-02-06 03:27:35 +0000
committerTom Lane2000-02-06 03:27:35 +0000
commit81fc1d5edb36773fe28f3b5dc5daf5eb7d468a61 (patch)
tree14073bed5eb4955815511924daa365e63c1c86b1 /src/backend/optimizer
parent418b270020de20086042d7595dfe7d941b038716 (diff)
Rename same() to sameseti() to have a slightly less generic name. Move
nonoverlap_sets() and is_subset() to list.c, where they should have lived to begin with, and rename to nonoverlap_setsi and is_subseti since they only work on integer lists.
Diffstat (limited to 'src/backend/optimizer')
-rw-r--r--src/backend/optimizer/path/joinpath.c4
-rw-r--r--src/backend/optimizer/path/joinrels.c44
-rw-r--r--src/backend/optimizer/path/prune.c4
-rw-r--r--src/backend/optimizer/util/joininfo.c4
-rw-r--r--src/backend/optimizer/util/relnode.c18
5 files changed, 17 insertions, 57 deletions
diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c
index 1d63d9a5642..371dd2b7b56 100644
--- a/src/backend/optimizer/path/joinpath.c
+++ b/src/backend/optimizer/path/joinpath.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.49 2000/01/26 05:56:34 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.50 2000/02/06 03:27:32 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -181,7 +181,7 @@ best_innerjoin(List *join_paths, Relids outer_relids)
* outer_relids in order to use this inner path, because those
* rels are used in the index join quals of this inner path.
*/
- if (is_subset(((IndexPath *) path)->joinrelids, outer_relids) &&
+ if (is_subseti(((IndexPath *) path)->joinrelids, outer_relids) &&
(cheapest == NULL ||
path_is_cheaper(path, cheapest)))
cheapest = path;
diff --git a/src/backend/optimizer/path/joinrels.c b/src/backend/optimizer/path/joinrels.c
index 801127434a3..5fc673e5dba 100644
--- a/src/backend/optimizer/path/joinrels.c
+++ b/src/backend/optimizer/path/joinrels.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.41 2000/01/26 05:56:34 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.42 2000/02/06 03:27:32 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -144,8 +144,8 @@ make_rels_by_clause_joins(Query *root, RelOptInfo *old_rel,
RelOptInfo *join_rel = lfirst(r);
Assert(length(join_rel->relids) > 1);
- if (is_subset(unjoined_relids, join_rel->relids) &&
- nonoverlap_sets(old_rel->relids, join_rel->relids))
+ if (is_subseti(unjoined_relids, join_rel->relids) &&
+ nonoverlap_setsi(old_rel->relids, join_rel->relids))
{
joined_rel = make_join_rel(old_rel, join_rel);
join_list = lappend(join_list, joined_rel);
@@ -175,7 +175,7 @@ make_rels_by_clauseless_joins(RelOptInfo *old_rel, List *inner_rels)
{
RelOptInfo *inner_rel = (RelOptInfo *) lfirst(i);
- if (nonoverlap_sets(inner_rel->relids, old_rel->relids))
+ if (nonoverlap_setsi(inner_rel->relids, old_rel->relids))
{
join_list = lappend(join_list,
make_join_rel(old_rel, inner_rel));
@@ -404,39 +404,3 @@ get_cheapest_complete_rel(List *join_rel_list)
return final_rel;
}
-
-/*
- * Subset-inclusion tests on integer lists.
- *
- * XXX these probably ought to be in nodes/list.c or some such place.
- */
-
-bool
-nonoverlap_sets(List *s1, List *s2)
-{
- List *x;
-
- foreach(x, s1)
- {
- int e = lfirsti(x);
-
- if (intMember(e, s2))
- return false;
- }
- return true;
-}
-
-bool
-is_subset(List *s1, List *s2)
-{
- List *x;
-
- foreach(x, s1)
- {
- int e = lfirsti(x);
-
- if (!intMember(e, s2))
- return false;
- }
- return true;
-}
diff --git a/src/backend/optimizer/path/prune.c b/src/backend/optimizer/path/prune.c
index 2554f8af1e5..f2dc6d90dfc 100644
--- a/src/backend/optimizer/path/prune.c
+++ b/src/backend/optimizer/path/prune.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/prune.c,v 1.45 2000/01/26 05:56:34 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/prune.c,v 1.46 2000/02/06 03:27:32 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -67,7 +67,7 @@ merge_rel_with_same_relids(RelOptInfo *rel, List *unmerged_rels)
{
RelOptInfo *unmerged_rel = (RelOptInfo *) lfirst(i);
- if (same(rel->relids, unmerged_rel->relids))
+ if (sameseti(rel->relids, unmerged_rel->relids))
{
/*
* These rels are for the same set of base relations,
diff --git a/src/backend/optimizer/util/joininfo.c b/src/backend/optimizer/util/joininfo.c
index 86837ebf403..d29fcc2f480 100644
--- a/src/backend/optimizer/util/joininfo.c
+++ b/src/backend/optimizer/util/joininfo.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/joininfo.c,v 1.25 2000/01/26 05:56:40 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/joininfo.c,v 1.26 2000/02/06 03:27:33 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -41,7 +41,7 @@ joininfo_member(List *join_relids, List *joininfo_list)
{
JoinInfo *joininfo = (JoinInfo *) lfirst(i);
- if (same(join_relids, joininfo->unjoined_relids))
+ if (sameseti(join_relids, joininfo->unjoined_relids))
return joininfo;
}
return NULL;
diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c
index 4d62f7b45aa..23ee8ba8111 100644
--- a/src/backend/optimizer/util/relnode.c
+++ b/src/backend/optimizer/util/relnode.c
@@ -8,13 +8,12 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/relnode.c,v 1.21 2000/01/26 05:56:40 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/relnode.c,v 1.22 2000/02/06 03:27:33 tgl Exp $
*
*-------------------------------------------------------------------------
*/
#include "postgres.h"
-
#include "optimizer/internal.h"
#include "optimizer/pathnode.h"
#include "optimizer/plancat.h"
@@ -97,17 +96,14 @@ get_join_rel(Query *root, Relids relid)
RelOptInfo *
rel_member(Relids relids, List *rels)
{
- if (relids != NIL && rels != NIL)
- {
- List *temp;
+ List *temp;
- foreach(temp, rels)
- {
- RelOptInfo *rel = (RelOptInfo *) lfirst(temp);
+ foreach(temp, rels)
+ {
+ RelOptInfo *rel = (RelOptInfo *) lfirst(temp);
- if (same(rel->relids, relids))
- return rel;
- }
+ if (sameseti(rel->relids, relids))
+ return rel;
}
return NULL;
}