From 1812d3b233e40d6e94e2105c3da4b1fca93c9385 Mon Sep 17 00:00:00 2001 From: Neil Conway Date: Sun, 25 Apr 2004 18:23:57 +0000 Subject: [PATCH] Remove the last traces of Joe Hellerstein's "xfunc" optimization. Patch from Alvaro Herrera. Also, removed lispsort.c, since it is no longer used. --- src/backend/lib/Makefile | 4 +- src/backend/lib/lispsort.c | 57 ------------------------- src/backend/optimizer/path/allpaths.c | 12 +----- src/backend/optimizer/plan/createplan.c | 15 +------ src/backend/optimizer/util/pathnode.c | 13 +++--- src/backend/optimizer/util/relnode.c | 4 +- src/backend/tcop/postgres.c | 42 +----------------- src/include/nodes/relation.h | 5 +-- 8 files changed, 14 insertions(+), 138 deletions(-) delete mode 100644 src/backend/lib/lispsort.c diff --git a/src/backend/lib/Makefile b/src/backend/lib/Makefile index 4b920b1234..4d8935ffb8 100644 --- a/src/backend/lib/Makefile +++ b/src/backend/lib/Makefile @@ -4,7 +4,7 @@ # Makefile for lib (miscellaneous stuff) # # IDENTIFICATION -# $PostgreSQL: pgsql/src/backend/lib/Makefile,v 1.18 2003/11/29 19:51:49 pgsql Exp $ +# $PostgreSQL: pgsql/src/backend/lib/Makefile,v 1.19 2004/04/25 18:23:56 neilc Exp $ # #------------------------------------------------------------------------- @@ -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 7de12b0c6d..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: pgsql/src/backend/lib/lispsort.c,v 1.20 2003/11/29 19:51:49 pgsql Exp $ - * - *------------------------------------------------------------------------- - */ - -#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 50d5006a96..5d92fc4c5d 100644 --- a/src/backend/optimizer/path/allpaths.c +++ b/src/backend/optimizer/path/allpaths.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/path/allpaths.c,v 1.112 2004/01/14 23:01:55 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/path/allpaths.c,v 1.113 2004/04/25 18:23:56 neilc Exp $ * *------------------------------------------------------------------------- */ @@ -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 5b52a63f02..1b4c9d4780 100644 --- a/src/backend/optimizer/plan/createplan.c +++ b/src/backend/optimizer/plan/createplan.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/plan/createplan.c,v 1.168 2004/02/29 17:36:05 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/plan/createplan.c,v 1.169 2004/04/25 18:23:56 neilc Exp $ * *------------------------------------------------------------------------- */ @@ -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 895a1329f8..619013a18d 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/util/pathnode.c,v 1.103 2004/03/29 19:58:04 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/util/pathnode.c,v 1.104 2004/04/25 18:23:56 neilc Exp $ * *------------------------------------------------------------------------- */ @@ -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 d5a5480c62..d6853ca819 100644 --- a/src/backend/optimizer/util/relnode.c +++ b/src/backend/optimizer/util/relnode.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/util/relnode.c,v 1.55 2004/02/17 00:52:53 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/util/relnode.c,v 1.56 2004/04/25 18:23:56 neilc Exp $ * *------------------------------------------------------------------------- */ @@ -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 1affe7d49b..f2ca110493 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.400 2004/04/19 17:42:58 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.401 2004/04/25 18:23:56 neilc Exp $ * * NOTES * this is the "main" module of the postgres backend and @@ -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 460679416f..87d9f5964e 100644 --- a/src/include/nodes/relation.h +++ b/src/include/nodes/relation.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/nodes/relation.h,v 1.93 2004/01/05 23:39:54 tgl Exp $ + * $PostgreSQL: pgsql/src/include/nodes/relation.h,v 1.94 2004/04/25 18:23:57 neilc Exp $ * *------------------------------------------------------------------------- */ @@ -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;