Minor code cleanup in optimizer.
This commit is contained in:
parent
f2ed835baf
commit
fecb2b0024
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/clausesel.c,v 1.18 1999/02/15 01:06:57 tgl Exp $
|
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/clausesel.c,v 1.19 1999/05/16 19:45:37 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -53,7 +53,7 @@ set_clause_selectivities(List *restrictinfo_list, Cost new_selectivity)
|
|||||||
{
|
{
|
||||||
clausenode = (RestrictInfo *) lfirst(temp);
|
clausenode = (RestrictInfo *) lfirst(temp);
|
||||||
cost_clause = clausenode->selectivity;
|
cost_clause = clausenode->selectivity;
|
||||||
if (FLOAT_IS_ZERO(cost_clause) || new_selectivity < cost_clause)
|
if (cost_clause <= 0 || new_selectivity < cost_clause)
|
||||||
clausenode->selectivity = new_selectivity;
|
clausenode->selectivity = new_selectivity;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -129,7 +129,7 @@ set_rest_selec(Query *root, List *restrictinfo_list)
|
|||||||
* Check to see if the selectivity of this clause or any 'or'
|
* Check to see if the selectivity of this clause or any 'or'
|
||||||
* subclauses (if any) haven't been set yet.
|
* subclauses (if any) haven't been set yet.
|
||||||
*/
|
*/
|
||||||
if (valid_or_clause(clausenode) || FLOAT_IS_ZERO(cost_clause))
|
if (cost_clause <= 0 || valid_or_clause(clausenode))
|
||||||
{
|
{
|
||||||
clausenode->selectivity = compute_clause_selec(root,
|
clausenode->selectivity = compute_clause_selec(root,
|
||||||
(Node *) clausenode->clause,
|
(Node *) clausenode->clause,
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.34 1999/05/01 19:47:42 tgl Exp $
|
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.35 1999/05/16 19:45:37 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -418,29 +418,21 @@ match_unsorted_inner(RelOptInfo *joinrel,
|
|||||||
List *innerpath_list,
|
List *innerpath_list,
|
||||||
List *mergeinfo_list)
|
List *mergeinfo_list)
|
||||||
{
|
{
|
||||||
Path *innerpath = (Path *) NULL;
|
|
||||||
List *mp_list = NIL;
|
List *mp_list = NIL;
|
||||||
PathOrder *innerpath_ordering = NULL;
|
List *i;
|
||||||
Cost temp1 = 0.0;
|
|
||||||
bool temp2 = false;
|
|
||||||
List *i = NIL;
|
|
||||||
|
|
||||||
foreach(i, innerpath_list)
|
foreach(i, innerpath_list)
|
||||||
{
|
{
|
||||||
|
Path *innerpath = (Path *) lfirst(i);
|
||||||
|
PathOrder *innerpath_ordering = innerpath->pathorder;
|
||||||
MergeInfo *xmergeinfo = (MergeInfo *) NULL;
|
MergeInfo *xmergeinfo = (MergeInfo *) NULL;
|
||||||
List *clauses = NIL;
|
List *clauses = NIL;
|
||||||
List *matchedJoinKeys = NIL;
|
List *matchedJoinKeys = NIL;
|
||||||
List *matchedJoinClauses = NIL;
|
List *matchedJoinClauses = NIL;
|
||||||
|
|
||||||
innerpath = (Path *) lfirst(i);
|
|
||||||
|
|
||||||
innerpath_ordering = innerpath->pathorder;
|
|
||||||
|
|
||||||
if (innerpath_ordering)
|
if (innerpath_ordering)
|
||||||
{
|
|
||||||
xmergeinfo = match_order_mergeinfo(innerpath_ordering,
|
xmergeinfo = match_order_mergeinfo(innerpath_ordering,
|
||||||
mergeinfo_list);
|
mergeinfo_list);
|
||||||
}
|
|
||||||
|
|
||||||
if (xmergeinfo)
|
if (xmergeinfo)
|
||||||
clauses = ((JoinMethod *) xmergeinfo)->clauses;
|
clauses = ((JoinMethod *) xmergeinfo)->clauses;
|
||||||
@ -463,13 +455,13 @@ match_unsorted_inner(RelOptInfo *joinrel,
|
|||||||
*/
|
*/
|
||||||
if (clauses && matchedJoinKeys)
|
if (clauses && matchedJoinKeys)
|
||||||
{
|
{
|
||||||
|
Cost temp1;
|
||||||
|
|
||||||
temp1 = outerrel->cheapestpath->path_cost +
|
temp1 = outerrel->cheapestpath->path_cost +
|
||||||
cost_sort(matchedJoinKeys, outerrel->size, outerrel->width);
|
cost_sort(matchedJoinKeys, outerrel->size, outerrel->width);
|
||||||
|
|
||||||
temp2 = (bool) (FLOAT_IS_ZERO(innerpath->outerjoincost)
|
if (innerpath->outerjoincost <= 0 /* unset? */
|
||||||
|| (innerpath->outerjoincost > temp1));
|
|| innerpath->outerjoincost > temp1)
|
||||||
|
|
||||||
if (temp2)
|
|
||||||
{
|
{
|
||||||
List *outerkeys = make_pathkeys_from_joinkeys(matchedJoinKeys,
|
List *outerkeys = make_pathkeys_from_joinkeys(matchedJoinKeys,
|
||||||
outerrel->targetlist,
|
outerrel->targetlist,
|
||||||
@ -494,8 +486,8 @@ match_unsorted_inner(RelOptInfo *joinrel,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return mp_list;
|
|
||||||
|
|
||||||
|
return mp_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: internal.h,v 1.18 1999/03/07 12:00:38 momjian Exp $
|
* $Id: internal.h,v 1.19 1999/05/16 19:45:36 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -27,7 +27,7 @@
|
|||||||
* System-dependent tuning constants
|
* System-dependent tuning constants
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#define _CPU_PAGE_WEIGHT_ 0.033/* CPU-heap-to-page cost weighting factor */
|
#define _CPU_PAGE_WEIGHT_ 0.033 /* CPU-heap-to-page cost weighting factor */
|
||||||
#define _CPU_INDEX_PAGE_WEIGHT_ 0.017 /* CPU-index-to-page cost
|
#define _CPU_INDEX_PAGE_WEIGHT_ 0.017 /* CPU-index-to-page cost
|
||||||
* weighting factor */
|
* weighting factor */
|
||||||
#define _MAX_KEYS_ INDEX_MAX_KEYS /* maximum number of keys in an
|
#define _MAX_KEYS_ INDEX_MAX_KEYS /* maximum number of keys in an
|
||||||
@ -64,7 +64,7 @@
|
|||||||
/* Identifier for invalid relation OIDs and attribute numbers for use by
|
/* Identifier for invalid relation OIDs and attribute numbers for use by
|
||||||
* selectivity functions
|
* selectivity functions
|
||||||
*/
|
*/
|
||||||
#define _SELEC_VALUE_UNKNOWN_ -1
|
#define _SELEC_VALUE_UNKNOWN_ (-1)
|
||||||
|
|
||||||
/* Flag indicating that a clause constant is really a parameter (or other
|
/* Flag indicating that a clause constant is really a parameter (or other
|
||||||
* non-constant?), a non-parameter, or a constant on the right side
|
* non-constant?), a non-parameter, or a constant on the right side
|
||||||
@ -75,11 +75,6 @@
|
|||||||
#define _SELEC_CONSTANT_LEFT_ 0
|
#define _SELEC_CONSTANT_LEFT_ 0
|
||||||
#define _SELEC_CONSTANT_RIGHT_ 2
|
#define _SELEC_CONSTANT_RIGHT_ 2
|
||||||
|
|
||||||
#define TOLERANCE 0.000001
|
|
||||||
|
|
||||||
#define FLOAT_EQUAL(X,Y) ((X) - (Y) < TOLERANCE)
|
|
||||||
#define FLOAT_IS_ZERO(X) (FLOAT_EQUAL(X,0.0))
|
|
||||||
|
|
||||||
/* #define deactivate_joininfo(joininfo) joininfo->inactive=true*/
|
/* #define deactivate_joininfo(joininfo) joininfo->inactive=true*/
|
||||||
/*#define joininfo_inactive(joininfo) joininfo->inactive */
|
/*#define joininfo_inactive(joininfo) joininfo->inactive */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user