aboutsummaryrefslogtreecommitdiff
path: root/contrib/intarray/_int.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2002-06-07 21:52:33 +0000
committerBruce Momjian <bruce@momjian.us>2002-06-07 21:52:33 +0000
commit74a8af099f0095bc87f25dfa9b54f09d6a8972d4 (patch)
tree0003d10f3ca0117933fd839a9dedc98cd1082947 /contrib/intarray/_int.c
parent2f297a2fcfa8279cdb59d3647e4ff1677670bf31 (diff)
downloadpostgresql-74a8af099f0095bc87f25dfa9b54f09d6a8972d4.tar.gz
postgresql-74a8af099f0095bc87f25dfa9b54f09d6a8972d4.zip
Please apply attached patch to contrib/intarray (7.2, 7.3).
Fixed bug with '=' operator for gist__int_ops and define '=' operator for gist__intbig_ops opclass. Now '=' operator is consistent with standard 'array' type. Thanks Achilleus Mantzios for bug report and suggestion. Oleg Bartunov
Diffstat (limited to 'contrib/intarray/_int.c')
-rw-r--r--contrib/intarray/_int.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/contrib/intarray/_int.c b/contrib/intarray/_int.c
index ba91a0eba4a..d956543af5f 100644
--- a/contrib/intarray/_int.c
+++ b/contrib/intarray/_int.c
@@ -312,6 +312,17 @@ g_int_consistent(PG_FUNCTION_ARGS) {
query);
break;
case RTSameStrategyNumber:
+ if ( GIST_LEAF(entry) )
+ DirectFunctionCall3(
+ g_int_same,
+ entry->key,
+ PointerGetDatum(query),
+ PointerGetDatum(&retval)
+ );
+ else
+ retval = inner_int_contains((ArrayType *) DatumGetPointer(entry->key),
+ query);
+ break;
case RTContainsStrategyNumber:
retval = inner_int_contains((ArrayType *) DatumGetPointer(entry->key),
query);
@@ -1263,6 +1274,16 @@ g_intbig_consistent(PG_FUNCTION_ARGS) {
retval = _intbig_overlap((ArrayType *) DatumGetPointer(entry->key), q);
break;
case RTSameStrategyNumber:
+ if ( GIST_LEAF(entry) )
+ DirectFunctionCall3(
+ g_intbig_same,
+ entry->key,
+ PointerGetDatum(q),
+ PointerGetDatum(&retval)
+ );
+ else
+ retval = _intbig_contains((ArrayType *) DatumGetPointer(entry->key), q);
+ break;
case RTContainsStrategyNumber:
retval = _intbig_contains((ArrayType *) DatumGetPointer(entry->key), q);
break;