diff options
Diffstat (limited to 'src/backend/optimizer')
-rw-r--r-- | src/backend/optimizer/path/costsize.c | 12 | ||||
-rw-r--r-- | src/backend/optimizer/util/plancat.c | 60 |
2 files changed, 36 insertions, 36 deletions
diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c index e1c66c105f8..dd710ca2f76 100644 --- a/src/backend/optimizer/path/costsize.c +++ b/src/backend/optimizer/path/costsize.c @@ -42,7 +42,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/path/costsize.c,v 1.59 2000/05/30 00:49:46 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/path/costsize.c,v 1.60 2000/05/30 04:24:47 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -240,8 +240,14 @@ cost_index(Path *path, Query *root, * index (ie, the fraction of main-table tuples we will have to * retrieve). */ - fmgr(index->amcostestimate, root, baserel, index, indexQuals, - &indexStartupCost, &indexTotalCost, &indexSelectivity); + OidFunctionCall7(index->amcostestimate, + PointerGetDatum(root), + PointerGetDatum(baserel), + PointerGetDatum(index), + PointerGetDatum(indexQuals), + PointerGetDatum(&indexStartupCost), + PointerGetDatum(&indexTotalCost), + PointerGetDatum(&indexSelectivity)); /* all costs for touching index itself included here */ startup_cost += indexStartupCost; diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c index 91f57dc1413..34f687809f1 100644 --- a/src/backend/optimizer/util/plancat.c +++ b/src/backend/optimizer/util/plancat.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/util/plancat.c,v 1.52 2000/05/30 00:49:49 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/util/plancat.c,v 1.53 2000/05/30 04:24:48 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -195,22 +195,19 @@ restriction_selectivity(Oid functionObjectId, Datum constValue, int constFlag) { - float64 result; - - result = (float64) fmgr(functionObjectId, - (char *) operatorObjectId, - (char *) relationObjectId, - (char *) (int) attributeNumber, - (char *) constValue, - (char *) constFlag, - NULL); - if (!PointerIsValid(result)) - elog(ERROR, "restriction_selectivity: bad pointer"); - - if (*result < 0.0 || *result > 1.0) - elog(ERROR, "restriction_selectivity: bad value %f", *result); - - return (Selectivity) *result; + float8 result; + + result = DatumGetFloat8(OidFunctionCall5(functionObjectId, + ObjectIdGetDatum(operatorObjectId), + ObjectIdGetDatum(relationObjectId), + Int16GetDatum(attributeNumber), + constValue, + Int32GetDatum(constFlag))); + + if (result < 0.0 || result > 1.0) + elog(ERROR, "restriction_selectivity: bad value %f", result); + + return (Selectivity) result; } /* @@ -231,22 +228,19 @@ join_selectivity(Oid functionObjectId, Oid relationObjectId2, AttrNumber attributeNumber2) { - float64 result; - - result = (float64) fmgr(functionObjectId, - (char *) operatorObjectId, - (char *) relationObjectId1, - (char *) (int) attributeNumber1, - (char *) relationObjectId2, - (char *) (int) attributeNumber2, - NULL); - if (!PointerIsValid(result)) - elog(ERROR, "join_selectivity: bad pointer"); - - if (*result < 0.0 || *result > 1.0) - elog(ERROR, "join_selectivity: bad value %f", *result); - - return (Selectivity) *result; + float8 result; + + result = DatumGetFloat8(OidFunctionCall5(functionObjectId, + ObjectIdGetDatum(operatorObjectId), + ObjectIdGetDatum(relationObjectId1), + Int16GetDatum(attributeNumber1), + ObjectIdGetDatum(relationObjectId2), + Int16GetDatum(attributeNumber2))); + + if (result < 0.0 || result > 1.0) + elog(ERROR, "join_selectivity: bad value %f", result); + + return (Selectivity) result; } /* |