0002-remove-contained-by-support.patch
text/x-diff
Filename: 0002-remove-contained-by-support.patch
Type: text/x-diff
Part: 1
Patch
Format: unified
Series: patch 0002
| File | + | − |
|---|---|---|
| contrib/intarray/_intbig_gist.c | 12 | 32 |
| contrib/intarray/_int_gist.c | 13 | 11 |
diff --git a/contrib/intarray/_int_gist.c b/contrib/intarray/_int_gist.c
index fb05b06af9..fd05247bbf 100644
--- a/contrib/intarray/_int_gist.c
+++ b/contrib/intarray/_int_gist.c
@@ -93,17 +93,19 @@ g_int_consistent(PG_FUNCTION_ARGS)
break;
case RTContainedByStrategyNumber:
case RTOldContainedByStrategyNumber:
- if (GIST_LEAF(entry))
- retval = inner_int_contains(query,
- (ArrayType *) DatumGetPointer(entry->key));
- else
- {
- /*
- * Unfortunately, because empty arrays could be anywhere in
- * the index, we must search the whole tree.
- */
- retval = true;
- }
+
+ /*
+ * Unfortunately, because empty arrays could be anywhere in the
+ * index, implementing this would require searching the whole
+ * tree. As of intarray 1.4, <@ is no longer part of the opclass.
+ * If we get here anyway, an obsolete opclass definition must
+ * still be installed.
+ */
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("<@ operator is no longer supported by gist__int_ops"),
+ errdetail("Please update to intarray 1.4 or later.")));
+ retval = false; /* keep compiler quiet */
break;
default:
retval = false;
diff --git a/contrib/intarray/_intbig_gist.c b/contrib/intarray/_intbig_gist.c
index 67c44e99a9..5fe110e9ce 100644
--- a/contrib/intarray/_intbig_gist.c
+++ b/contrib/intarray/_intbig_gist.c
@@ -533,39 +533,19 @@ g_intbig_consistent(PG_FUNCTION_ARGS)
break;
case RTContainedByStrategyNumber:
case RTOldContainedByStrategyNumber:
- if (GIST_LEAF(entry))
- {
- int i,
- num = ARRNELEMS(query);
- int32 *ptr = ARRPTR(query);
- BITVECP dq = palloc0(siglen),
- de;
- while (num--)
- {
- HASH(dq, *ptr, siglen);
- ptr++;
- }
-
- de = GETSIGN((GISTTYPE *) DatumGetPointer(entry->key));
- retval = true;
- LOOPBYTE(siglen)
- {
- if (de[i] & ~dq[i])
- {
- retval = false;
- break;
- }
- }
- }
- else
- {
- /*
- * Unfortunately, because empty arrays could be anywhere in
- * the index, we must search the whole tree.
- */
- retval = true;
- }
+ /*
+ * Unfortunately, because empty arrays could be anywhere in the
+ * index, implementing this would require searching the whole
+ * tree. As of intarray 1.4, <@ is no longer part of the opclass.
+ * If we get here anyway, an obsolete opclass definition must
+ * still be installed.
+ */
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("<@ operator is no longer supported by gist__intbig_ops"),
+ errdetail("Please update to intarray 1.4 or later.")));
+ retval = false; /* keep compiler quiet */
break;
default:
retval = false;