diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2000-05-30 04:25:00 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2000-05-30 04:25:00 +0000 |
commit | 0f1e39643de655f5103b09d5a82cadbf26a965c1 (patch) | |
tree | 32fa30338e5065afbc28df7dae4c2d2a0bce1569 /src/backend/optimizer/util/plancat.c | |
parent | a12a23f0d03cc8bf22c6c38bc2394753ec34fcdf (diff) |
Third round of fmgr updates: eliminate calls using fmgr() and
fmgr_faddr() in favor of new-style calls. Lots of cleanup of
sloppy casts to use XXXGetDatum and DatumGetXXX ...
Diffstat (limited to 'src/backend/optimizer/util/plancat.c')
-rw-r--r-- | src/backend/optimizer/util/plancat.c | 60 |
1 files changed, 27 insertions, 33 deletions
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; } /* |