1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-27 23:21:58 +03:00

Final optimizer cleanups.

This commit is contained in:
Bruce Momjian
1999-02-22 05:26:58 +00:00
parent 47dd11bdd0
commit 1ed5cbbfd8
16 changed files with 173 additions and 162 deletions

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.31 1999/02/21 01:55:02 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.32 1999/02/22 05:26:20 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -104,7 +104,8 @@ update_rels_pathlist_for_joins(Query *root, List *joinrels)
lfirsti(innerrel->relids));
/* need to flatten the relids list */
joinrel->relids = intAppend(outerrelids, innerrelids);
joinrel->relids = nconc(listCopy(outerrelids),
listCopy(innerrelids));
/*
* 1. Consider mergejoin paths where both relations must be
@ -213,11 +214,11 @@ sort_inner_and_outer(RelOptInfo *joinrel,
{
xmergeinfo = (MergeInfo *) lfirst(i);
outerkeys = extract_path_keys(xmergeinfo->jmethod.jmkeys,
outerkeys = make_pathkeys_from_joinkeys(xmergeinfo->jmethod.jmkeys,
outerrel->targetlist,
OUTER);
innerkeys = extract_path_keys(xmergeinfo->jmethod.jmkeys,
innerkeys = make_pathkeys_from_joinkeys(xmergeinfo->jmethod.jmkeys,
innerrel->targetlist,
INNER);
@ -352,7 +353,7 @@ match_unsorted_outer(RelOptInfo *joinrel,
innerrel->width, false))));
if (!path_is_cheaper_than_sort)
{
varkeys = extract_path_keys(matchedJoinKeys,
varkeys = make_pathkeys_from_joinkeys(matchedJoinKeys,
innerrel->targetlist,
INNER);
}
@ -473,7 +474,7 @@ match_unsorted_inner(RelOptInfo *joinrel,
if (temp2)
{
List *outerkeys = extract_path_keys(matchedJoinKeys,
List *outerkeys = make_pathkeys_from_joinkeys(matchedJoinKeys,
outerrel->targetlist,
OUTER);
List *merge_pathkeys = new_join_pathkeys(outerkeys,
@ -551,10 +552,12 @@ hash_inner_and_outer(RelOptInfo *joinrel,
foreach(i, hashinfo_list)
{
xhashinfo = (HashInfo *) lfirst(i);
outerkeys = extract_path_keys(((JoinMethod *) xhashinfo)->jmkeys,
outerkeys = make_pathkeys_from_joinkeys(
((JoinMethod *) xhashinfo)->jmkeys,
outerrel->targetlist,
OUTER);
innerkeys = extract_path_keys(((JoinMethod *) xhashinfo)->jmkeys,
innerkeys = make_pathkeys_from_joinkeys(
((JoinMethod *) xhashinfo)->jmkeys,
innerrel->targetlist,
INNER);
hash_pathkeys = new_join_pathkeys(outerkeys,