diff options
author | Neil Conway | 2004-04-25 18:23:57 +0000 |
---|---|---|
committer | Neil Conway | 2004-04-25 18:23:57 +0000 |
commit | 04f5211c7b53395c3245fca6b3b081e61ddde9a8 (patch) | |
tree | 209c17aa7898d133514e14781e35f4c6438d53c6 | |
parent | 8fb8b37670b62bf745dbcb5a31acd0fdb6f30a00 (diff) |
Remove the last traces of Joe Hellerstein's "xfunc" optimization. Patch
from Alvaro Herrera. Also, removed lispsort.c, since it is no longer
used.
-rw-r--r-- | src/backend/lib/Makefile | 2 | ||||
-rw-r--r-- | src/backend/lib/lispsort.c | 57 | ||||
-rw-r--r-- | src/backend/optimizer/path/allpaths.c | 10 | ||||
-rw-r--r-- | src/backend/optimizer/plan/createplan.c | 13 | ||||
-rw-r--r-- | src/backend/optimizer/util/pathnode.c | 11 | ||||
-rw-r--r-- | src/backend/optimizer/util/relnode.c | 2 | ||||
-rw-r--r-- | src/backend/tcop/postgres.c | 40 | ||||
-rw-r--r-- | src/include/nodes/relation.h | 3 |
8 files changed, 7 insertions, 131 deletions
diff --git a/src/backend/lib/Makefile b/src/backend/lib/Makefile index deddd7528c..f5dcc7c42a 100644 --- a/src/backend/lib/Makefile +++ b/src/backend/lib/Makefile @@ -12,7 +12,7 @@ subdir = src/backend/lib top_builddir = ../../.. include $(top_builddir)/src/Makefile.global -OBJS = dllist.o lispsort.o stringinfo.o +OBJS = dllist.o stringinfo.o all: SUBSYS.o diff --git a/src/backend/lib/lispsort.c b/src/backend/lib/lispsort.c deleted file mode 100644 index 0a6ca9ab1b..0000000000 --- a/src/backend/lib/lispsort.c +++ /dev/null @@ -1,57 +0,0 @@ -/*------------------------------------------------------------------------- - * - * lispsort.c - * - * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * - * IDENTIFICATION - * $PostgreSQL$ - * - *------------------------------------------------------------------------- - */ - -#include "postgres.h" - - -#ifdef NOT_USED -/* -** lisp_qsort: Takes a lisp list as input, copies it into an array of lisp -** nodes which it sorts via qsort() with the comparison function -** as passed into lisp_qsort(), and returns a new list with -** the nodes sorted. The old list is *not* freed or modified (?) -*/ -List * -lisp_qsort(List *the_list, /* the list to be sorted */ - int (*compare) ()) /* function to compare two nodes */ -{ - int i; - size_t num; - List **nodearray; - List *tmp, - *output; - - /* find size of list */ - num = length(the_list); - if (num < 2) - return copyObject(the_list); - - /* copy elements of the list into an array */ - nodearray = (List **) palloc(num * sizeof(List *)); - - for (tmp = the_list, i = 0; tmp != NIL; tmp = lnext(tmp), i++) - nodearray[i] = copyObject(lfirst(tmp)); - - /* sort the array */ - pg_qsort(nodearray, num, sizeof(List *), compare); - - /* lcons together the array elements */ - output = NIL; - for (i = num - 1; i >= 0; i--) - output = lcons(nodearray[i], output); - - return output; -} - -#endif diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c index c172d4730a..de870d1ce0 100644 --- a/src/backend/optimizer/path/allpaths.c +++ b/src/backend/optimizer/path/allpaths.c @@ -531,16 +531,6 @@ make_one_rel_by_joins(Query *root, int levels_needed, List *initial_rels) { rel = (RelOptInfo *) lfirst(x); -#ifdef NOT_USED - - /* - * * for each expensive predicate in each path in each - * distinct rel, * consider doing pullup -- JMH - */ - if (XfuncMode != XFUNC_NOPULL && XfuncMode != XFUNC_OFF) - xfunc_trypullup(rel); -#endif - /* Find and save the cheapest paths for this rel */ set_cheapest(rel); diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c index 0ca166a35d..94f610c1f5 100644 --- a/src/backend/optimizer/plan/createplan.c +++ b/src/backend/optimizer/plan/createplan.c @@ -167,19 +167,6 @@ create_plan(Query *root, Path *best_path) break; } -#ifdef NOT_USED /* fix xfunc */ - /* sort clauses by cost/(1-selectivity) -- JMH 2/26/92 */ - if (XfuncMode != XFUNC_OFF) - { - set_qpqual((Plan) plan, - lisp_qsort(get_qpqual((Plan) plan), - xfunc_clause_compare)); - if (XfuncMode != XFUNC_NOR) - /* sort the disjuncts within each clause by cost -- JMH 3/4/92 */ - xfunc_disjunct_sort(plan->qpqual); - } -#endif - return plan; } diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index 8659006b32..fce1f83271 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -243,9 +243,9 @@ set_cheapest(RelOptInfo *parent_rel) * A path is worthy if it has either a better sort order (better pathkeys) * or cheaper cost (on either dimension) than any of the existing old paths. * - * Unless parent_rel->pruneable is false, we also remove from the rel's - * pathlist any old paths that are dominated by new_path --- that is, - * new_path is both cheaper and at least as well ordered. + * We also remove from the rel's pathlist any old paths that are dominated + * by new_path --- that is, new_path is both cheaper and at least as well + * ordered. * * The pathlist is kept sorted by TOTAL_COST metric, with cheaper paths * at the front. No code depends on that for correctness; it's simply @@ -342,10 +342,9 @@ add_path(RelOptInfo *parent_rel, Path *new_path) } /* - * Remove current element from pathlist if dominated by new, - * unless xfunc told us not to remove any paths. + * Remove current element from pathlist if dominated by new. */ - if (remove_old && parent_rel->pruneable) + if (remove_old) { List *p1_next = lnext(p1); diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c index dc6d2a4f0d..6e0386567b 100644 --- a/src/backend/optimizer/util/relnode.c +++ b/src/backend/optimizer/util/relnode.c @@ -135,7 +135,6 @@ make_base_rel(Query *root, int relid) rel->cheapest_startup_path = NULL; rel->cheapest_total_path = NULL; rel->cheapest_unique_path = NULL; - rel->pruneable = true; rel->relid = relid; rel->rtekind = rte->rtekind; /* min_attr, max_attr, attr_needed, attr_widths are set below */ @@ -291,7 +290,6 @@ build_join_rel(Query *root, joinrel->cheapest_startup_path = NULL; joinrel->cheapest_total_path = NULL; joinrel->cheapest_unique_path = NULL; - joinrel->pruneable = true; joinrel->relid = 0; /* indicates not a baserel */ joinrel->rtekind = RTE_JOIN; joinrel->min_attr = 0; diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 85585741c7..442d598325 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -89,11 +89,6 @@ bool Log_disconnections = false; LogStmtLevel log_statement = LOGSTMT_NONE; -/* - * Flags for expensive function optimization -- JMH 3/9/92 - */ -int XfuncMode = 0; - /* GUC variable for maximum stack depth (measured in kilobytes) */ int max_stack_depth = 2048; @@ -2223,7 +2218,7 @@ PostgresMain(int argc, char *argv[], const char *username) ctx = debug_context = PGC_POSTMASTER; gucsource = PGC_S_ARGV; /* initial switches came from command line */ - while ((flag = getopt(argc, argv, "A:B:c:D:d:Eef:FiNOPo:p:S:st:v:W:x:-:")) != -1) + while ((flag = getopt(argc, argv, "A:B:c:D:d:Eef:FiNOPo:p:S:st:v:W:-:")) != -1) switch (flag) { case 'A': @@ -2459,39 +2454,6 @@ PostgresMain(int argc, char *argv[], const char *username) pg_usleep(atoi(optarg)*1000000L); break; - case 'x': -#ifdef NOT_USED /* planner/xfunc.h */ - - /* - * control joey hellerstein's expensive function - * optimization - */ - if (XfuncMode != 0) - { - elog(WARNING, "only one -x flag is allowed"); - errs++; - break; - } - if (strcmp(optarg, "off") == 0) - XfuncMode = XFUNC_OFF; - else if (strcmp(optarg, "nor") == 0) - XfuncMode = XFUNC_NOR; - else if (strcmp(optarg, "nopull") == 0) - XfuncMode = XFUNC_NOPULL; - else if (strcmp(optarg, "nopm") == 0) - XfuncMode = XFUNC_NOPM; - else if (strcmp(optarg, "pullall") == 0) - XfuncMode = XFUNC_PULLALL; - else if (strcmp(optarg, "wait") == 0) - XfuncMode = XFUNC_WAIT; - else - { - elog(WARNING, "use -x {off,nor,nopull,nopm,pullall,wait}"); - errs++; - } -#endif - break; - case 'c': case '-': { diff --git a/src/include/nodes/relation.h b/src/include/nodes/relation.h index 2084356da9..3316966598 100644 --- a/src/include/nodes/relation.h +++ b/src/include/nodes/relation.h @@ -99,8 +99,6 @@ typedef struct QualCost * (regardless of its ordering) * cheapest_unique_path - for caching cheapest path to produce unique * (no duplicates) output from relation - * pruneable - flag to let the planner know whether it can prune the - * pathlist of this RelOptInfo or not. * * If the relation is a base relation it will have these fields set: * @@ -193,7 +191,6 @@ typedef struct RelOptInfo struct Path *cheapest_startup_path; struct Path *cheapest_total_path; struct Path *cheapest_unique_path; - bool pruneable; /* information about a base rel (not set for join rels!) */ Index relid; |