]> granicus.if.org Git - postgresql/commitdiff
Remove long-dead code.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 15 Feb 2000 23:12:26 +0000 (23:12 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 15 Feb 2000 23:12:26 +0000 (23:12 +0000)
src/backend/optimizer/geqo/minspantree.c [deleted file]

diff --git a/src/backend/optimizer/geqo/minspantree.c b/src/backend/optimizer/geqo/minspantree.c
deleted file mode 100644 (file)
index a582681..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-/*------------------------------------------------------------------------
-*
-* minspantree.c
-*       routine to sort a join graph which is including cycles
-*
- * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
-* Portions Copyright (c) 1994, Regents of the University of California
-*
-*
-* IDENTIFICATION
-*       $Header: /cvsroot/pgsql/src/backend/optimizer/geqo/Attic/minspantree.c,v 1.16 2000/01/26 05:56:33 momjian Exp $
-*
-*-------------------------------------------------------------------------
-*/
-
-#ifdef HAVE_VALUES_H
-#include <values.h>
-#endif
-
-#include "postgres.h"
-
-
-#include "nodes/pg_list.h"
-#include "nodes/primnodes.h"
-#include "nodes/relation.h"
-#include "optimizer/cost.h"
-#include "optimizer/geqo/geqo.h"
-#include "optimizer/geqo/geqo_gene.h"
-
-/*
- * minspantree
- *              The function minspantree computes the minimum spanning tree
- *             for a given number of nodes and a given distance function.
- *             For each pair of nodes found to be connected, a given
- *             function is called. Nodes are denoted by the integer numbers
- *             1 .. number_of_joins, where number_of_joins is the number of nodes.
-*/
-
-void
-minspantree(Query *root, List *join_rels, RelOptInfo *garel)
-{
-       int                     number_of_rels = length(root->base_rel_list);
-       int                     number_of_joins = length(join_rels);
-       int                *connectto;
-
-       /* connectto[i] = 0, if node i is already connected  */
-       /* to the tree, otherwise connectto[i] is the node       */
-       /* nearest to i, which is already connected.       */
-
-       Cost       *disttoconnect;      /* disttoconnect[i]: distance between i
-                                                                * and connectto[i] */
-
-       Cost            dist,                   /* temporary */
-                               mindist;                /* minimal distance between connected and
-                                                                * unconnected node */
-
-       Cost            mstlength = 0.0;/* the total length of the minimum
-                                                                * spanning tree */
-
-       int                     count;
-       int                     n,                              /* newly attached node */
-                               nextn,                  /* next node to be attached */
-                               tempn;
-
-       int                     i,
-                               id1,
-                               id2;
-       List       *r = NIL;
-       RelOptInfo *joinrel = NULL;
-       RelOptInfo **tmprel_array;
-
-
-       /* allocate memory for matrix tmprel_array[x][y] */
-       tmprel_array = (RelOptInfo **) palloc((number_of_rels + 1) * sizeof(RelOptInfo *));
-       for (i = 0; i <= number_of_rels; i++)
-               (tmprel_array[i] = (RelOptInfo *) palloc((number_of_rels + 1) * sizeof(RelOptInfo)));
-
-       /* read relations of join-relations into tmprel_array */
-
-       foreach(r, join_rels)
-       {
-               joinrel = (RelOptInfo *) lfirst(r);
-               id1 = (int) lfirst(joinrel->relids);
-               id2 = (int) lsecond(joinrel->relids);
-
-               if (id1 > id2)
-                       tmprel_array[id2][id1] = *(RelOptInfo *) joinrel;
-               else
-               {
-                       tmprel_array[id1][id2] = *(RelOptInfo *) joinrel;       /* ever reached? */
-               }
-       }
-
-       /* Trivial special cases handled first */
-       /* garel is global in "tsp.h" */
-
-       if (number_of_joins <= 2)
-       {
-               i = 1;
-               foreach(r, join_rels)
-               {
-                       garel[i] = *(RelOptInfo *) lfirst(r);
-                       i++;
-               }
-       }
-
-
-       else if (number_of_joins == 3)
-       {
-               RelOptInfo *rel12 = (RelOptInfo *) &tmprel_array[1][2];
-               RelOptInfo *rel13 = (RelOptInfo *) &tmprel_array[1][3];
-               RelOptInfo *rel23 = (RelOptInfo *) &tmprel_array[2][3];
-
-               if (rel12->cheapestpath->path_cost > rel13->cheapestpath->path_cost)
-               {
-                       garel[1] = tmprel_array[1][3];
-                       if (rel12->cheapestpath->path_cost > rel23->cheapestpath->path_cost)
-                               garel[2] = tmprel_array[2][3];
-                       else
-                               garel[2] = tmprel_array[1][2];
-               }
-               else
-               {
-                       garel[1] = tmprel_array[1][2];
-                       if (rel13->cheapestpath->path_cost > rel23->cheapestpath->path_cost)
-                               garel[2] = tmprel_array[2][3];
-                       else
-                               garel[2] = tmprel_array[1][3];
-               }
-       }
-
-
-       /* now the general case */
-       else
-       {
-               connectto = (int *) palloc((number_of_rels + 1) * sizeof(int));
-               disttoconnect = (Cost *) palloc((number_of_rels + 1) * sizeof(Cost));
-
-               nextn = 2;
-               for (tempn = 2; tempn <= number_of_rels; tempn++)
-               {
-                       connectto[tempn] = 1;
-                       disttoconnect[tempn] = (Cost) MAXFLOAT;
-               }
-
-               joinrel = NULL;
-               n = 1;
-               i = 1;
-               for (count = 2; count <= number_of_rels; count++)
-               {
-                       connectto[n] = 0;
-                       mindist = (Cost) MAXFLOAT;
-                       for (tempn = 2; tempn <= number_of_rels; tempn++)
-                       {
-                               if (connectto[tempn] != 0)
-                               {
-                                       if (n > tempn)
-                                               joinrel = (RelOptInfo *) &tmprel_array[tempn][n];
-                                       else
-                                               joinrel = (RelOptInfo *) &tmprel_array[n][tempn];
-                                       dist = joinrel->cheapestpath->path_cost;
-
-                                       if (dist < disttoconnect[tempn])
-                                       {
-                                               disttoconnect[tempn] = dist;
-                                               connectto[tempn] = n;
-                                       }
-                                       if (disttoconnect[tempn] < mindist)
-                                       {
-                                               mindist = disttoconnect[tempn];
-                                               nextn = tempn;
-                                       }
-                               }
-                       }
-                       n = nextn;
-                       if (n > connectto[n])
-                               garel[i] = tmprel_array[connectto[n]][n];
-                       else
-                               garel[i] = tmprel_array[n][connectto[n]];
-                       i++;
-               }
-
-               pfree(connectto);
-               pfree(disttoconnect);
-
-       }
-
-       for (i = 0; i <= number_of_rels; i++)
-               pfree(tmprel_array[i]);
-       pfree(tmprel_array);
-}