diff options
author | Bruce Momjian <bruce@momjian.us> | 2002-06-07 21:52:33 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2002-06-07 21:52:33 +0000 |
commit | 74a8af099f0095bc87f25dfa9b54f09d6a8972d4 (patch) | |
tree | 0003d10f3ca0117933fd839a9dedc98cd1082947 /contrib/intarray/_int.c | |
parent | 2f297a2fcfa8279cdb59d3647e4ff1677670bf31 (diff) | |
download | postgresql-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.c | 21 |
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; |