optimizer cleanup
authorBruce Momjian
Thu, 11 Feb 1999 05:29:08 +0000 (05:29 +0000)
committerBruce Momjian
Thu, 11 Feb 1999 05:29:08 +0000 (05:29 +0000)
src/backend/optimizer/path/joinutils.c
src/backend/optimizer/util/pathnode.c

index 4292bc4af24a1313a0dc6325016e26e928d42193..d57d0d6d13a07a2dfb97964b807cff0f6e455341 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/joinutils.c,v 1.16 1999/02/10 21:02:39 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/joinutils.c,v 1.17 1999/02/11 05:29:07 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -373,8 +373,7 @@ new_join_pathkey(List *subkeys,
        if (tlist_key)
        {
            if (!member(tlist_key, matched_subkeys))
-               newly_considered_subkeys = lcons(tlist_key,
-                                                matched_subkeys);
+               newly_considered_subkeys = lcons(tlist_key, matched_subkeys);
        }
        else
            newly_considered_subkeys = matched_subkeys;
index 02360d74f0880f17e2f5ca732190f648187a4107..28ab4573741a664861f792d6e4c2ebb8a66fdca5 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.24 1999/02/11 04:08:43 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.25 1999/02/11 05:29:08 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -195,14 +195,19 @@ better_path(Path *new_path, List *unique_paths, bool *is_new)
                 * more expensive and replace unordered path with ordered
                 * path if it is not more expensive.
                 */
+                
+                   /* same keys, and new is cheaper, use it */
                if ((longer_key == 0 && new_path->path_cost <  path->path_cost) ||
-                   (longer_key == 1 && new_path->path_cost <= path->path_cost) ||
-                   (longer_key == 2 && new_path->path_cost >= path->path_cost))
+                   /* new is longer, and cheaper, use it */
+                   (longer_key == 1 && new_path->path_cost <= path->path_cost))
                {
                    *is_new = false;
                    return new_path;
                }
-               else
+                       /* same keys, new is more expensive, stop */
+               else if ((longer_key == 0 && new_path->path_cost >= path->path_cost) ||
+                       /* old is longer, and less expensive, stop */
+                        (longer_key == 2 && new_path->path_cost >= path->path_cost))
                {
                    *is_new = false;
                    return NULL;