Commit d30c4b05 authored by Tom Lane's avatar Tom Lane

Temporarily disable error checks for missing selectivity

functions, in order to work around oversight in 6.5 release: rtree
index functions haven't got any.  Mea culpa ...
parent 0591bbd5
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.29 1999/05/31 19:32:47 tgl Exp $ * $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.30 1999/06/19 00:44:44 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -414,17 +414,29 @@ btreesel(Oid operatorObjectId, ...@@ -414,17 +414,29 @@ btreesel(Oid operatorObjectId,
* don't want to miss the benefits of a good selectivity estimate.) * don't want to miss the benefits of a good selectivity estimate.)
*/ */
if (!oprrest) if (!oprrest)
{
#if 1
/*
* XXX temporary fix for 6.5: rtree operators are missing their
* selectivity estimators, so return a default estimate instead.
* Ugh.
*/
result = (float64) palloc(sizeof(float64data));
*result = 0.5;
#else
elog(ERROR, elog(ERROR,
"Operator %u must have a restriction selectivity estimator to be used in a btree index", "Operator %u must have a restriction selectivity estimator to be used in an index",
operatorObjectId); operatorObjectId);
#endif
result = (float64) fmgr(oprrest, }
(char *) operatorObjectId, else
(char *) indrelid, result = (float64) fmgr(oprrest,
(char *) (int) attributeNumber, (char *) operatorObjectId,
(char *) constValue, (char *) indrelid,
(char *) constFlag, (char *) (int) attributeNumber,
NULL); (char *) constValue,
(char *) constFlag,
NULL);
} }
if (!PointerIsValid(result)) if (!PointerIsValid(result))
...@@ -473,18 +485,31 @@ btreenpage(Oid operatorObjectId, ...@@ -473,18 +485,31 @@ btreenpage(Oid operatorObjectId,
* don't want to miss the benefits of a good selectivity estimate.) * don't want to miss the benefits of a good selectivity estimate.)
*/ */
if (!oprrest) if (!oprrest)
{
#if 1
/*
* XXX temporary fix for 6.5: rtree operators are missing their
* selectivity estimators, so return a default estimate instead.
* Ugh.
*/
tempData = 0.5;
temp = &tempData;
#else
elog(ERROR, elog(ERROR,
"Operator %u must have a restriction selectivity estimator to be used in a btree index", "Operator %u must have a restriction selectivity estimator to be used in an index",
operatorObjectId); operatorObjectId);
#endif
temp = (float64) fmgr(oprrest, }
(char *) operatorObjectId, else
(char *) indrelid, temp = (float64) fmgr(oprrest,
(char *) (int) attributeNumber, (char *) operatorObjectId,
(char *) constValue, (char *) indrelid,
(char *) constFlag, (char *) (int) attributeNumber,
NULL); (char *) constValue,
(char *) constFlag,
NULL);
} }
atp = SearchSysCacheTuple(RELOID, atp = SearchSysCacheTuple(RELOID,
ObjectIdGetDatum(indexrelid), ObjectIdGetDatum(indexrelid),
0, 0, 0); 0, 0, 0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment