diff --git a/contrib/intarray/_int.c b/contrib/intarray/_int.c
index ba91a0eba4a499e728b0511c20de7aaabb7b8383..d956543af5f075eb8fc05e63248a3150e3c9d375 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;
diff --git a/contrib/intarray/_int.sql.in b/contrib/intarray/_int.sql.in
index 60a4972984b813aadae0f9a485eb759285c33d61..4d9031f65324e89e3c7778e1e78b050b4bec1b5e 100644
--- a/contrib/intarray/_int.sql.in
+++ b/contrib/intarray/_int.sql.in
@@ -179,7 +179,7 @@ INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
 
 -- _int_same
 INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
-   SELECT opcl.oid, 6, false, c.opoid
+   SELECT opcl.oid, 6, true, c.opoid
    FROM pg_opclass opcl, _int_ops_tmp c
    WHERE
       opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
@@ -354,6 +354,15 @@ INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
       and opcname = 'gist__intbig_ops' 
       and c.oprname = '~';
 
+-- _int_same
+INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
+   SELECT opcl.oid, 6, true, c.opoid
+   FROM pg_opclass opcl, _int_ops_tmp c
+   WHERE
+      opcamid = (SELECT oid FROM pg_am WHERE amname = 'gist')
+      and opcname = 'gist__intbig_ops' 
+      and c.oprname = '=';
+
 --boolean search
 INSERT INTO pg_amop (amopclaid, amopstrategy, amopreqcheck, amopopr)
    SELECT opcl.oid, 20, true, c.opoid