From fecb2b00243521a52461ed60ad5e75e443af5e2f Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 16 May 1999 19:45:37 +0000 Subject: [PATCH] Minor code cleanup in optimizer. --- src/backend/optimizer/path/clausesel.c | 6 +++--- src/backend/optimizer/path/joinpath.c | 28 +++++++++----------------- src/include/optimizer/internal.h | 11 +++------- 3 files changed, 16 insertions(+), 29 deletions(-) diff --git a/src/backend/optimizer/path/clausesel.c b/src/backend/optimizer/path/clausesel.c index 18bb69f53c..1eeae4c6d3 100644 --- a/src/backend/optimizer/path/clausesel.c +++ b/src/backend/optimizer/path/clausesel.c @@ -7,7 +7,7 @@ * * * 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); 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; } } @@ -129,7 +129,7 @@ set_rest_selec(Query *root, List *restrictinfo_list) * Check to see if the selectivity of this clause or any 'or' * 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, (Node *) clausenode->clause, diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c index 8b2f5139ec..930112f888 100644 --- a/src/backend/optimizer/path/joinpath.c +++ b/src/backend/optimizer/path/joinpath.c @@ -7,7 +7,7 @@ * * * 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 *mergeinfo_list) { - Path *innerpath = (Path *) NULL; List *mp_list = NIL; - PathOrder *innerpath_ordering = NULL; - Cost temp1 = 0.0; - bool temp2 = false; - List *i = NIL; + List *i; foreach(i, innerpath_list) { + Path *innerpath = (Path *) lfirst(i); + PathOrder *innerpath_ordering = innerpath->pathorder; MergeInfo *xmergeinfo = (MergeInfo *) NULL; List *clauses = NIL; List *matchedJoinKeys = NIL; List *matchedJoinClauses = NIL; - innerpath = (Path *) lfirst(i); - - innerpath_ordering = innerpath->pathorder; - if (innerpath_ordering) - { xmergeinfo = match_order_mergeinfo(innerpath_ordering, - mergeinfo_list); - } + mergeinfo_list); if (xmergeinfo) clauses = ((JoinMethod *) xmergeinfo)->clauses; @@ -463,13 +455,13 @@ match_unsorted_inner(RelOptInfo *joinrel, */ if (clauses && matchedJoinKeys) { + Cost temp1; + temp1 = outerrel->cheapestpath->path_cost + cost_sort(matchedJoinKeys, outerrel->size, outerrel->width); - temp2 = (bool) (FLOAT_IS_ZERO(innerpath->outerjoincost) - || (innerpath->outerjoincost > temp1)); - - if (temp2) + if (innerpath->outerjoincost <= 0 /* unset? */ + || innerpath->outerjoincost > temp1) { List *outerkeys = make_pathkeys_from_joinkeys(matchedJoinKeys, outerrel->targetlist, @@ -494,8 +486,8 @@ match_unsorted_inner(RelOptInfo *joinrel, } } } - return mp_list; + return mp_list; } static bool diff --git a/src/include/optimizer/internal.h b/src/include/optimizer/internal.h index 24eb5327cb..0241a3f98f 100644 --- a/src/include/optimizer/internal.h +++ b/src/include/optimizer/internal.h @@ -6,7 +6,7 @@ * * 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 * */ -#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 * weighting factor */ #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 * selectivity functions */ -#define _SELEC_VALUE_UNKNOWN_ -1 +#define _SELEC_VALUE_UNKNOWN_ (-1) /* Flag indicating that a clause constant is really a parameter (or other * non-constant?), a non-parameter, or a constant on the right side @@ -75,11 +75,6 @@ #define _SELEC_CONSTANT_LEFT_ 0 #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 joininfo_inactive(joininfo) joininfo->inactive */ -- GitLab