Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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;