Skip to content
Snippets Groups Projects
Commit 74a8af09 authored by Bruce Momjian's avatar Bruce Momjian
Browse files

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
parent 2f297a2f
No related branches found
No related tags found
No related merge requests found
......@@ -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;
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment