diff --git a/src/backend/optimizer/path/joinutils.c b/src/backend/optimizer/path/joinutils.c index 4292bc4af2..d57d0d6d13 100644 --- a/src/backend/optimizer/path/joinutils.c +++ b/src/backend/optimizer/path/joinutils.c @@ -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; diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index 02360d74f0..28ab457374 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -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;