|
|
|
@ -1,4 +1,4 @@ |
|
|
|
|
-- Create the user-defined type for the 1-D frloating point indervals (_int4) |
|
|
|
|
-- Create the user-defined type for the 1-D integer arrays (_int4) |
|
|
|
|
-- |
|
|
|
|
BEGIN TRANSACTION; |
|
|
|
|
|
|
|
|
@ -208,4 +208,116 @@ INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum) |
|
|
|
|
WHERE amname = 'gist' and opcname = 'gist__int_ops' |
|
|
|
|
and proname = 'g_int_same'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------- |
|
|
|
|
-- intbig |
|
|
|
|
--------------------------------------------- |
|
|
|
|
-- define the GiST support methods |
|
|
|
|
CREATE FUNCTION g_intbig_consistent(opaque,_int4,int4) RETURNS bool |
|
|
|
|
AS 'MODULE_PATHNAME' LANGUAGE 'c'; |
|
|
|
|
|
|
|
|
|
CREATE FUNCTION g_intbig_compress(opaque) RETURNS opaque |
|
|
|
|
AS 'MODULE_PATHNAME' LANGUAGE 'c'; |
|
|
|
|
|
|
|
|
|
CREATE FUNCTION g_intbig_decompress(opaque) RETURNS opaque |
|
|
|
|
AS 'MODULE_PATHNAME' LANGUAGE 'c'; |
|
|
|
|
|
|
|
|
|
CREATE FUNCTION g_intbig_penalty(opaque,opaque,opaque) RETURNS opaque |
|
|
|
|
AS 'MODULE_PATHNAME' LANGUAGE 'c'; |
|
|
|
|
|
|
|
|
|
CREATE FUNCTION g_intbig_picksplit(opaque, opaque) RETURNS opaque |
|
|
|
|
AS 'MODULE_PATHNAME' LANGUAGE 'c'; |
|
|
|
|
|
|
|
|
|
CREATE FUNCTION g_intbig_union(bytea, opaque) RETURNS _int4 |
|
|
|
|
AS 'MODULE_PATHNAME' LANGUAGE 'c'; |
|
|
|
|
|
|
|
|
|
CREATE FUNCTION g_intbig_same(_int4, _int4, opaque) RETURNS opaque |
|
|
|
|
AS 'MODULE_PATHNAME' LANGUAGE 'c'; |
|
|
|
|
|
|
|
|
|
-- register the default opclass for indexing |
|
|
|
|
INSERT INTO pg_opclass (opcname, opcdeftype) |
|
|
|
|
values ( 'gist__intbig_ops', 0 ); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- get the comparators for _intments and store them in a tmp table |
|
|
|
|
SELECT o.oid AS opoid, o.oprname |
|
|
|
|
INTO TABLE _int_ops_tmp |
|
|
|
|
FROM pg_operator o, pg_type t |
|
|
|
|
WHERE o.oprleft = t.oid and o.oprright = t.oid |
|
|
|
|
and t.typname = '_int4'; |
|
|
|
|
|
|
|
|
|
-- make sure we have the right operators |
|
|
|
|
-- SELECT * from _int_ops_tmp; |
|
|
|
|
|
|
|
|
|
-- using the tmp table, generate the amop entries |
|
|
|
|
|
|
|
|
|
-- _int_overlap |
|
|
|
|
INSERT INTO pg_amop (amopid, amopclaid, amopopr, amopstrategy) |
|
|
|
|
SELECT am.oid, opcl.oid, c.opoid, 3 |
|
|
|
|
FROM pg_am am, pg_opclass opcl, _int_ops_tmp c |
|
|
|
|
WHERE amname = 'gist' and opcname = 'gist__intbig_ops' |
|
|
|
|
and c.oprname = '&&'; |
|
|
|
|
|
|
|
|
|
-- _int_contains |
|
|
|
|
INSERT INTO pg_amop (amopid, amopclaid, amopopr, amopstrategy) |
|
|
|
|
SELECT am.oid, opcl.oid, c.opoid, 7 |
|
|
|
|
FROM pg_am am, pg_opclass opcl, _int_ops_tmp c |
|
|
|
|
WHERE amname = 'gist' and opcname = 'gist__intbig_ops' |
|
|
|
|
and c.oprname = '@'; |
|
|
|
|
|
|
|
|
|
-- _int_contained |
|
|
|
|
INSERT INTO pg_amop (amopid, amopclaid, amopopr, amopstrategy) |
|
|
|
|
SELECT am.oid, opcl.oid, c.opoid, 8 |
|
|
|
|
FROM pg_am am, pg_opclass opcl, _int_ops_tmp c |
|
|
|
|
WHERE amname = 'gist' and opcname = 'gist__intbig_ops' |
|
|
|
|
and c.oprname = '~'; |
|
|
|
|
|
|
|
|
|
DROP TABLE _int_ops_tmp; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- add the entries to amproc for the support methods |
|
|
|
|
-- note the amprocnum numbers associated with each are specific! |
|
|
|
|
|
|
|
|
|
INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum) |
|
|
|
|
SELECT am.oid, opcl.oid, pro.oid, 1 |
|
|
|
|
FROM pg_am am, pg_opclass opcl, pg_proc pro |
|
|
|
|
WHERE amname = 'gist' and opcname = 'gist__intbig_ops' |
|
|
|
|
and proname = 'g_intbig_consistent'; |
|
|
|
|
|
|
|
|
|
INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum) |
|
|
|
|
SELECT am.oid, opcl.oid, pro.oid, 2 |
|
|
|
|
FROM pg_am am, pg_opclass opcl, pg_proc pro |
|
|
|
|
WHERE amname = 'gist' and opcname = 'gist__intbig_ops' |
|
|
|
|
and proname = 'g_intbig_union'; |
|
|
|
|
|
|
|
|
|
INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum) |
|
|
|
|
SELECT am.oid, opcl.oid, pro.oid, 3 |
|
|
|
|
FROM pg_am am, pg_opclass opcl, pg_proc pro |
|
|
|
|
WHERE amname = 'gist' and opcname = 'gist__intbig_ops' |
|
|
|
|
and proname = 'g_intbig_compress'; |
|
|
|
|
|
|
|
|
|
INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum) |
|
|
|
|
SELECT am.oid, opcl.oid, pro.oid, 4 |
|
|
|
|
FROM pg_am am, pg_opclass opcl, pg_proc pro |
|
|
|
|
WHERE amname = 'gist' and opcname = 'gist__intbig_ops' |
|
|
|
|
and proname = 'g_intbig_decompress'; |
|
|
|
|
|
|
|
|
|
INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum) |
|
|
|
|
SELECT am.oid, opcl.oid, pro.oid, 5 |
|
|
|
|
FROM pg_am am, pg_opclass opcl, pg_proc pro |
|
|
|
|
WHERE amname = 'gist' and opcname = 'gist__intbig_ops' |
|
|
|
|
and proname = 'g_intbig_penalty'; |
|
|
|
|
|
|
|
|
|
INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum) |
|
|
|
|
SELECT am.oid, opcl.oid, pro.oid, 6 |
|
|
|
|
FROM pg_am am, pg_opclass opcl, pg_proc pro |
|
|
|
|
WHERE amname = 'gist' and opcname = 'gist__intbig_ops' |
|
|
|
|
and proname = 'g_intbig_picksplit'; |
|
|
|
|
|
|
|
|
|
INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum) |
|
|
|
|
SELECT am.oid, opcl.oid, pro.oid, 7 |
|
|
|
|
FROM pg_am am, pg_opclass opcl, pg_proc pro |
|
|
|
|
WHERE amname = 'gist' and opcname = 'gist__intbig_ops' |
|
|
|
|
and proname = 'g_intbig_same'; |
|
|
|
|
|
|
|
|
|
END TRANSACTION; |
|
|
|
|