From d30c4b056212a0b0ac7be363aaa5cf634114e618 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 19 Jun 1999 00:44:44 +0000
Subject: [PATCH] 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 ...

---
 src/backend/utils/adt/selfuncs.c | 63 ++++++++++++++++++++++----------
 1 file changed, 44 insertions(+), 19 deletions(-)

diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index eb6bf557033..fe11c77b193 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -12,7 +12,7 @@
  *
  *
  * 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,
 		 * don't want to miss the benefits of a good selectivity estimate.)
 		 */
 		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,
-				 "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);
-
-		result = (float64) fmgr(oprrest,
-								(char *) operatorObjectId,
-								(char *) indrelid,
-								(char *) (int) attributeNumber,
-								(char *) constValue,
-								(char *) constFlag,
-								NULL);
+#endif
+		}
+		else
+			result = (float64) fmgr(oprrest,
+									(char *) operatorObjectId,
+									(char *) indrelid,
+									(char *) (int) attributeNumber,
+									(char *) constValue,
+									(char *) constFlag,
+									NULL);
 	}
 
 	if (!PointerIsValid(result))
@@ -473,18 +485,31 @@ btreenpage(Oid operatorObjectId,
 		 * don't want to miss the benefits of a good selectivity estimate.)
 		 */
 		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,
-				 "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);
-
-		temp = (float64) fmgr(oprrest,
-							  (char *) operatorObjectId,
-							  (char *) indrelid,
-							  (char *) (int) attributeNumber,
-							  (char *) constValue,
-							  (char *) constFlag,
-							  NULL);
+#endif
+		}
+		else
+			temp = (float64) fmgr(oprrest,
+								  (char *) operatorObjectId,
+								  (char *) indrelid,
+								  (char *) (int) attributeNumber,
+								  (char *) constValue,
+								  (char *) constFlag,
+								  NULL);
 	}
+
 	atp = SearchSysCacheTuple(RELOID,
 							  ObjectIdGetDatum(indexrelid),
 							  0, 0, 0);
-- 
GitLab