提交 fecb2b00 编写于 作者: T Tom Lane

Minor code cleanup in optimizer.

上级 f2ed835b
...@@ -7,7 +7,7 @@ ...@@ -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) ...@@ -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) ...@@ -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 @@ ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -494,8 +486,8 @@ match_unsorted_inner(RelOptInfo *joinrel,
} }
} }
} }
return mp_list;
return mp_list;
} }
static bool static bool
......
...@@ -6,7 +6,7 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册