From: Andrew Dunstan <andrew@dunslane.net>
To: PostgreSQL-development <pgsql-hackers@postgresql.org>
Subject: btree_gin and btree_gist for enums
Date: Thu, 17 Mar 2016 06:44:01 -0400
Message-ID: <56EA8A71.8060107@dunslane.net> (raw)
List-Unsubscribe: <mailto:majordomo@postgresql.org?body=unsub%20pgsql-hackers>
Here is a patch to add enum support to btree_gin and btree_gist. I
didn't include distance operations, as I didn't think it terribly
important, and there isn't a simple way to compute it sanely and
efficiently, so no KNN support.
cheers
andrew
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackersAttachments:
[text/x-patch] enum-btree-gist-gin.patch (156.4K, ../56EA8A71.8060107@dunslane.net/2-enum-btree-gist-gin.patch)
download | inline diff:diff --git a/contrib/btree_gin/Makefile b/contrib/btree_gin/Makefileindex 0492091..f8a2d7f 100644--- a/contrib/btree_gin/Makefile+++ b/contrib/btree_gin/Makefile@@ -4,13 +4,13 @@ MODULE_big = btree_gin
OBJS = btree_gin.o $(WIN32RES)
EXTENSION = btree_gin
-DATA = btree_gin--1.0.sql btree_gin--unpackaged--1.0.sql+DATA = btree_gin--1.1.sql btree_gin--unpackaged--1.0.sql btree_gin--1.0--1.1.sql
PGFILEDESC = "btree_gin - B-tree equivalent GIN operator classes"
REGRESS = install_btree_gin int2 int4 int8 float4 float8 money oid \
timestamp timestamptz time timetz date interval \
macaddr inet cidr text varchar char bytea bit varbit \
- numeric+ numeric enum
ifdef USE_PGXS
PG_CONFIG = pg_config
diff --git a/contrib/btree_gin/btree_gin--1.0--1.1.sql b/contrib/btree_gin/btree_gin--1.0--1.1.sqlnew file mode 100644index 0000000..0c90bbb--- /dev/null+++ b/contrib/btree_gin/btree_gin--1.0--1.1.sql@@ -0,0 +1,47 @@+/* contrib/btree_gin/btree_gin--1.0--1.1.sql */++-- complain if script is sourced in psql, rather than via CREATE EXTENSION+\echo Use "ALTER EXTENSION btree_gin UPDATE TO '1.1'" to load this file. \quit++--+--+--+-- enum ops+--+--+++CREATE FUNCTION gin_extract_value_anyenum(anyenum, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_anyenum(anyenum, anyenum, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_anyenum(anyenum, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_enum_cmp(anyenum, anyenum)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS enum_ops+DEFAULT FOR TYPE anyenum USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 gin_enum_cmp(anyenum,anyenum),+ FUNCTION 2 gin_extract_value_anyenum(anyenum, internal),+ FUNCTION 3 gin_extract_query_anyenum(anyenum, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_anyenum(anyenum,anyenum,int2, internal),+STORAGE oid;diff --git a/contrib/btree_gin/btree_gin--1.0.sql b/contrib/btree_gin/btree_gin--1.0.sqldeleted file mode 100644index cf867ef..0000000--- a/contrib/btree_gin/btree_gin--1.0.sql+++ /dev/null@@ -1,689 +0,0 @@-/* contrib/btree_gin/btree_gin--1.0.sql */---- complain if script is sourced in psql, rather than via CREATE EXTENSION-\echo Use "CREATE EXTENSION btree_gin" to load this file. \quit--CREATE FUNCTION gin_btree_consistent(internal, int2, anyelement, int4, internal, internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_value_int2(int2, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_int2(int2, int2, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_int2(int2, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS int2_ops-DEFAULT FOR TYPE int2 USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 btint2cmp(int2,int2),- FUNCTION 2 gin_extract_value_int2(int2, internal),- FUNCTION 3 gin_extract_query_int2(int2, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_int2(int2,int2,int2, internal),-STORAGE int2;--CREATE FUNCTION gin_extract_value_int4(int4, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_int4(int4, int4, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_int4(int4, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS int4_ops-DEFAULT FOR TYPE int4 USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 btint4cmp(int4,int4),- FUNCTION 2 gin_extract_value_int4(int4, internal),- FUNCTION 3 gin_extract_query_int4(int4, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_int4(int4,int4,int2, internal),-STORAGE int4;--CREATE FUNCTION gin_extract_value_int8(int8, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_int8(int8, int8, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_int8(int8, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS int8_ops-DEFAULT FOR TYPE int8 USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 btint8cmp(int8,int8),- FUNCTION 2 gin_extract_value_int8(int8, internal),- FUNCTION 3 gin_extract_query_int8(int8, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_int8(int8,int8,int2, internal),-STORAGE int8;--CREATE FUNCTION gin_extract_value_float4(float4, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_float4(float4, float4, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_float4(float4, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS float4_ops-DEFAULT FOR TYPE float4 USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 btfloat4cmp(float4,float4),- FUNCTION 2 gin_extract_value_float4(float4, internal),- FUNCTION 3 gin_extract_query_float4(float4, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_float4(float4,float4,int2, internal),-STORAGE float4;--CREATE FUNCTION gin_extract_value_float8(float8, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_float8(float8, float8, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_float8(float8, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS float8_ops-DEFAULT FOR TYPE float8 USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 btfloat8cmp(float8,float8),- FUNCTION 2 gin_extract_value_float8(float8, internal),- FUNCTION 3 gin_extract_query_float8(float8, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_float8(float8,float8,int2, internal),-STORAGE float8;--CREATE FUNCTION gin_extract_value_money(money, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_money(money, money, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_money(money, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS money_ops-DEFAULT FOR TYPE money USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 cash_cmp(money,money),- FUNCTION 2 gin_extract_value_money(money, internal),- FUNCTION 3 gin_extract_query_money(money, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_money(money,money,int2, internal),-STORAGE money;--CREATE FUNCTION gin_extract_value_oid(oid, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_oid(oid, oid, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_oid(oid, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS oid_ops-DEFAULT FOR TYPE oid USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 btoidcmp(oid,oid),- FUNCTION 2 gin_extract_value_oid(oid, internal),- FUNCTION 3 gin_extract_query_oid(oid, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_oid(oid,oid,int2, internal),-STORAGE oid;--CREATE FUNCTION gin_extract_value_timestamp(timestamp, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_timestamp(timestamp, timestamp, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_timestamp(timestamp, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS timestamp_ops-DEFAULT FOR TYPE timestamp USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 timestamp_cmp(timestamp,timestamp),- FUNCTION 2 gin_extract_value_timestamp(timestamp, internal),- FUNCTION 3 gin_extract_query_timestamp(timestamp, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_timestamp(timestamp,timestamp,int2, internal),-STORAGE timestamp;--CREATE FUNCTION gin_extract_value_timestamptz(timestamptz, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_timestamptz(timestamptz, timestamptz, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_timestamptz(timestamptz, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS timestamptz_ops-DEFAULT FOR TYPE timestamptz USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 timestamptz_cmp(timestamptz,timestamptz),- FUNCTION 2 gin_extract_value_timestamptz(timestamptz, internal),- FUNCTION 3 gin_extract_query_timestamptz(timestamptz, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_timestamptz(timestamptz,timestamptz,int2, internal),-STORAGE timestamptz;--CREATE FUNCTION gin_extract_value_time(time, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_time(time, time, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_time(time, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS time_ops-DEFAULT FOR TYPE time USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 time_cmp(time,time),- FUNCTION 2 gin_extract_value_time(time, internal),- FUNCTION 3 gin_extract_query_time(time, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_time(time,time,int2, internal),-STORAGE time;--CREATE FUNCTION gin_extract_value_timetz(timetz, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_timetz(timetz, timetz, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_timetz(timetz, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS timetz_ops-DEFAULT FOR TYPE timetz USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 timetz_cmp(timetz,timetz),- FUNCTION 2 gin_extract_value_timetz(timetz, internal),- FUNCTION 3 gin_extract_query_timetz(timetz, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_timetz(timetz,timetz,int2, internal),-STORAGE timetz;--CREATE FUNCTION gin_extract_value_date(date, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_date(date, date, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_date(date, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS date_ops-DEFAULT FOR TYPE date USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 date_cmp(date,date),- FUNCTION 2 gin_extract_value_date(date, internal),- FUNCTION 3 gin_extract_query_date(date, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_date(date,date,int2, internal),-STORAGE date;--CREATE FUNCTION gin_extract_value_interval(interval, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_interval(interval, interval, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_interval(interval, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS interval_ops-DEFAULT FOR TYPE interval USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 interval_cmp(interval,interval),- FUNCTION 2 gin_extract_value_interval(interval, internal),- FUNCTION 3 gin_extract_query_interval(interval, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_interval(interval,interval,int2, internal),-STORAGE interval;--CREATE FUNCTION gin_extract_value_macaddr(macaddr, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_macaddr(macaddr, macaddr, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_macaddr(macaddr, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS macaddr_ops-DEFAULT FOR TYPE macaddr USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 macaddr_cmp(macaddr,macaddr),- FUNCTION 2 gin_extract_value_macaddr(macaddr, internal),- FUNCTION 3 gin_extract_query_macaddr(macaddr, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_macaddr(macaddr,macaddr,int2, internal),-STORAGE macaddr;--CREATE FUNCTION gin_extract_value_inet(inet, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_inet(inet, inet, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_inet(inet, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS inet_ops-DEFAULT FOR TYPE inet USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 network_cmp(inet,inet),- FUNCTION 2 gin_extract_value_inet(inet, internal),- FUNCTION 3 gin_extract_query_inet(inet, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_inet(inet,inet,int2, internal),-STORAGE inet;--CREATE FUNCTION gin_extract_value_cidr(cidr, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_cidr(cidr, cidr, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_cidr(cidr, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS cidr_ops-DEFAULT FOR TYPE cidr USING gin-AS- OPERATOR 1 <(inet,inet),- OPERATOR 2 <=(inet,inet),- OPERATOR 3 =(inet,inet),- OPERATOR 4 >=(inet,inet),- OPERATOR 5 >(inet,inet),- FUNCTION 1 network_cmp(inet,inet),- FUNCTION 2 gin_extract_value_cidr(cidr, internal),- FUNCTION 3 gin_extract_query_cidr(cidr, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_cidr(cidr,cidr,int2, internal),-STORAGE cidr;--CREATE FUNCTION gin_extract_value_text(text, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_text(text, text, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_text(text, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS text_ops-DEFAULT FOR TYPE text USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 bttextcmp(text,text),- FUNCTION 2 gin_extract_value_text(text, internal),- FUNCTION 3 gin_extract_query_text(text, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_text(text,text,int2, internal),-STORAGE text;--CREATE OPERATOR CLASS varchar_ops-DEFAULT FOR TYPE varchar USING gin-AS- OPERATOR 1 <(text,text),- OPERATOR 2 <=(text,text),- OPERATOR 3 =(text,text),- OPERATOR 4 >=(text,text),- OPERATOR 5 >(text,text),- FUNCTION 1 bttextcmp(text,text),- FUNCTION 2 gin_extract_value_text(text, internal),- FUNCTION 3 gin_extract_query_text(text, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_text(text,text,int2, internal),-STORAGE varchar;--CREATE FUNCTION gin_extract_value_char("char", internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_char("char", "char", int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_char("char", internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS char_ops-DEFAULT FOR TYPE "char" USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 btcharcmp("char","char"),- FUNCTION 2 gin_extract_value_char("char", internal),- FUNCTION 3 gin_extract_query_char("char", internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_char("char","char",int2, internal),-STORAGE "char";--CREATE FUNCTION gin_extract_value_bytea(bytea, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_bytea(bytea, bytea, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_bytea(bytea, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS bytea_ops-DEFAULT FOR TYPE bytea USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 byteacmp(bytea,bytea),- FUNCTION 2 gin_extract_value_bytea(bytea, internal),- FUNCTION 3 gin_extract_query_bytea(bytea, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_bytea(bytea,bytea,int2, internal),-STORAGE bytea;--CREATE FUNCTION gin_extract_value_bit(bit, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_bit(bit, bit, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_bit(bit, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS bit_ops-DEFAULT FOR TYPE bit USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 bitcmp(bit,bit),- FUNCTION 2 gin_extract_value_bit(bit, internal),- FUNCTION 3 gin_extract_query_bit(bit, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_bit(bit,bit,int2, internal),-STORAGE bit;--CREATE FUNCTION gin_extract_value_varbit(varbit, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_varbit(varbit, varbit, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_varbit(varbit, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS varbit_ops-DEFAULT FOR TYPE varbit USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 varbitcmp(varbit,varbit),- FUNCTION 2 gin_extract_value_varbit(varbit, internal),- FUNCTION 3 gin_extract_query_varbit(varbit, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_varbit(varbit,varbit,int2, internal),-STORAGE varbit;--CREATE FUNCTION gin_extract_value_numeric(numeric, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_compare_prefix_numeric(numeric, numeric, int2, internal)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_extract_query_numeric(numeric, internal, int2, internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE FUNCTION gin_numeric_cmp(numeric, numeric)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C STRICT IMMUTABLE;--CREATE OPERATOR CLASS numeric_ops-DEFAULT FOR TYPE numeric USING gin-AS- OPERATOR 1 <,- OPERATOR 2 <=,- OPERATOR 3 =,- OPERATOR 4 >=,- OPERATOR 5 >,- FUNCTION 1 gin_numeric_cmp(numeric,numeric),- FUNCTION 2 gin_extract_value_numeric(numeric, internal),- FUNCTION 3 gin_extract_query_numeric(numeric, internal, int2, internal, internal),- FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),- FUNCTION 5 gin_compare_prefix_numeric(numeric,numeric,int2, internal),-STORAGE numeric;diff --git a/contrib/btree_gin/btree_gin--1.1.sql b/contrib/btree_gin/btree_gin--1.1.sqlnew file mode 100644index 0000000..f117e4a--- /dev/null+++ b/contrib/btree_gin/btree_gin--1.1.sql@@ -0,0 +1,724 @@+/* contrib/btree_gin/btree_gin--1.0.sql */++-- complain if script is sourced in psql, rather than via CREATE EXTENSION+\echo Use "CREATE EXTENSION btree_gin" to load this file. \quit++CREATE FUNCTION gin_btree_consistent(internal, int2, anyelement, int4, internal, internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_value_int2(int2, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_int2(int2, int2, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_int2(int2, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS int2_ops+DEFAULT FOR TYPE int2 USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 btint2cmp(int2,int2),+ FUNCTION 2 gin_extract_value_int2(int2, internal),+ FUNCTION 3 gin_extract_query_int2(int2, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_int2(int2,int2,int2, internal),+STORAGE int2;++CREATE FUNCTION gin_extract_value_int4(int4, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_int4(int4, int4, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_int4(int4, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS int4_ops+DEFAULT FOR TYPE int4 USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 btint4cmp(int4,int4),+ FUNCTION 2 gin_extract_value_int4(int4, internal),+ FUNCTION 3 gin_extract_query_int4(int4, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_int4(int4,int4,int2, internal),+STORAGE int4;++CREATE FUNCTION gin_extract_value_int8(int8, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_int8(int8, int8, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_int8(int8, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS int8_ops+DEFAULT FOR TYPE int8 USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 btint8cmp(int8,int8),+ FUNCTION 2 gin_extract_value_int8(int8, internal),+ FUNCTION 3 gin_extract_query_int8(int8, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_int8(int8,int8,int2, internal),+STORAGE int8;++CREATE FUNCTION gin_extract_value_float4(float4, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_float4(float4, float4, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_float4(float4, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS float4_ops+DEFAULT FOR TYPE float4 USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 btfloat4cmp(float4,float4),+ FUNCTION 2 gin_extract_value_float4(float4, internal),+ FUNCTION 3 gin_extract_query_float4(float4, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_float4(float4,float4,int2, internal),+STORAGE float4;++CREATE FUNCTION gin_extract_value_float8(float8, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_float8(float8, float8, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_float8(float8, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS float8_ops+DEFAULT FOR TYPE float8 USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 btfloat8cmp(float8,float8),+ FUNCTION 2 gin_extract_value_float8(float8, internal),+ FUNCTION 3 gin_extract_query_float8(float8, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_float8(float8,float8,int2, internal),+STORAGE float8;++CREATE FUNCTION gin_extract_value_money(money, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_money(money, money, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_money(money, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS money_ops+DEFAULT FOR TYPE money USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 cash_cmp(money,money),+ FUNCTION 2 gin_extract_value_money(money, internal),+ FUNCTION 3 gin_extract_query_money(money, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_money(money,money,int2, internal),+STORAGE money;++CREATE FUNCTION gin_extract_value_oid(oid, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_oid(oid, oid, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_oid(oid, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS oid_ops+DEFAULT FOR TYPE oid USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 btoidcmp(oid,oid),+ FUNCTION 2 gin_extract_value_oid(oid, internal),+ FUNCTION 3 gin_extract_query_oid(oid, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_oid(oid,oid,int2, internal),+STORAGE oid;++CREATE FUNCTION gin_extract_value_timestamp(timestamp, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_timestamp(timestamp, timestamp, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_timestamp(timestamp, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS timestamp_ops+DEFAULT FOR TYPE timestamp USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 timestamp_cmp(timestamp,timestamp),+ FUNCTION 2 gin_extract_value_timestamp(timestamp, internal),+ FUNCTION 3 gin_extract_query_timestamp(timestamp, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_timestamp(timestamp,timestamp,int2, internal),+STORAGE timestamp;++CREATE FUNCTION gin_extract_value_timestamptz(timestamptz, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_timestamptz(timestamptz, timestamptz, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_timestamptz(timestamptz, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS timestamptz_ops+DEFAULT FOR TYPE timestamptz USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 timestamptz_cmp(timestamptz,timestamptz),+ FUNCTION 2 gin_extract_value_timestamptz(timestamptz, internal),+ FUNCTION 3 gin_extract_query_timestamptz(timestamptz, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_timestamptz(timestamptz,timestamptz,int2, internal),+STORAGE timestamptz;++CREATE FUNCTION gin_extract_value_time(time, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_time(time, time, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_time(time, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS time_ops+DEFAULT FOR TYPE time USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 time_cmp(time,time),+ FUNCTION 2 gin_extract_value_time(time, internal),+ FUNCTION 3 gin_extract_query_time(time, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_time(time,time,int2, internal),+STORAGE time;++CREATE FUNCTION gin_extract_value_timetz(timetz, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_timetz(timetz, timetz, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_timetz(timetz, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS timetz_ops+DEFAULT FOR TYPE timetz USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 timetz_cmp(timetz,timetz),+ FUNCTION 2 gin_extract_value_timetz(timetz, internal),+ FUNCTION 3 gin_extract_query_timetz(timetz, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_timetz(timetz,timetz,int2, internal),+STORAGE timetz;++CREATE FUNCTION gin_extract_value_date(date, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_date(date, date, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_date(date, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS date_ops+DEFAULT FOR TYPE date USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 date_cmp(date,date),+ FUNCTION 2 gin_extract_value_date(date, internal),+ FUNCTION 3 gin_extract_query_date(date, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_date(date,date,int2, internal),+STORAGE date;++CREATE FUNCTION gin_extract_value_interval(interval, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_interval(interval, interval, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_interval(interval, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS interval_ops+DEFAULT FOR TYPE interval USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 interval_cmp(interval,interval),+ FUNCTION 2 gin_extract_value_interval(interval, internal),+ FUNCTION 3 gin_extract_query_interval(interval, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_interval(interval,interval,int2, internal),+STORAGE interval;++CREATE FUNCTION gin_extract_value_macaddr(macaddr, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_macaddr(macaddr, macaddr, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_macaddr(macaddr, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS macaddr_ops+DEFAULT FOR TYPE macaddr USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 macaddr_cmp(macaddr,macaddr),+ FUNCTION 2 gin_extract_value_macaddr(macaddr, internal),+ FUNCTION 3 gin_extract_query_macaddr(macaddr, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_macaddr(macaddr,macaddr,int2, internal),+STORAGE macaddr;++CREATE FUNCTION gin_extract_value_inet(inet, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_inet(inet, inet, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_inet(inet, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS inet_ops+DEFAULT FOR TYPE inet USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 network_cmp(inet,inet),+ FUNCTION 2 gin_extract_value_inet(inet, internal),+ FUNCTION 3 gin_extract_query_inet(inet, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_inet(inet,inet,int2, internal),+STORAGE inet;++CREATE FUNCTION gin_extract_value_cidr(cidr, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_cidr(cidr, cidr, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_cidr(cidr, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS cidr_ops+DEFAULT FOR TYPE cidr USING gin+AS+ OPERATOR 1 <(inet,inet),+ OPERATOR 2 <=(inet,inet),+ OPERATOR 3 =(inet,inet),+ OPERATOR 4 >=(inet,inet),+ OPERATOR 5 >(inet,inet),+ FUNCTION 1 network_cmp(inet,inet),+ FUNCTION 2 gin_extract_value_cidr(cidr, internal),+ FUNCTION 3 gin_extract_query_cidr(cidr, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_cidr(cidr,cidr,int2, internal),+STORAGE cidr;++CREATE FUNCTION gin_extract_value_text(text, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_text(text, text, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_text(text, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS text_ops+DEFAULT FOR TYPE text USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 bttextcmp(text,text),+ FUNCTION 2 gin_extract_value_text(text, internal),+ FUNCTION 3 gin_extract_query_text(text, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_text(text,text,int2, internal),+STORAGE text;++CREATE OPERATOR CLASS varchar_ops+DEFAULT FOR TYPE varchar USING gin+AS+ OPERATOR 1 <(text,text),+ OPERATOR 2 <=(text,text),+ OPERATOR 3 =(text,text),+ OPERATOR 4 >=(text,text),+ OPERATOR 5 >(text,text),+ FUNCTION 1 bttextcmp(text,text),+ FUNCTION 2 gin_extract_value_text(text, internal),+ FUNCTION 3 gin_extract_query_text(text, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_text(text,text,int2, internal),+STORAGE varchar;++CREATE FUNCTION gin_extract_value_char("char", internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_char("char", "char", int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_char("char", internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS char_ops+DEFAULT FOR TYPE "char" USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 btcharcmp("char","char"),+ FUNCTION 2 gin_extract_value_char("char", internal),+ FUNCTION 3 gin_extract_query_char("char", internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_char("char","char",int2, internal),+STORAGE "char";++CREATE FUNCTION gin_extract_value_bytea(bytea, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_bytea(bytea, bytea, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_bytea(bytea, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS bytea_ops+DEFAULT FOR TYPE bytea USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 byteacmp(bytea,bytea),+ FUNCTION 2 gin_extract_value_bytea(bytea, internal),+ FUNCTION 3 gin_extract_query_bytea(bytea, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_bytea(bytea,bytea,int2, internal),+STORAGE bytea;++CREATE FUNCTION gin_extract_value_bit(bit, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_bit(bit, bit, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_bit(bit, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS bit_ops+DEFAULT FOR TYPE bit USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 bitcmp(bit,bit),+ FUNCTION 2 gin_extract_value_bit(bit, internal),+ FUNCTION 3 gin_extract_query_bit(bit, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_bit(bit,bit,int2, internal),+STORAGE bit;++CREATE FUNCTION gin_extract_value_varbit(varbit, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_varbit(varbit, varbit, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_varbit(varbit, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS varbit_ops+DEFAULT FOR TYPE varbit USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 varbitcmp(varbit,varbit),+ FUNCTION 2 gin_extract_value_varbit(varbit, internal),+ FUNCTION 3 gin_extract_query_varbit(varbit, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_varbit(varbit,varbit,int2, internal),+STORAGE varbit;++CREATE FUNCTION gin_extract_value_numeric(numeric, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_numeric(numeric, numeric, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_numeric(numeric, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_numeric_cmp(numeric, numeric)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS numeric_ops+DEFAULT FOR TYPE numeric USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 gin_numeric_cmp(numeric,numeric),+ FUNCTION 2 gin_extract_value_numeric(numeric, internal),+ FUNCTION 3 gin_extract_query_numeric(numeric, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_numeric(numeric,numeric,int2, internal),+STORAGE numeric;++CREATE FUNCTION gin_extract_value_anyenum(anyenum, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_compare_prefix_anyenum(anyenum, anyenum, int2, internal)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_extract_query_anyenum(anyenum, internal, int2, internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE FUNCTION gin_enum_cmp(anyenum, anyenum)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C STRICT IMMUTABLE;++CREATE OPERATOR CLASS enum_ops+DEFAULT FOR TYPE anyenum USING gin+AS+ OPERATOR 1 <,+ OPERATOR 2 <=,+ OPERATOR 3 =,+ OPERATOR 4 >=,+ OPERATOR 5 >,+ FUNCTION 1 gin_enum_cmp(anyenum,anyenum),+ FUNCTION 2 gin_extract_value_anyenum(anyenum, internal),+ FUNCTION 3 gin_extract_query_anyenum(anyenum, internal, int2, internal, internal),+ FUNCTION 4 gin_btree_consistent(internal, int2, anyelement, int4, internal, internal),+ FUNCTION 5 gin_compare_prefix_anyenum(anyenum,anyenum,int2, internal),+STORAGE oid;diff --git a/contrib/btree_gin/btree_gin.c b/contrib/btree_gin/btree_gin.cindex f74e912..0ea3d70 100644--- a/contrib/btree_gin/btree_gin.c+++ b/contrib/btree_gin/btree_gin.c@@ -422,3 +422,47 @@ leftmostvalue_numeric(void)
}
GIN_SUPPORT(numeric, true, leftmostvalue_numeric, gin_numeric_cmp)
++/*+ * Use a similar trick to that used for numeric for enums, since we don't+ * actually know the leftmost value of any enum without knowing the concrete+ * type, so we use a dummy leftmost value of InvalidOid.+ */+++#define ENUM_IS_LEFTMOST(x) ((x) == InvalidOid)++PG_FUNCTION_INFO_V1(gin_enum_cmp);++Datum+gin_enum_cmp(PG_FUNCTION_ARGS)+{+ Oid a = PG_GETARG_OID(0);+ Oid b = PG_GETARG_OID(1);+ int res = 0;++ if (ENUM_IS_LEFTMOST(a))+ {+ res = (ENUM_IS_LEFTMOST(b)) ? 0 : -1;+ }+ else if (ENUM_IS_LEFTMOST(b))+ {+ res = 1;+ }+ else+ {+ res = DatumGetInt32(DirectFunctionCall2(enum_cmp,+ ObjectIdGetDatum(a),+ ObjectIdGetDatum(b)));+ }++ PG_RETURN_INT32(res);+}++static Datum+leftmostvalue_enum(void)+{+ return ObjectIdGetDatum(InvalidOid);+}++GIN_SUPPORT(anyenum, false, leftmostvalue_enum, gin_enum_cmp)diff --git a/contrib/btree_gin/btree_gin.control b/contrib/btree_gin/btree_gin.controlindex 3b2cb2d..d96436e 100644--- a/contrib/btree_gin/btree_gin.control+++ b/contrib/btree_gin/btree_gin.control@@ -1,5 +1,5 @@
# btree_gin extension
comment = 'support for indexing common datatypes in GIN'
-default_version = '1.0'+default_version = '1.1'
module_pathname = '$libdir/btree_gin'
relocatable = true
diff --git a/contrib/btree_gin/expected/enum.out b/contrib/btree_gin/expected/enum.outnew file mode 100644index 0000000..4e02b2d--- /dev/null+++ b/contrib/btree_gin/expected/enum.out@@ -0,0 +1,58 @@+set enable_seqscan=off;+CREATE TYPE rainbow AS ENUM ('r','o','y','g','b','i','v');+CREATE TABLE test_enum (+ i rainbow+);+INSERT INTO test_enum VALUES ('v'),('y'),('r'),('g'),('o'),('i'),('b');+CREATE INDEX idx_enum ON test_enum USING gin (i);+SELECT * FROM test_enum WHERE i<'g'::rainbow ORDER BY i;+ i +---+ r+ o+ y+(3 rows)++SELECT * FROM test_enum WHERE i<='g'::rainbow ORDER BY i;+ i +---+ r+ o+ y+ g+(4 rows)++SELECT * FROM test_enum WHERE i='g'::rainbow ORDER BY i;+ i +---+ g+(1 row)++SELECT * FROM test_enum WHERE i>='g'::rainbow ORDER BY i;+ i +---+ g+ b+ i+ v+(4 rows)++SELECT * FROM test_enum WHERE i>'g'::rainbow ORDER BY i;+ i +---+ b+ i+ v+(3 rows)++explain (costs off) SELECT * FROM test_enum WHERE i>='g'::rainbow ORDER BY i;+ QUERY PLAN +-----------------------------------------------+ Sort+ Sort Key: i+ -> Bitmap Heap Scan on test_enum+ Recheck Cond: (i >= 'g'::rainbow)+ -> Bitmap Index Scan on idx_enum+ Index Cond: (i >= 'g'::rainbow)+(6 rows)+diff --git a/contrib/btree_gin/sql/enum.sql b/contrib/btree_gin/sql/enum.sqlnew file mode 100644index 0000000..9ee8f4c--- /dev/null+++ b/contrib/btree_gin/sql/enum.sql@@ -0,0 +1,19 @@+set enable_seqscan=off;++CREATE TYPE rainbow AS ENUM ('r','o','y','g','b','i','v');++CREATE TABLE test_enum (+ i rainbow+);++INSERT INTO test_enum VALUES ('v'),('y'),('r'),('g'),('o'),('i'),('b');++CREATE INDEX idx_enum ON test_enum USING gin (i);++SELECT * FROM test_enum WHERE i<'g'::rainbow ORDER BY i;+SELECT * FROM test_enum WHERE i<='g'::rainbow ORDER BY i;+SELECT * FROM test_enum WHERE i='g'::rainbow ORDER BY i;+SELECT * FROM test_enum WHERE i>='g'::rainbow ORDER BY i;+SELECT * FROM test_enum WHERE i>'g'::rainbow ORDER BY i;++explain (costs off) SELECT * FROM test_enum WHERE i>='g'::rainbow ORDER BY i;diff --git a/contrib/btree_gist/Makefile b/contrib/btree_gist/Makefileindex a4b2cc7..ec38c4f 100644--- a/contrib/btree_gist/Makefile+++ b/contrib/btree_gist/Makefile@@ -6,16 +6,16 @@ OBJS = btree_gist.o btree_utils_num.o btree_utils_var.o btree_int2.o \
btree_int4.o btree_int8.o btree_float4.o btree_float8.o btree_cash.o \
btree_oid.o btree_ts.o btree_time.o btree_date.o btree_interval.o \
btree_macaddr.o btree_inet.o btree_text.o btree_bytea.o btree_bit.o \
- btree_numeric.o $(WIN32RES)+ btree_numeric.o btree_enum.o $(WIN32RES)
EXTENSION = btree_gist
-DATA = btree_gist--1.1.sql btree_gist--unpackaged--1.0.sql \- btree_gist--1.0--1.1.sql+DATA = btree_gist--1.2.sql btree_gist--unpackaged--1.0.sql \+ btree_gist--1.0--1.1.sql btree_gist--1.1--1.2.sql
PGFILEDESC = "btree_gist - B-tree equivalent GiST operator classes"
REGRESS = init int2 int4 int8 float4 float8 cash oid timestamp timestamptz \
time timetz date interval macaddr inet cidr text varchar char bytea \
- bit varbit numeric not_equal+ bit varbit numeric enum not_equal
SHLIB_LINK += $(filter -lm, $(LIBS))
diff --git a/contrib/btree_gist/btree_enum.c b/contrib/btree_gist/btree_enum.cnew file mode 100644index 0000000..6126962--- /dev/null+++ b/contrib/btree_gist/btree_enum.c@@ -0,0 +1,186 @@+/*+ * contrib/btree_gist/btree_enum.c+ */+#include "postgres.h"+#include "utils/builtins.h"++#include "btree_gist.h"+#include "btree_utils_num.h"++/* enums are really Oids, so we just use the same structure */++typedef struct+{+ Oid lower;+ Oid upper;+} oidKEY;++/*+** enum ops+*/+PG_FUNCTION_INFO_V1(gbt_enum_compress);+PG_FUNCTION_INFO_V1(gbt_enum_fetch);+PG_FUNCTION_INFO_V1(gbt_enum_union);+PG_FUNCTION_INFO_V1(gbt_enum_picksplit);+PG_FUNCTION_INFO_V1(gbt_enum_consistent);+PG_FUNCTION_INFO_V1(gbt_enum_penalty);+PG_FUNCTION_INFO_V1(gbt_enum_same);+++static bool+gbt_enumgt(const void *a, const void *b)+{+ return DatumGetBool(+ DirectFunctionCall2(enum_gt, ObjectIdGetDatum(*((const Oid *) a)), ObjectIdGetDatum(*((const Oid *) b)))+ );+}+static bool+gbt_enumge(const void *a, const void *b)+{+ return DatumGetBool(+ DirectFunctionCall2(enum_ge, ObjectIdGetDatum(*((const Oid *) a)), ObjectIdGetDatum(*((const Oid *) b)))+ );+}+static bool+gbt_enumeq(const void *a, const void *b)+{+ return (*((const Oid *) a) == *((const Oid *) b));+}+static bool+gbt_enumle(const void *a, const void *b)+{+ return DatumGetBool(+ DirectFunctionCall2(enum_le, ObjectIdGetDatum(*((const Oid *) a)), ObjectIdGetDatum(*((const Oid *) b)))+ );+}+static bool+gbt_enumlt(const void *a, const void *b)+{+ return DatumGetBool(+ DirectFunctionCall2(enum_lt, ObjectIdGetDatum(*((const Oid *) a)), ObjectIdGetDatum(*((const Oid *) b)))+ );+}++static int+gbt_enumkey_cmp(const void *a, const void *b)+{+ oidKEY *ia = (oidKEY *) (((const Nsrt *) a)->t);+ oidKEY *ib = (oidKEY *) (((const Nsrt *) b)->t);++ if (ia->lower == ib->lower)+ {+ if (ia->upper == ib->upper)+ return 0;++ return DatumGetInt32(+ DirectFunctionCall2(enum_cmp, ObjectIdGetDatum(ia->upper), ObjectIdGetDatum(ib->upper))+ );+ }++ return DatumGetInt32(+ DirectFunctionCall2(enum_cmp, ObjectIdGetDatum(ia->lower), ObjectIdGetDatum(ib->lower))+ );+}++static const gbtree_ninfo tinfo =+{+ gbt_t_enum,+ sizeof(Oid),+ 8, /* sizeof(gbtreekey8) */+ gbt_enumgt,+ gbt_enumge,+ gbt_enumeq,+ gbt_enumle,+ gbt_enumlt,+ gbt_enumkey_cmp,+ NULL /* no KNN support at least for now */+};+++/**************************************************+ * Enum ops+ **************************************************/+++Datum+gbt_enum_compress(PG_FUNCTION_ARGS)+{+ GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);++ PG_RETURN_POINTER(gbt_num_compress(entry, &tinfo));+}++Datum+gbt_enum_fetch(PG_FUNCTION_ARGS)+{+ GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);++ PG_RETURN_POINTER(gbt_num_fetch(entry, &tinfo));+}++Datum+gbt_enum_consistent(PG_FUNCTION_ARGS)+{+ GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);+ Oid query = PG_GETARG_OID(1);+ StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);++ /* Oid subtype = PG_GETARG_OID(3); */+ bool *recheck = (bool *) PG_GETARG_POINTER(4);+ oidKEY *kkk = (oidKEY *) DatumGetPointer(entry->key);+ GBT_NUMKEY_R key;++ /* All cases served by this function are exact */+ *recheck = false;++ key.lower = (GBT_NUMKEY *) &kkk->lower;+ key.upper = (GBT_NUMKEY *) &kkk->upper;++ PG_RETURN_BOOL(+ gbt_num_consistent(&key, (void *) &query, &strategy, GIST_LEAF(entry), &tinfo)+ );+}++Datum+gbt_enum_union(PG_FUNCTION_ARGS)+{+ GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);+ void *out = palloc(sizeof(oidKEY));++ *(int *) PG_GETARG_POINTER(1) = sizeof(oidKEY);+ PG_RETURN_POINTER(gbt_num_union((void *) out, entryvec, &tinfo));+}+++Datum+gbt_enum_penalty(PG_FUNCTION_ARGS)+{+ oidKEY *origentry = (oidKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);+ oidKEY *newentry = (oidKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);+ float *result = (float *) PG_GETARG_POINTER(2);++ penalty_num(result, origentry->lower, origentry->upper, newentry->lower, newentry->upper);++ PG_RETURN_POINTER(result);+}++Datum+gbt_enum_picksplit(PG_FUNCTION_ARGS)+{+ PG_RETURN_POINTER(gbt_num_picksplit(+ (GistEntryVector *) PG_GETARG_POINTER(0),+ (GIST_SPLITVEC *) PG_GETARG_POINTER(1),+ &tinfo+ ));+}++Datum+gbt_enum_same(PG_FUNCTION_ARGS)+{+ oidKEY *b1 = (oidKEY *) PG_GETARG_POINTER(0);+ oidKEY *b2 = (oidKEY *) PG_GETARG_POINTER(1);+ bool *result = (bool *) PG_GETARG_POINTER(2);++ *result = gbt_num_same((void *) b1, (void *) b2, &tinfo);+ PG_RETURN_POINTER(result);+}diff --git a/contrib/btree_gist/btree_gist--1.1--1.2.sql b/contrib/btree_gist/btree_gist--1.1--1.2.sqlnew file mode 100644index 0000000..f3e8d90--- /dev/null+++ b/contrib/btree_gist/btree_gist--1.1--1.2.sql@@ -0,0 +1,69 @@+/* contrib/btree_gist/btree_gist--1.1--1.2.sql */++-- complain if script is sourced in psql, rather than via CREATE EXTENSION+\echo Use "ALTER EXTENSION btree_gist UPDATE TO '1.2'" to load this file. \quit++--+--+--+-- enum ops+--+--+--+-- define the GiST support methods+CREATE FUNCTION gbt_enum_consistent(internal,anyenum,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_enum_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_enum_fetch(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_enum_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_enum_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_enum_union(internal, internal)+RETURNS gbtreekey4+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_enum_same(gbtreekey8, gbtreekey8, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_enum_ops+DEFAULT FOR TYPE anyenum USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_enum_consistent (internal, anyenum, int2, oid, internal),+ FUNCTION 2 gbt_enum_union (internal, internal),+ FUNCTION 3 gbt_enum_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_enum_penalty (internal, internal, internal),+ FUNCTION 6 gbt_enum_picksplit (internal, internal),+ FUNCTION 7 gbt_enum_same (gbtreekey8, gbtreekey8, internal),+ STORAGE gbtreekey8;++ALTER OPERATOR FAMILY gist_enum_ops USING gist ADD+ OPERATOR 6 <> (anyenum, anyenum) ,+ FUNCTION 9 (anyenum, anyenum) gbt_enum_fetch (internal) ;diff --git a/contrib/btree_gist/btree_gist--1.1.sql b/contrib/btree_gist/btree_gist--1.1.sqldeleted file mode 100644index f0a4682..0000000--- a/contrib/btree_gist/btree_gist--1.1.sql+++ /dev/null@@ -1,1570 +0,0 @@-/* contrib/btree_gist/btree_gist--1.0.sql */---- complain if script is sourced in psql, rather than via CREATE EXTENSION-\echo Use "CREATE EXTENSION btree_gist" to load this file. \quit--CREATE FUNCTION gbtreekey4_in(cstring)-RETURNS gbtreekey4-AS 'MODULE_PATHNAME', 'gbtreekey_in'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbtreekey4_out(gbtreekey4)-RETURNS cstring-AS 'MODULE_PATHNAME', 'gbtreekey_out'-LANGUAGE C IMMUTABLE STRICT;--CREATE TYPE gbtreekey4 (- INTERNALLENGTH = 4,- INPUT = gbtreekey4_in,- OUTPUT = gbtreekey4_out-);--CREATE FUNCTION gbtreekey8_in(cstring)-RETURNS gbtreekey8-AS 'MODULE_PATHNAME', 'gbtreekey_in'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbtreekey8_out(gbtreekey8)-RETURNS cstring-AS 'MODULE_PATHNAME', 'gbtreekey_out'-LANGUAGE C IMMUTABLE STRICT;--CREATE TYPE gbtreekey8 (- INTERNALLENGTH = 8,- INPUT = gbtreekey8_in,- OUTPUT = gbtreekey8_out-);--CREATE FUNCTION gbtreekey16_in(cstring)-RETURNS gbtreekey16-AS 'MODULE_PATHNAME', 'gbtreekey_in'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbtreekey16_out(gbtreekey16)-RETURNS cstring-AS 'MODULE_PATHNAME', 'gbtreekey_out'-LANGUAGE C IMMUTABLE STRICT;--CREATE TYPE gbtreekey16 (- INTERNALLENGTH = 16,- INPUT = gbtreekey16_in,- OUTPUT = gbtreekey16_out-);--CREATE FUNCTION gbtreekey32_in(cstring)-RETURNS gbtreekey32-AS 'MODULE_PATHNAME', 'gbtreekey_in'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbtreekey32_out(gbtreekey32)-RETURNS cstring-AS 'MODULE_PATHNAME', 'gbtreekey_out'-LANGUAGE C IMMUTABLE STRICT;--CREATE TYPE gbtreekey32 (- INTERNALLENGTH = 32,- INPUT = gbtreekey32_in,- OUTPUT = gbtreekey32_out-);--CREATE FUNCTION gbtreekey_var_in(cstring)-RETURNS gbtreekey_var-AS 'MODULE_PATHNAME', 'gbtreekey_in'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbtreekey_var_out(gbtreekey_var)-RETURNS cstring-AS 'MODULE_PATHNAME', 'gbtreekey_out'-LANGUAGE C IMMUTABLE STRICT;--CREATE TYPE gbtreekey_var (- INTERNALLENGTH = VARIABLE,- INPUT = gbtreekey_var_in,- OUTPUT = gbtreekey_var_out,- STORAGE = EXTENDED-);----distance operators--CREATE FUNCTION cash_dist(money, money)-RETURNS money-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE OPERATOR <-> (- LEFTARG = money,- RIGHTARG = money,- PROCEDURE = cash_dist,- COMMUTATOR = '<->'-);--CREATE FUNCTION date_dist(date, date)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE OPERATOR <-> (- LEFTARG = date,- RIGHTARG = date,- PROCEDURE = date_dist,- COMMUTATOR = '<->'-);--CREATE FUNCTION float4_dist(float4, float4)-RETURNS float4-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE OPERATOR <-> (- LEFTARG = float4,- RIGHTARG = float4,- PROCEDURE = float4_dist,- COMMUTATOR = '<->'-);--CREATE FUNCTION float8_dist(float8, float8)-RETURNS float8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE OPERATOR <-> (- LEFTARG = float8,- RIGHTARG = float8,- PROCEDURE = float8_dist,- COMMUTATOR = '<->'-);--CREATE FUNCTION int2_dist(int2, int2)-RETURNS int2-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE OPERATOR <-> (- LEFTARG = int2,- RIGHTARG = int2,- PROCEDURE = int2_dist,- COMMUTATOR = '<->'-);--CREATE FUNCTION int4_dist(int4, int4)-RETURNS int4-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE OPERATOR <-> (- LEFTARG = int4,- RIGHTARG = int4,- PROCEDURE = int4_dist,- COMMUTATOR = '<->'-);--CREATE FUNCTION int8_dist(int8, int8)-RETURNS int8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE OPERATOR <-> (- LEFTARG = int8,- RIGHTARG = int8,- PROCEDURE = int8_dist,- COMMUTATOR = '<->'-);--CREATE FUNCTION interval_dist(interval, interval)-RETURNS interval-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE OPERATOR <-> (- LEFTARG = interval,- RIGHTARG = interval,- PROCEDURE = interval_dist,- COMMUTATOR = '<->'-);--CREATE FUNCTION oid_dist(oid, oid)-RETURNS oid-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE OPERATOR <-> (- LEFTARG = oid,- RIGHTARG = oid,- PROCEDURE = oid_dist,- COMMUTATOR = '<->'-);--CREATE FUNCTION time_dist(time, time)-RETURNS interval-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE OPERATOR <-> (- LEFTARG = time,- RIGHTARG = time,- PROCEDURE = time_dist,- COMMUTATOR = '<->'-);--CREATE FUNCTION ts_dist(timestamp, timestamp)-RETURNS interval-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE OPERATOR <-> (- LEFTARG = timestamp,- RIGHTARG = timestamp,- PROCEDURE = ts_dist,- COMMUTATOR = '<->'-);--CREATE FUNCTION tstz_dist(timestamptz, timestamptz)-RETURNS interval-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE OPERATOR <-> (- LEFTARG = timestamptz,- RIGHTARG = timestamptz,- PROCEDURE = tstz_dist,- COMMUTATOR = '<->'-);-------------- oid ops------------ define the GiST support methods-CREATE FUNCTION gbt_oid_consistent(internal,oid,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_oid_distance(internal,oid,int2,oid,internal)-RETURNS float8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_oid_fetch(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_oid_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_decompress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_var_decompress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_var_fetch(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_oid_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_oid_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_oid_union(internal, internal)-RETURNS gbtreekey8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_oid_same(gbtreekey8, gbtreekey8, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_oid_ops-DEFAULT FOR TYPE oid USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_oid_consistent (internal, oid, int2, oid, internal),- FUNCTION 2 gbt_oid_union (internal, internal),- FUNCTION 3 gbt_oid_compress (internal),- FUNCTION 4 gbt_decompress (internal),- FUNCTION 5 gbt_oid_penalty (internal, internal, internal),- FUNCTION 6 gbt_oid_picksplit (internal, internal),- FUNCTION 7 gbt_oid_same (gbtreekey8, gbtreekey8, internal),- STORAGE gbtreekey8;---- Add operators that are new in 9.1. We do it like this, leaving them--- "loose" in the operator family rather than bound into the opclass, because--- that's the only state that can be reproduced during an upgrade from 9.0.-ALTER OPERATOR FAMILY gist_oid_ops USING gist ADD- OPERATOR 6 <> (oid, oid) ,- OPERATOR 15 <-> (oid, oid) FOR ORDER BY pg_catalog.oid_ops ,- FUNCTION 8 (oid, oid) gbt_oid_distance (internal, oid, int2, oid, internal) ,- -- Also add support function for index-only-scans, added in 9.5.- FUNCTION 9 (oid, oid) gbt_oid_fetch (internal) ;-------------- int2 ops------------ define the GiST support methods-CREATE FUNCTION gbt_int2_consistent(internal,int2,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int2_distance(internal,int2,int2,oid,internal)-RETURNS float8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int2_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int2_fetch(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int2_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int2_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int2_union(internal, internal)-RETURNS gbtreekey4-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int2_same(gbtreekey4, gbtreekey4, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_int2_ops-DEFAULT FOR TYPE int2 USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_int2_consistent (internal, int2, int2, oid, internal),- FUNCTION 2 gbt_int2_union (internal, internal),- FUNCTION 3 gbt_int2_compress (internal),- FUNCTION 4 gbt_decompress (internal),- FUNCTION 5 gbt_int2_penalty (internal, internal, internal),- FUNCTION 6 gbt_int2_picksplit (internal, internal),- FUNCTION 7 gbt_int2_same (gbtreekey4, gbtreekey4, internal),- STORAGE gbtreekey4;--ALTER OPERATOR FAMILY gist_int2_ops USING gist ADD- OPERATOR 6 <> (int2, int2) ,- OPERATOR 15 <-> (int2, int2) FOR ORDER BY pg_catalog.integer_ops ,- FUNCTION 8 (int2, int2) gbt_int2_distance (internal, int2, int2, oid, internal) ,- FUNCTION 9 (int2, int2) gbt_int2_fetch (internal) ;------------- int4 ops------------ define the GiST support methods-CREATE FUNCTION gbt_int4_consistent(internal,int4,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int4_distance(internal,int4,int2,oid,internal)-RETURNS float8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int4_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int4_fetch(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int4_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int4_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int4_union(internal, internal)-RETURNS gbtreekey8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int4_same(gbtreekey8, gbtreekey8, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_int4_ops-DEFAULT FOR TYPE int4 USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_int4_consistent (internal, int4, int2, oid, internal),- FUNCTION 2 gbt_int4_union (internal, internal),- FUNCTION 3 gbt_int4_compress (internal),- FUNCTION 4 gbt_decompress (internal),- FUNCTION 5 gbt_int4_penalty (internal, internal, internal),- FUNCTION 6 gbt_int4_picksplit (internal, internal),- FUNCTION 7 gbt_int4_same (gbtreekey8, gbtreekey8, internal),- STORAGE gbtreekey8;--ALTER OPERATOR FAMILY gist_int4_ops USING gist ADD- OPERATOR 6 <> (int4, int4) ,- OPERATOR 15 <-> (int4, int4) FOR ORDER BY pg_catalog.integer_ops ,- FUNCTION 8 (int4, int4) gbt_int4_distance (internal, int4, int2, oid, internal) ,- FUNCTION 9 (int4, int4) gbt_int4_fetch (internal) ;-------------- int8 ops------------ define the GiST support methods-CREATE FUNCTION gbt_int8_consistent(internal,int8,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int8_distance(internal,int8,int2,oid,internal)-RETURNS float8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int8_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int8_fetch(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int8_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int8_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int8_union(internal, internal)-RETURNS gbtreekey16-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_int8_same(gbtreekey16, gbtreekey16, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_int8_ops-DEFAULT FOR TYPE int8 USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_int8_consistent (internal, int8, int2, oid, internal),- FUNCTION 2 gbt_int8_union (internal, internal),- FUNCTION 3 gbt_int8_compress (internal),- FUNCTION 4 gbt_decompress (internal),- FUNCTION 5 gbt_int8_penalty (internal, internal, internal),- FUNCTION 6 gbt_int8_picksplit (internal, internal),- FUNCTION 7 gbt_int8_same (gbtreekey16, gbtreekey16, internal),- STORAGE gbtreekey16;--ALTER OPERATOR FAMILY gist_int8_ops USING gist ADD- OPERATOR 6 <> (int8, int8) ,- OPERATOR 15 <-> (int8, int8) FOR ORDER BY pg_catalog.integer_ops ,- FUNCTION 8 (int8, int8) gbt_int8_distance (internal, int8, int2, oid, internal) ,- FUNCTION 9 (int8, int8) gbt_int8_fetch (internal) ;------------- float4 ops------------ define the GiST support methods-CREATE FUNCTION gbt_float4_consistent(internal,float4,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_float4_distance(internal,float4,int2,oid,internal)-RETURNS float8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_float4_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_float4_fetch(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_float4_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_float4_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_float4_union(internal, internal)-RETURNS gbtreekey8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_float4_same(gbtreekey8, gbtreekey8, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_float4_ops-DEFAULT FOR TYPE float4 USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_float4_consistent (internal, float4, int2, oid, internal),- FUNCTION 2 gbt_float4_union (internal, internal),- FUNCTION 3 gbt_float4_compress (internal),- FUNCTION 4 gbt_decompress (internal),- FUNCTION 5 gbt_float4_penalty (internal, internal, internal),- FUNCTION 6 gbt_float4_picksplit (internal, internal),- FUNCTION 7 gbt_float4_same (gbtreekey8, gbtreekey8, internal),- STORAGE gbtreekey8;--ALTER OPERATOR FAMILY gist_float4_ops USING gist ADD- OPERATOR 6 <> (float4, float4) ,- OPERATOR 15 <-> (float4, float4) FOR ORDER BY pg_catalog.float_ops ,- FUNCTION 8 (float4, float4) gbt_float4_distance (internal, float4, int2, oid, internal) ,- FUNCTION 9 (float4, float4) gbt_float4_fetch (internal) ;------------- float8 ops------------ define the GiST support methods-CREATE FUNCTION gbt_float8_consistent(internal,float8,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_float8_distance(internal,float8,int2,oid,internal)-RETURNS float8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_float8_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_float8_fetch(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_float8_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_float8_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_float8_union(internal, internal)-RETURNS gbtreekey16-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_float8_same(gbtreekey16, gbtreekey16, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_float8_ops-DEFAULT FOR TYPE float8 USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_float8_consistent (internal, float8, int2, oid, internal),- FUNCTION 2 gbt_float8_union (internal, internal),- FUNCTION 3 gbt_float8_compress (internal),- FUNCTION 4 gbt_decompress (internal),- FUNCTION 5 gbt_float8_penalty (internal, internal, internal),- FUNCTION 6 gbt_float8_picksplit (internal, internal),- FUNCTION 7 gbt_float8_same (gbtreekey16, gbtreekey16, internal),- STORAGE gbtreekey16;--ALTER OPERATOR FAMILY gist_float8_ops USING gist ADD- OPERATOR 6 <> (float8, float8) ,- OPERATOR 15 <-> (float8, float8) FOR ORDER BY pg_catalog.float_ops ,- FUNCTION 8 (float8, float8) gbt_float8_distance (internal, float8, int2, oid, internal) ,- FUNCTION 9 (float8, float8) gbt_float8_fetch (internal) ;------------- timestamp ops-----------CREATE FUNCTION gbt_ts_consistent(internal,timestamp,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_ts_distance(internal,timestamp,int2,oid,internal)-RETURNS float8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_tstz_consistent(internal,timestamptz,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_tstz_distance(internal,timestamptz,int2,oid,internal)-RETURNS float8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_ts_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_tstz_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_ts_fetch(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_ts_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_ts_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_ts_union(internal, internal)-RETURNS gbtreekey16-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_ts_same(gbtreekey16, gbtreekey16, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_timestamp_ops-DEFAULT FOR TYPE timestamp USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_ts_consistent (internal, timestamp, int2, oid, internal),- FUNCTION 2 gbt_ts_union (internal, internal),- FUNCTION 3 gbt_ts_compress (internal),- FUNCTION 4 gbt_decompress (internal),- FUNCTION 5 gbt_ts_penalty (internal, internal, internal),- FUNCTION 6 gbt_ts_picksplit (internal, internal),- FUNCTION 7 gbt_ts_same (gbtreekey16, gbtreekey16, internal),- STORAGE gbtreekey16;--ALTER OPERATOR FAMILY gist_timestamp_ops USING gist ADD- OPERATOR 6 <> (timestamp, timestamp) ,- OPERATOR 15 <-> (timestamp, timestamp) FOR ORDER BY pg_catalog.interval_ops ,- FUNCTION 8 (timestamp, timestamp) gbt_ts_distance (internal, timestamp, int2, oid, internal) ,- FUNCTION 9 (timestamp, timestamp) gbt_ts_fetch (internal) ;---- Create the operator class-CREATE OPERATOR CLASS gist_timestamptz_ops-DEFAULT FOR TYPE timestamptz USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_tstz_consistent (internal, timestamptz, int2, oid, internal),- FUNCTION 2 gbt_ts_union (internal, internal),- FUNCTION 3 gbt_tstz_compress (internal),- FUNCTION 4 gbt_decompress (internal),- FUNCTION 5 gbt_ts_penalty (internal, internal, internal),- FUNCTION 6 gbt_ts_picksplit (internal, internal),- FUNCTION 7 gbt_ts_same (gbtreekey16, gbtreekey16, internal),- STORAGE gbtreekey16;--ALTER OPERATOR FAMILY gist_timestamptz_ops USING gist ADD- OPERATOR 6 <> (timestamptz, timestamptz) ,- OPERATOR 15 <-> (timestamptz, timestamptz) FOR ORDER BY pg_catalog.interval_ops ,- FUNCTION 8 (timestamptz, timestamptz) gbt_tstz_distance (internal, timestamptz, int2, oid, internal) ,- FUNCTION 9 (timestamptz, timestamptz) gbt_ts_fetch (internal) ;------------- time ops-----------CREATE FUNCTION gbt_time_consistent(internal,time,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_time_distance(internal,time,int2,oid,internal)-RETURNS float8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_timetz_consistent(internal,timetz,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_time_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_timetz_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_time_fetch(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_time_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_time_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_time_union(internal, internal)-RETURNS gbtreekey16-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_time_same(gbtreekey16, gbtreekey16, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_time_ops-DEFAULT FOR TYPE time USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_time_consistent (internal, time, int2, oid, internal),- FUNCTION 2 gbt_time_union (internal, internal),- FUNCTION 3 gbt_time_compress (internal),- FUNCTION 4 gbt_decompress (internal),- FUNCTION 5 gbt_time_penalty (internal, internal, internal),- FUNCTION 6 gbt_time_picksplit (internal, internal),- FUNCTION 7 gbt_time_same (gbtreekey16, gbtreekey16, internal),- STORAGE gbtreekey16;--ALTER OPERATOR FAMILY gist_time_ops USING gist ADD- OPERATOR 6 <> (time, time) ,- OPERATOR 15 <-> (time, time) FOR ORDER BY pg_catalog.interval_ops ,- FUNCTION 8 (time, time) gbt_time_distance (internal, time, int2, oid, internal) ,- FUNCTION 9 (time, time) gbt_time_fetch (internal) ;---CREATE OPERATOR CLASS gist_timetz_ops-DEFAULT FOR TYPE timetz USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_timetz_consistent (internal, timetz, int2, oid, internal),- FUNCTION 2 gbt_time_union (internal, internal),- FUNCTION 3 gbt_timetz_compress (internal),- FUNCTION 4 gbt_decompress (internal),- FUNCTION 5 gbt_time_penalty (internal, internal, internal),- FUNCTION 6 gbt_time_picksplit (internal, internal),- FUNCTION 7 gbt_time_same (gbtreekey16, gbtreekey16, internal),- STORAGE gbtreekey16;--ALTER OPERATOR FAMILY gist_timetz_ops USING gist ADD- OPERATOR 6 <> (timetz, timetz) ;- -- no 'fetch' function, as the compress function is lossy.-------------- date ops-----------CREATE FUNCTION gbt_date_consistent(internal,date,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_date_distance(internal,date,int2,oid,internal)-RETURNS float8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_date_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_date_fetch(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_date_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_date_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_date_union(internal, internal)-RETURNS gbtreekey8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_date_same(gbtreekey8, gbtreekey8, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_date_ops-DEFAULT FOR TYPE date USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_date_consistent (internal, date, int2, oid, internal),- FUNCTION 2 gbt_date_union (internal, internal),- FUNCTION 3 gbt_date_compress (internal),- FUNCTION 4 gbt_decompress (internal),- FUNCTION 5 gbt_date_penalty (internal, internal, internal),- FUNCTION 6 gbt_date_picksplit (internal, internal),- FUNCTION 7 gbt_date_same (gbtreekey8, gbtreekey8, internal),- STORAGE gbtreekey8;--ALTER OPERATOR FAMILY gist_date_ops USING gist ADD- OPERATOR 6 <> (date, date) ,- OPERATOR 15 <-> (date, date) FOR ORDER BY pg_catalog.integer_ops ,- FUNCTION 8 (date, date) gbt_date_distance (internal, date, int2, oid, internal) ,- FUNCTION 9 (date, date) gbt_date_fetch (internal) ;-------------- interval ops-----------CREATE FUNCTION gbt_intv_consistent(internal,interval,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_intv_distance(internal,interval,int2,oid,internal)-RETURNS float8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_intv_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_intv_decompress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_intv_fetch(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_intv_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_intv_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_intv_union(internal, internal)-RETURNS gbtreekey32-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_intv_same(gbtreekey32, gbtreekey32, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_interval_ops-DEFAULT FOR TYPE interval USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_intv_consistent (internal, interval, int2, oid, internal),- FUNCTION 2 gbt_intv_union (internal, internal),- FUNCTION 3 gbt_intv_compress (internal),- FUNCTION 4 gbt_intv_decompress (internal),- FUNCTION 5 gbt_intv_penalty (internal, internal, internal),- FUNCTION 6 gbt_intv_picksplit (internal, internal),- FUNCTION 7 gbt_intv_same (gbtreekey32, gbtreekey32, internal),- STORAGE gbtreekey32;--ALTER OPERATOR FAMILY gist_interval_ops USING gist ADD- OPERATOR 6 <> (interval, interval) ,- OPERATOR 15 <-> (interval, interval) FOR ORDER BY pg_catalog.interval_ops ,- FUNCTION 8 (interval, interval) gbt_intv_distance (internal, interval, int2, oid, internal) ,- FUNCTION 9 (interval, interval) gbt_intv_fetch (internal) ;-------------- cash ops------------ define the GiST support methods-CREATE FUNCTION gbt_cash_consistent(internal,money,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_cash_distance(internal,money,int2,oid,internal)-RETURNS float8-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_cash_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_cash_fetch(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_cash_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_cash_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_cash_union(internal, internal)-RETURNS gbtreekey16-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_cash_same(gbtreekey16, gbtreekey16, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_cash_ops-DEFAULT FOR TYPE money USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_cash_consistent (internal, money, int2, oid, internal),- FUNCTION 2 gbt_cash_union (internal, internal),- FUNCTION 3 gbt_cash_compress (internal),- FUNCTION 4 gbt_decompress (internal),- FUNCTION 5 gbt_cash_penalty (internal, internal, internal),- FUNCTION 6 gbt_cash_picksplit (internal, internal),- FUNCTION 7 gbt_cash_same (gbtreekey16, gbtreekey16, internal),- STORAGE gbtreekey16;--ALTER OPERATOR FAMILY gist_cash_ops USING gist ADD- OPERATOR 6 <> (money, money) ,- OPERATOR 15 <-> (money, money) FOR ORDER BY pg_catalog.money_ops ,- FUNCTION 8 (money, money) gbt_cash_distance (internal, money, int2, oid, internal) ,- FUNCTION 9 (money, money) gbt_cash_fetch (internal) ;-------------- macaddr ops------------ define the GiST support methods-CREATE FUNCTION gbt_macad_consistent(internal,macaddr,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_macad_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_macad_fetch(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_macad_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_macad_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_macad_union(internal, internal)-RETURNS gbtreekey16-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_macad_same(gbtreekey16, gbtreekey16, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_macaddr_ops-DEFAULT FOR TYPE macaddr USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_macad_consistent (internal, macaddr, int2, oid, internal),- FUNCTION 2 gbt_macad_union (internal, internal),- FUNCTION 3 gbt_macad_compress (internal),- FUNCTION 4 gbt_decompress (internal),- FUNCTION 5 gbt_macad_penalty (internal, internal, internal),- FUNCTION 6 gbt_macad_picksplit (internal, internal),- FUNCTION 7 gbt_macad_same (gbtreekey16, gbtreekey16, internal),- STORAGE gbtreekey16;--ALTER OPERATOR FAMILY gist_macaddr_ops USING gist ADD- OPERATOR 6 <> (macaddr, macaddr) ,- FUNCTION 9 (macaddr, macaddr) gbt_macad_fetch (internal);-------------- text/ bpchar ops------------ define the GiST support methods-CREATE FUNCTION gbt_text_consistent(internal,text,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_bpchar_consistent(internal,bpchar,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_text_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_bpchar_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_text_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_text_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_text_union(internal, internal)-RETURNS gbtreekey_var-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_text_same(gbtreekey_var, gbtreekey_var, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_text_ops-DEFAULT FOR TYPE text USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_text_consistent (internal, text, int2, oid, internal),- FUNCTION 2 gbt_text_union (internal, internal),- FUNCTION 3 gbt_text_compress (internal),- FUNCTION 4 gbt_var_decompress (internal),- FUNCTION 5 gbt_text_penalty (internal, internal, internal),- FUNCTION 6 gbt_text_picksplit (internal, internal),- FUNCTION 7 gbt_text_same (gbtreekey_var, gbtreekey_var, internal),- STORAGE gbtreekey_var;--ALTER OPERATOR FAMILY gist_text_ops USING gist ADD- OPERATOR 6 <> (text, text) ,- FUNCTION 9 (text, text) gbt_var_fetch (internal) ;------- Create the operator class-CREATE OPERATOR CLASS gist_bpchar_ops-DEFAULT FOR TYPE bpchar USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_bpchar_consistent (internal, bpchar , int2, oid, internal),- FUNCTION 2 gbt_text_union (internal, internal),- FUNCTION 3 gbt_bpchar_compress (internal),- FUNCTION 4 gbt_var_decompress (internal),- FUNCTION 5 gbt_text_penalty (internal, internal, internal),- FUNCTION 6 gbt_text_picksplit (internal, internal),- FUNCTION 7 gbt_text_same (gbtreekey_var, gbtreekey_var, internal),- STORAGE gbtreekey_var;--ALTER OPERATOR FAMILY gist_bpchar_ops USING gist ADD- OPERATOR 6 <> (bpchar, bpchar) ,- FUNCTION 9 (bpchar, bpchar) gbt_var_fetch (internal) ;---------- bytea ops------------ define the GiST support methods-CREATE FUNCTION gbt_bytea_consistent(internal,bytea,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_bytea_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_bytea_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_bytea_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_bytea_union(internal, internal)-RETURNS gbtreekey_var-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_bytea_same(gbtreekey_var, gbtreekey_var, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_bytea_ops-DEFAULT FOR TYPE bytea USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_bytea_consistent (internal, bytea, int2, oid, internal),- FUNCTION 2 gbt_bytea_union (internal, internal),- FUNCTION 3 gbt_bytea_compress (internal),- FUNCTION 4 gbt_var_decompress (internal),- FUNCTION 5 gbt_bytea_penalty (internal, internal, internal),- FUNCTION 6 gbt_bytea_picksplit (internal, internal),- FUNCTION 7 gbt_bytea_same (gbtreekey_var, gbtreekey_var, internal),- STORAGE gbtreekey_var;--ALTER OPERATOR FAMILY gist_bytea_ops USING gist ADD- OPERATOR 6 <> (bytea, bytea) ,- FUNCTION 9 (bytea, bytea) gbt_var_fetch (internal) ;-------------- numeric ops------------ define the GiST support methods-CREATE FUNCTION gbt_numeric_consistent(internal,numeric,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_numeric_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_numeric_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_numeric_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_numeric_union(internal, internal)-RETURNS gbtreekey_var-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_numeric_same(gbtreekey_var, gbtreekey_var, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_numeric_ops-DEFAULT FOR TYPE numeric USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_numeric_consistent (internal, numeric, int2, oid, internal),- FUNCTION 2 gbt_numeric_union (internal, internal),- FUNCTION 3 gbt_numeric_compress (internal),- FUNCTION 4 gbt_var_decompress (internal),- FUNCTION 5 gbt_numeric_penalty (internal, internal, internal),- FUNCTION 6 gbt_numeric_picksplit (internal, internal),- FUNCTION 7 gbt_numeric_same (gbtreekey_var, gbtreekey_var, internal),- STORAGE gbtreekey_var;--ALTER OPERATOR FAMILY gist_numeric_ops USING gist ADD- OPERATOR 6 <> (numeric, numeric) ,- FUNCTION 9 (numeric, numeric) gbt_var_fetch (internal) ;----------- bit ops------------ define the GiST support methods-CREATE FUNCTION gbt_bit_consistent(internal,bit,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_bit_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_bit_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_bit_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_bit_union(internal, internal)-RETURNS gbtreekey_var-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_bit_same(gbtreekey_var, gbtreekey_var, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_bit_ops-DEFAULT FOR TYPE bit USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_bit_consistent (internal, bit, int2, oid, internal),- FUNCTION 2 gbt_bit_union (internal, internal),- FUNCTION 3 gbt_bit_compress (internal),- FUNCTION 4 gbt_var_decompress (internal),- FUNCTION 5 gbt_bit_penalty (internal, internal, internal),- FUNCTION 6 gbt_bit_picksplit (internal, internal),- FUNCTION 7 gbt_bit_same (gbtreekey_var, gbtreekey_var, internal),- STORAGE gbtreekey_var;--ALTER OPERATOR FAMILY gist_bit_ops USING gist ADD- OPERATOR 6 <> (bit, bit) ,- FUNCTION 9 (bit, bit) gbt_var_fetch (internal) ;----- Create the operator class-CREATE OPERATOR CLASS gist_vbit_ops-DEFAULT FOR TYPE varbit USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_bit_consistent (internal, bit, int2, oid, internal),- FUNCTION 2 gbt_bit_union (internal, internal),- FUNCTION 3 gbt_bit_compress (internal),- FUNCTION 4 gbt_var_decompress (internal),- FUNCTION 5 gbt_bit_penalty (internal, internal, internal),- FUNCTION 6 gbt_bit_picksplit (internal, internal),- FUNCTION 7 gbt_bit_same (gbtreekey_var, gbtreekey_var, internal),- STORAGE gbtreekey_var;--ALTER OPERATOR FAMILY gist_vbit_ops USING gist ADD- OPERATOR 6 <> (varbit, varbit) ,- FUNCTION 9 (varbit, varbit) gbt_var_fetch (internal) ;-------------- inet/cidr ops------------ define the GiST support methods-CREATE FUNCTION gbt_inet_consistent(internal,inet,int2,oid,internal)-RETURNS bool-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_inet_compress(internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_inet_penalty(internal,internal,internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_inet_picksplit(internal, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_inet_union(internal, internal)-RETURNS gbtreekey16-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;--CREATE FUNCTION gbt_inet_same(gbtreekey16, gbtreekey16, internal)-RETURNS internal-AS 'MODULE_PATHNAME'-LANGUAGE C IMMUTABLE STRICT;---- Create the operator class-CREATE OPERATOR CLASS gist_inet_ops-DEFAULT FOR TYPE inet USING gist-AS- OPERATOR 1 < ,- OPERATOR 2 <= ,- OPERATOR 3 = ,- OPERATOR 4 >= ,- OPERATOR 5 > ,- FUNCTION 1 gbt_inet_consistent (internal, inet, int2, oid, internal),- FUNCTION 2 gbt_inet_union (internal, internal),- FUNCTION 3 gbt_inet_compress (internal),- FUNCTION 4 gbt_decompress (internal),- FUNCTION 5 gbt_inet_penalty (internal, internal, internal),- FUNCTION 6 gbt_inet_picksplit (internal, internal),- FUNCTION 7 gbt_inet_same (gbtreekey16, gbtreekey16, internal),- STORAGE gbtreekey16;--ALTER OPERATOR FAMILY gist_inet_ops USING gist ADD- OPERATOR 6 <> (inet, inet) ;- -- no fetch support, the compress function is lossy---- Create the operator class-CREATE OPERATOR CLASS gist_cidr_ops-DEFAULT FOR TYPE cidr USING gist-AS- OPERATOR 1 < (inet, inet) ,- OPERATOR 2 <= (inet, inet) ,- OPERATOR 3 = (inet, inet) ,- OPERATOR 4 >= (inet, inet) ,- OPERATOR 5 > (inet, inet) ,- FUNCTION 1 gbt_inet_consistent (internal, inet, int2, oid, internal),- FUNCTION 2 gbt_inet_union (internal, internal),- FUNCTION 3 gbt_inet_compress (internal),- FUNCTION 4 gbt_decompress (internal),- FUNCTION 5 gbt_inet_penalty (internal, internal, internal),- FUNCTION 6 gbt_inet_picksplit (internal, internal),- FUNCTION 7 gbt_inet_same (gbtreekey16, gbtreekey16, internal),- STORAGE gbtreekey16;--ALTER OPERATOR FAMILY gist_cidr_ops USING gist ADD- OPERATOR 6 <> (inet, inet) ;- -- no fetch support, the compress function is lossydiff --git a/contrib/btree_gist/btree_gist--1.2.sql b/contrib/btree_gist/btree_gist--1.2.sqlnew file mode 100644index 0000000..f5d2de7--- /dev/null+++ b/contrib/btree_gist/btree_gist--1.2.sql@@ -0,0 +1,1635 @@+/* contrib/btree_gist/btree_gist--1.0.sql */++-- complain if script is sourced in psql, rather than via CREATE EXTENSION+\echo Use "CREATE EXTENSION btree_gist" to load this file. \quit++CREATE FUNCTION gbtreekey4_in(cstring)+RETURNS gbtreekey4+AS 'MODULE_PATHNAME', 'gbtreekey_in'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbtreekey4_out(gbtreekey4)+RETURNS cstring+AS 'MODULE_PATHNAME', 'gbtreekey_out'+LANGUAGE C IMMUTABLE STRICT;++CREATE TYPE gbtreekey4 (+ INTERNALLENGTH = 4,+ INPUT = gbtreekey4_in,+ OUTPUT = gbtreekey4_out+);++CREATE FUNCTION gbtreekey8_in(cstring)+RETURNS gbtreekey8+AS 'MODULE_PATHNAME', 'gbtreekey_in'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbtreekey8_out(gbtreekey8)+RETURNS cstring+AS 'MODULE_PATHNAME', 'gbtreekey_out'+LANGUAGE C IMMUTABLE STRICT;++CREATE TYPE gbtreekey8 (+ INTERNALLENGTH = 8,+ INPUT = gbtreekey8_in,+ OUTPUT = gbtreekey8_out+);++CREATE FUNCTION gbtreekey16_in(cstring)+RETURNS gbtreekey16+AS 'MODULE_PATHNAME', 'gbtreekey_in'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbtreekey16_out(gbtreekey16)+RETURNS cstring+AS 'MODULE_PATHNAME', 'gbtreekey_out'+LANGUAGE C IMMUTABLE STRICT;++CREATE TYPE gbtreekey16 (+ INTERNALLENGTH = 16,+ INPUT = gbtreekey16_in,+ OUTPUT = gbtreekey16_out+);++CREATE FUNCTION gbtreekey32_in(cstring)+RETURNS gbtreekey32+AS 'MODULE_PATHNAME', 'gbtreekey_in'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbtreekey32_out(gbtreekey32)+RETURNS cstring+AS 'MODULE_PATHNAME', 'gbtreekey_out'+LANGUAGE C IMMUTABLE STRICT;++CREATE TYPE gbtreekey32 (+ INTERNALLENGTH = 32,+ INPUT = gbtreekey32_in,+ OUTPUT = gbtreekey32_out+);++CREATE FUNCTION gbtreekey_var_in(cstring)+RETURNS gbtreekey_var+AS 'MODULE_PATHNAME', 'gbtreekey_in'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbtreekey_var_out(gbtreekey_var)+RETURNS cstring+AS 'MODULE_PATHNAME', 'gbtreekey_out'+LANGUAGE C IMMUTABLE STRICT;++CREATE TYPE gbtreekey_var (+ INTERNALLENGTH = VARIABLE,+ INPUT = gbtreekey_var_in,+ OUTPUT = gbtreekey_var_out,+ STORAGE = EXTENDED+);++--distance operators++CREATE FUNCTION cash_dist(money, money)+RETURNS money+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE OPERATOR <-> (+ LEFTARG = money,+ RIGHTARG = money,+ PROCEDURE = cash_dist,+ COMMUTATOR = '<->'+);++CREATE FUNCTION date_dist(date, date)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE OPERATOR <-> (+ LEFTARG = date,+ RIGHTARG = date,+ PROCEDURE = date_dist,+ COMMUTATOR = '<->'+);++CREATE FUNCTION float4_dist(float4, float4)+RETURNS float4+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE OPERATOR <-> (+ LEFTARG = float4,+ RIGHTARG = float4,+ PROCEDURE = float4_dist,+ COMMUTATOR = '<->'+);++CREATE FUNCTION float8_dist(float8, float8)+RETURNS float8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE OPERATOR <-> (+ LEFTARG = float8,+ RIGHTARG = float8,+ PROCEDURE = float8_dist,+ COMMUTATOR = '<->'+);++CREATE FUNCTION int2_dist(int2, int2)+RETURNS int2+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE OPERATOR <-> (+ LEFTARG = int2,+ RIGHTARG = int2,+ PROCEDURE = int2_dist,+ COMMUTATOR = '<->'+);++CREATE FUNCTION int4_dist(int4, int4)+RETURNS int4+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE OPERATOR <-> (+ LEFTARG = int4,+ RIGHTARG = int4,+ PROCEDURE = int4_dist,+ COMMUTATOR = '<->'+);++CREATE FUNCTION int8_dist(int8, int8)+RETURNS int8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE OPERATOR <-> (+ LEFTARG = int8,+ RIGHTARG = int8,+ PROCEDURE = int8_dist,+ COMMUTATOR = '<->'+);++CREATE FUNCTION interval_dist(interval, interval)+RETURNS interval+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE OPERATOR <-> (+ LEFTARG = interval,+ RIGHTARG = interval,+ PROCEDURE = interval_dist,+ COMMUTATOR = '<->'+);++CREATE FUNCTION oid_dist(oid, oid)+RETURNS oid+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE OPERATOR <-> (+ LEFTARG = oid,+ RIGHTARG = oid,+ PROCEDURE = oid_dist,+ COMMUTATOR = '<->'+);++CREATE FUNCTION time_dist(time, time)+RETURNS interval+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE OPERATOR <-> (+ LEFTARG = time,+ RIGHTARG = time,+ PROCEDURE = time_dist,+ COMMUTATOR = '<->'+);++CREATE FUNCTION ts_dist(timestamp, timestamp)+RETURNS interval+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE OPERATOR <-> (+ LEFTARG = timestamp,+ RIGHTARG = timestamp,+ PROCEDURE = ts_dist,+ COMMUTATOR = '<->'+);++CREATE FUNCTION tstz_dist(timestamptz, timestamptz)+RETURNS interval+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE OPERATOR <-> (+ LEFTARG = timestamptz,+ RIGHTARG = timestamptz,+ PROCEDURE = tstz_dist,+ COMMUTATOR = '<->'+);+++--+--+--+-- oid ops+--+--+--+-- define the GiST support methods+CREATE FUNCTION gbt_oid_consistent(internal,oid,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_oid_distance(internal,oid,int2,oid,internal)+RETURNS float8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_oid_fetch(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_oid_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_decompress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_var_decompress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_var_fetch(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_oid_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_oid_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_oid_union(internal, internal)+RETURNS gbtreekey8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_oid_same(gbtreekey8, gbtreekey8, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_oid_ops+DEFAULT FOR TYPE oid USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_oid_consistent (internal, oid, int2, oid, internal),+ FUNCTION 2 gbt_oid_union (internal, internal),+ FUNCTION 3 gbt_oid_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_oid_penalty (internal, internal, internal),+ FUNCTION 6 gbt_oid_picksplit (internal, internal),+ FUNCTION 7 gbt_oid_same (gbtreekey8, gbtreekey8, internal),+ STORAGE gbtreekey8;++-- Add operators that are new in 9.1. We do it like this, leaving them+-- "loose" in the operator family rather than bound into the opclass, because+-- that's the only state that can be reproduced during an upgrade from 9.0.+ALTER OPERATOR FAMILY gist_oid_ops USING gist ADD+ OPERATOR 6 <> (oid, oid) ,+ OPERATOR 15 <-> (oid, oid) FOR ORDER BY pg_catalog.oid_ops ,+ FUNCTION 8 (oid, oid) gbt_oid_distance (internal, oid, int2, oid, internal) ,+ -- Also add support function for index-only-scans, added in 9.5.+ FUNCTION 9 (oid, oid) gbt_oid_fetch (internal) ;+++--+--+--+-- enum ops+--+--+--+-- define the GiST support methods+CREATE FUNCTION gbt_enum_consistent(internal,anyenum,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_enum_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_enum_fetch(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_enum_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_enum_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_enum_union(internal, internal)+RETURNS gbtreekey4+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_enum_same(gbtreekey8, gbtreekey8, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_enum_ops+DEFAULT FOR TYPE anyenum USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_enum_consistent (internal, anyenum, int2, oid, internal),+ FUNCTION 2 gbt_enum_union (internal, internal),+ FUNCTION 3 gbt_enum_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_enum_penalty (internal, internal, internal),+ FUNCTION 6 gbt_enum_picksplit (internal, internal),+ FUNCTION 7 gbt_enum_same (gbtreekey8, gbtreekey8, internal),+ STORAGE gbtreekey8;++ALTER OPERATOR FAMILY gist_enum_ops USING gist ADD+ OPERATOR 6 <> (anyenum, anyenum) ,+ FUNCTION 9 (anyenum, anyenum) gbt_enum_fetch (internal) ;++--+--+--+-- int2 ops+--+--+--+-- define the GiST support methods+CREATE FUNCTION gbt_int2_consistent(internal,int2,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int2_distance(internal,int2,int2,oid,internal)+RETURNS float8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int2_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int2_fetch(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int2_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int2_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int2_union(internal, internal)+RETURNS gbtreekey4+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int2_same(gbtreekey4, gbtreekey4, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_int2_ops+DEFAULT FOR TYPE int2 USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_int2_consistent (internal, int2, int2, oid, internal),+ FUNCTION 2 gbt_int2_union (internal, internal),+ FUNCTION 3 gbt_int2_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_int2_penalty (internal, internal, internal),+ FUNCTION 6 gbt_int2_picksplit (internal, internal),+ FUNCTION 7 gbt_int2_same (gbtreekey4, gbtreekey4, internal),+ STORAGE gbtreekey4;++ALTER OPERATOR FAMILY gist_int2_ops USING gist ADD+ OPERATOR 6 <> (int2, int2) ,+ OPERATOR 15 <-> (int2, int2) FOR ORDER BY pg_catalog.integer_ops ,+ FUNCTION 8 (int2, int2) gbt_int2_distance (internal, int2, int2, oid, internal) ,+ FUNCTION 9 (int2, int2) gbt_int2_fetch (internal) ;++--+--+--+-- int4 ops+--+--+--+-- define the GiST support methods+CREATE FUNCTION gbt_int4_consistent(internal,int4,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int4_distance(internal,int4,int2,oid,internal)+RETURNS float8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int4_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int4_fetch(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int4_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int4_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int4_union(internal, internal)+RETURNS gbtreekey8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int4_same(gbtreekey8, gbtreekey8, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_int4_ops+DEFAULT FOR TYPE int4 USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_int4_consistent (internal, int4, int2, oid, internal),+ FUNCTION 2 gbt_int4_union (internal, internal),+ FUNCTION 3 gbt_int4_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_int4_penalty (internal, internal, internal),+ FUNCTION 6 gbt_int4_picksplit (internal, internal),+ FUNCTION 7 gbt_int4_same (gbtreekey8, gbtreekey8, internal),+ STORAGE gbtreekey8;++ALTER OPERATOR FAMILY gist_int4_ops USING gist ADD+ OPERATOR 6 <> (int4, int4) ,+ OPERATOR 15 <-> (int4, int4) FOR ORDER BY pg_catalog.integer_ops ,+ FUNCTION 8 (int4, int4) gbt_int4_distance (internal, int4, int2, oid, internal) ,+ FUNCTION 9 (int4, int4) gbt_int4_fetch (internal) ;+++--+--+--+-- int8 ops+--+--+--+-- define the GiST support methods+CREATE FUNCTION gbt_int8_consistent(internal,int8,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int8_distance(internal,int8,int2,oid,internal)+RETURNS float8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int8_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int8_fetch(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int8_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int8_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int8_union(internal, internal)+RETURNS gbtreekey16+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_int8_same(gbtreekey16, gbtreekey16, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_int8_ops+DEFAULT FOR TYPE int8 USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_int8_consistent (internal, int8, int2, oid, internal),+ FUNCTION 2 gbt_int8_union (internal, internal),+ FUNCTION 3 gbt_int8_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_int8_penalty (internal, internal, internal),+ FUNCTION 6 gbt_int8_picksplit (internal, internal),+ FUNCTION 7 gbt_int8_same (gbtreekey16, gbtreekey16, internal),+ STORAGE gbtreekey16;++ALTER OPERATOR FAMILY gist_int8_ops USING gist ADD+ OPERATOR 6 <> (int8, int8) ,+ OPERATOR 15 <-> (int8, int8) FOR ORDER BY pg_catalog.integer_ops ,+ FUNCTION 8 (int8, int8) gbt_int8_distance (internal, int8, int2, oid, internal) ,+ FUNCTION 9 (int8, int8) gbt_int8_fetch (internal) ;++--+--+--+-- float4 ops+--+--+--+-- define the GiST support methods+CREATE FUNCTION gbt_float4_consistent(internal,float4,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_float4_distance(internal,float4,int2,oid,internal)+RETURNS float8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_float4_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_float4_fetch(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_float4_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_float4_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_float4_union(internal, internal)+RETURNS gbtreekey8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_float4_same(gbtreekey8, gbtreekey8, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_float4_ops+DEFAULT FOR TYPE float4 USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_float4_consistent (internal, float4, int2, oid, internal),+ FUNCTION 2 gbt_float4_union (internal, internal),+ FUNCTION 3 gbt_float4_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_float4_penalty (internal, internal, internal),+ FUNCTION 6 gbt_float4_picksplit (internal, internal),+ FUNCTION 7 gbt_float4_same (gbtreekey8, gbtreekey8, internal),+ STORAGE gbtreekey8;++ALTER OPERATOR FAMILY gist_float4_ops USING gist ADD+ OPERATOR 6 <> (float4, float4) ,+ OPERATOR 15 <-> (float4, float4) FOR ORDER BY pg_catalog.float_ops ,+ FUNCTION 8 (float4, float4) gbt_float4_distance (internal, float4, int2, oid, internal) ,+ FUNCTION 9 (float4, float4) gbt_float4_fetch (internal) ;++--+--+--+-- float8 ops+--+--+--+-- define the GiST support methods+CREATE FUNCTION gbt_float8_consistent(internal,float8,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_float8_distance(internal,float8,int2,oid,internal)+RETURNS float8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_float8_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_float8_fetch(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_float8_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_float8_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_float8_union(internal, internal)+RETURNS gbtreekey16+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_float8_same(gbtreekey16, gbtreekey16, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_float8_ops+DEFAULT FOR TYPE float8 USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_float8_consistent (internal, float8, int2, oid, internal),+ FUNCTION 2 gbt_float8_union (internal, internal),+ FUNCTION 3 gbt_float8_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_float8_penalty (internal, internal, internal),+ FUNCTION 6 gbt_float8_picksplit (internal, internal),+ FUNCTION 7 gbt_float8_same (gbtreekey16, gbtreekey16, internal),+ STORAGE gbtreekey16;++ALTER OPERATOR FAMILY gist_float8_ops USING gist ADD+ OPERATOR 6 <> (float8, float8) ,+ OPERATOR 15 <-> (float8, float8) FOR ORDER BY pg_catalog.float_ops ,+ FUNCTION 8 (float8, float8) gbt_float8_distance (internal, float8, int2, oid, internal) ,+ FUNCTION 9 (float8, float8) gbt_float8_fetch (internal) ;++--+--+--+-- timestamp ops+--+--+--++CREATE FUNCTION gbt_ts_consistent(internal,timestamp,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_ts_distance(internal,timestamp,int2,oid,internal)+RETURNS float8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_tstz_consistent(internal,timestamptz,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_tstz_distance(internal,timestamptz,int2,oid,internal)+RETURNS float8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_ts_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_tstz_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_ts_fetch(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_ts_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_ts_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_ts_union(internal, internal)+RETURNS gbtreekey16+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_ts_same(gbtreekey16, gbtreekey16, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_timestamp_ops+DEFAULT FOR TYPE timestamp USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_ts_consistent (internal, timestamp, int2, oid, internal),+ FUNCTION 2 gbt_ts_union (internal, internal),+ FUNCTION 3 gbt_ts_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_ts_penalty (internal, internal, internal),+ FUNCTION 6 gbt_ts_picksplit (internal, internal),+ FUNCTION 7 gbt_ts_same (gbtreekey16, gbtreekey16, internal),+ STORAGE gbtreekey16;++ALTER OPERATOR FAMILY gist_timestamp_ops USING gist ADD+ OPERATOR 6 <> (timestamp, timestamp) ,+ OPERATOR 15 <-> (timestamp, timestamp) FOR ORDER BY pg_catalog.interval_ops ,+ FUNCTION 8 (timestamp, timestamp) gbt_ts_distance (internal, timestamp, int2, oid, internal) ,+ FUNCTION 9 (timestamp, timestamp) gbt_ts_fetch (internal) ;++-- Create the operator class+CREATE OPERATOR CLASS gist_timestamptz_ops+DEFAULT FOR TYPE timestamptz USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_tstz_consistent (internal, timestamptz, int2, oid, internal),+ FUNCTION 2 gbt_ts_union (internal, internal),+ FUNCTION 3 gbt_tstz_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_ts_penalty (internal, internal, internal),+ FUNCTION 6 gbt_ts_picksplit (internal, internal),+ FUNCTION 7 gbt_ts_same (gbtreekey16, gbtreekey16, internal),+ STORAGE gbtreekey16;++ALTER OPERATOR FAMILY gist_timestamptz_ops USING gist ADD+ OPERATOR 6 <> (timestamptz, timestamptz) ,+ OPERATOR 15 <-> (timestamptz, timestamptz) FOR ORDER BY pg_catalog.interval_ops ,+ FUNCTION 8 (timestamptz, timestamptz) gbt_tstz_distance (internal, timestamptz, int2, oid, internal) ,+ FUNCTION 9 (timestamptz, timestamptz) gbt_ts_fetch (internal) ;++--+--+--+-- time ops+--+--+--++CREATE FUNCTION gbt_time_consistent(internal,time,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_time_distance(internal,time,int2,oid,internal)+RETURNS float8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_timetz_consistent(internal,timetz,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_time_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_timetz_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_time_fetch(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_time_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_time_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_time_union(internal, internal)+RETURNS gbtreekey16+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_time_same(gbtreekey16, gbtreekey16, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_time_ops+DEFAULT FOR TYPE time USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_time_consistent (internal, time, int2, oid, internal),+ FUNCTION 2 gbt_time_union (internal, internal),+ FUNCTION 3 gbt_time_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_time_penalty (internal, internal, internal),+ FUNCTION 6 gbt_time_picksplit (internal, internal),+ FUNCTION 7 gbt_time_same (gbtreekey16, gbtreekey16, internal),+ STORAGE gbtreekey16;++ALTER OPERATOR FAMILY gist_time_ops USING gist ADD+ OPERATOR 6 <> (time, time) ,+ OPERATOR 15 <-> (time, time) FOR ORDER BY pg_catalog.interval_ops ,+ FUNCTION 8 (time, time) gbt_time_distance (internal, time, int2, oid, internal) ,+ FUNCTION 9 (time, time) gbt_time_fetch (internal) ;+++CREATE OPERATOR CLASS gist_timetz_ops+DEFAULT FOR TYPE timetz USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_timetz_consistent (internal, timetz, int2, oid, internal),+ FUNCTION 2 gbt_time_union (internal, internal),+ FUNCTION 3 gbt_timetz_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_time_penalty (internal, internal, internal),+ FUNCTION 6 gbt_time_picksplit (internal, internal),+ FUNCTION 7 gbt_time_same (gbtreekey16, gbtreekey16, internal),+ STORAGE gbtreekey16;++ALTER OPERATOR FAMILY gist_timetz_ops USING gist ADD+ OPERATOR 6 <> (timetz, timetz) ;+ -- no 'fetch' function, as the compress function is lossy.+++--+--+--+-- date ops+--+--+--++CREATE FUNCTION gbt_date_consistent(internal,date,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_date_distance(internal,date,int2,oid,internal)+RETURNS float8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_date_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_date_fetch(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_date_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_date_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_date_union(internal, internal)+RETURNS gbtreekey8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_date_same(gbtreekey8, gbtreekey8, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_date_ops+DEFAULT FOR TYPE date USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_date_consistent (internal, date, int2, oid, internal),+ FUNCTION 2 gbt_date_union (internal, internal),+ FUNCTION 3 gbt_date_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_date_penalty (internal, internal, internal),+ FUNCTION 6 gbt_date_picksplit (internal, internal),+ FUNCTION 7 gbt_date_same (gbtreekey8, gbtreekey8, internal),+ STORAGE gbtreekey8;++ALTER OPERATOR FAMILY gist_date_ops USING gist ADD+ OPERATOR 6 <> (date, date) ,+ OPERATOR 15 <-> (date, date) FOR ORDER BY pg_catalog.integer_ops ,+ FUNCTION 8 (date, date) gbt_date_distance (internal, date, int2, oid, internal) ,+ FUNCTION 9 (date, date) gbt_date_fetch (internal) ;+++--+--+--+-- interval ops+--+--+--++CREATE FUNCTION gbt_intv_consistent(internal,interval,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_intv_distance(internal,interval,int2,oid,internal)+RETURNS float8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_intv_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_intv_decompress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_intv_fetch(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_intv_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_intv_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_intv_union(internal, internal)+RETURNS gbtreekey32+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_intv_same(gbtreekey32, gbtreekey32, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_interval_ops+DEFAULT FOR TYPE interval USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_intv_consistent (internal, interval, int2, oid, internal),+ FUNCTION 2 gbt_intv_union (internal, internal),+ FUNCTION 3 gbt_intv_compress (internal),+ FUNCTION 4 gbt_intv_decompress (internal),+ FUNCTION 5 gbt_intv_penalty (internal, internal, internal),+ FUNCTION 6 gbt_intv_picksplit (internal, internal),+ FUNCTION 7 gbt_intv_same (gbtreekey32, gbtreekey32, internal),+ STORAGE gbtreekey32;++ALTER OPERATOR FAMILY gist_interval_ops USING gist ADD+ OPERATOR 6 <> (interval, interval) ,+ OPERATOR 15 <-> (interval, interval) FOR ORDER BY pg_catalog.interval_ops ,+ FUNCTION 8 (interval, interval) gbt_intv_distance (internal, interval, int2, oid, internal) ,+ FUNCTION 9 (interval, interval) gbt_intv_fetch (internal) ;+++--+--+--+-- cash ops+--+--+--+-- define the GiST support methods+CREATE FUNCTION gbt_cash_consistent(internal,money,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_cash_distance(internal,money,int2,oid,internal)+RETURNS float8+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_cash_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_cash_fetch(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_cash_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_cash_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_cash_union(internal, internal)+RETURNS gbtreekey16+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_cash_same(gbtreekey16, gbtreekey16, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_cash_ops+DEFAULT FOR TYPE money USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_cash_consistent (internal, money, int2, oid, internal),+ FUNCTION 2 gbt_cash_union (internal, internal),+ FUNCTION 3 gbt_cash_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_cash_penalty (internal, internal, internal),+ FUNCTION 6 gbt_cash_picksplit (internal, internal),+ FUNCTION 7 gbt_cash_same (gbtreekey16, gbtreekey16, internal),+ STORAGE gbtreekey16;++ALTER OPERATOR FAMILY gist_cash_ops USING gist ADD+ OPERATOR 6 <> (money, money) ,+ OPERATOR 15 <-> (money, money) FOR ORDER BY pg_catalog.money_ops ,+ FUNCTION 8 (money, money) gbt_cash_distance (internal, money, int2, oid, internal) ,+ FUNCTION 9 (money, money) gbt_cash_fetch (internal) ;+++--+--+--+-- macaddr ops+--+--+--+-- define the GiST support methods+CREATE FUNCTION gbt_macad_consistent(internal,macaddr,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_macad_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_macad_fetch(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_macad_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_macad_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_macad_union(internal, internal)+RETURNS gbtreekey16+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_macad_same(gbtreekey16, gbtreekey16, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_macaddr_ops+DEFAULT FOR TYPE macaddr USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_macad_consistent (internal, macaddr, int2, oid, internal),+ FUNCTION 2 gbt_macad_union (internal, internal),+ FUNCTION 3 gbt_macad_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_macad_penalty (internal, internal, internal),+ FUNCTION 6 gbt_macad_picksplit (internal, internal),+ FUNCTION 7 gbt_macad_same (gbtreekey16, gbtreekey16, internal),+ STORAGE gbtreekey16;++ALTER OPERATOR FAMILY gist_macaddr_ops USING gist ADD+ OPERATOR 6 <> (macaddr, macaddr) ,+ FUNCTION 9 (macaddr, macaddr) gbt_macad_fetch (internal);+++--+--+--+-- text/ bpchar ops+--+--+--+-- define the GiST support methods+CREATE FUNCTION gbt_text_consistent(internal,text,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_bpchar_consistent(internal,bpchar,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_text_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_bpchar_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_text_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_text_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_text_union(internal, internal)+RETURNS gbtreekey_var+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_text_same(gbtreekey_var, gbtreekey_var, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_text_ops+DEFAULT FOR TYPE text USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_text_consistent (internal, text, int2, oid, internal),+ FUNCTION 2 gbt_text_union (internal, internal),+ FUNCTION 3 gbt_text_compress (internal),+ FUNCTION 4 gbt_var_decompress (internal),+ FUNCTION 5 gbt_text_penalty (internal, internal, internal),+ FUNCTION 6 gbt_text_picksplit (internal, internal),+ FUNCTION 7 gbt_text_same (gbtreekey_var, gbtreekey_var, internal),+ STORAGE gbtreekey_var;++ALTER OPERATOR FAMILY gist_text_ops USING gist ADD+ OPERATOR 6 <> (text, text) ,+ FUNCTION 9 (text, text) gbt_var_fetch (internal) ;+++---- Create the operator class+CREATE OPERATOR CLASS gist_bpchar_ops+DEFAULT FOR TYPE bpchar USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_bpchar_consistent (internal, bpchar , int2, oid, internal),+ FUNCTION 2 gbt_text_union (internal, internal),+ FUNCTION 3 gbt_bpchar_compress (internal),+ FUNCTION 4 gbt_var_decompress (internal),+ FUNCTION 5 gbt_text_penalty (internal, internal, internal),+ FUNCTION 6 gbt_text_picksplit (internal, internal),+ FUNCTION 7 gbt_text_same (gbtreekey_var, gbtreekey_var, internal),+ STORAGE gbtreekey_var;++ALTER OPERATOR FAMILY gist_bpchar_ops USING gist ADD+ OPERATOR 6 <> (bpchar, bpchar) ,+ FUNCTION 9 (bpchar, bpchar) gbt_var_fetch (internal) ;++--+--+-- bytea ops+--+--+--+-- define the GiST support methods+CREATE FUNCTION gbt_bytea_consistent(internal,bytea,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_bytea_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_bytea_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_bytea_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_bytea_union(internal, internal)+RETURNS gbtreekey_var+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_bytea_same(gbtreekey_var, gbtreekey_var, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_bytea_ops+DEFAULT FOR TYPE bytea USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_bytea_consistent (internal, bytea, int2, oid, internal),+ FUNCTION 2 gbt_bytea_union (internal, internal),+ FUNCTION 3 gbt_bytea_compress (internal),+ FUNCTION 4 gbt_var_decompress (internal),+ FUNCTION 5 gbt_bytea_penalty (internal, internal, internal),+ FUNCTION 6 gbt_bytea_picksplit (internal, internal),+ FUNCTION 7 gbt_bytea_same (gbtreekey_var, gbtreekey_var, internal),+ STORAGE gbtreekey_var;++ALTER OPERATOR FAMILY gist_bytea_ops USING gist ADD+ OPERATOR 6 <> (bytea, bytea) ,+ FUNCTION 9 (bytea, bytea) gbt_var_fetch (internal) ;+++--+--+--+-- numeric ops+--+--+--+-- define the GiST support methods+CREATE FUNCTION gbt_numeric_consistent(internal,numeric,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_numeric_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_numeric_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_numeric_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_numeric_union(internal, internal)+RETURNS gbtreekey_var+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_numeric_same(gbtreekey_var, gbtreekey_var, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_numeric_ops+DEFAULT FOR TYPE numeric USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_numeric_consistent (internal, numeric, int2, oid, internal),+ FUNCTION 2 gbt_numeric_union (internal, internal),+ FUNCTION 3 gbt_numeric_compress (internal),+ FUNCTION 4 gbt_var_decompress (internal),+ FUNCTION 5 gbt_numeric_penalty (internal, internal, internal),+ FUNCTION 6 gbt_numeric_picksplit (internal, internal),+ FUNCTION 7 gbt_numeric_same (gbtreekey_var, gbtreekey_var, internal),+ STORAGE gbtreekey_var;++ALTER OPERATOR FAMILY gist_numeric_ops USING gist ADD+ OPERATOR 6 <> (numeric, numeric) ,+ FUNCTION 9 (numeric, numeric) gbt_var_fetch (internal) ;+++--+--+-- bit ops+--+--+--+-- define the GiST support methods+CREATE FUNCTION gbt_bit_consistent(internal,bit,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_bit_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_bit_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_bit_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_bit_union(internal, internal)+RETURNS gbtreekey_var+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_bit_same(gbtreekey_var, gbtreekey_var, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_bit_ops+DEFAULT FOR TYPE bit USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_bit_consistent (internal, bit, int2, oid, internal),+ FUNCTION 2 gbt_bit_union (internal, internal),+ FUNCTION 3 gbt_bit_compress (internal),+ FUNCTION 4 gbt_var_decompress (internal),+ FUNCTION 5 gbt_bit_penalty (internal, internal, internal),+ FUNCTION 6 gbt_bit_picksplit (internal, internal),+ FUNCTION 7 gbt_bit_same (gbtreekey_var, gbtreekey_var, internal),+ STORAGE gbtreekey_var;++ALTER OPERATOR FAMILY gist_bit_ops USING gist ADD+ OPERATOR 6 <> (bit, bit) ,+ FUNCTION 9 (bit, bit) gbt_var_fetch (internal) ;+++-- Create the operator class+CREATE OPERATOR CLASS gist_vbit_ops+DEFAULT FOR TYPE varbit USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_bit_consistent (internal, bit, int2, oid, internal),+ FUNCTION 2 gbt_bit_union (internal, internal),+ FUNCTION 3 gbt_bit_compress (internal),+ FUNCTION 4 gbt_var_decompress (internal),+ FUNCTION 5 gbt_bit_penalty (internal, internal, internal),+ FUNCTION 6 gbt_bit_picksplit (internal, internal),+ FUNCTION 7 gbt_bit_same (gbtreekey_var, gbtreekey_var, internal),+ STORAGE gbtreekey_var;++ALTER OPERATOR FAMILY gist_vbit_ops USING gist ADD+ OPERATOR 6 <> (varbit, varbit) ,+ FUNCTION 9 (varbit, varbit) gbt_var_fetch (internal) ;+++--+--+--+-- inet/cidr ops+--+--+--+-- define the GiST support methods+CREATE FUNCTION gbt_inet_consistent(internal,inet,int2,oid,internal)+RETURNS bool+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_inet_compress(internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_inet_penalty(internal,internal,internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_inet_picksplit(internal, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_inet_union(internal, internal)+RETURNS gbtreekey16+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++CREATE FUNCTION gbt_inet_same(gbtreekey16, gbtreekey16, internal)+RETURNS internal+AS 'MODULE_PATHNAME'+LANGUAGE C IMMUTABLE STRICT;++-- Create the operator class+CREATE OPERATOR CLASS gist_inet_ops+DEFAULT FOR TYPE inet USING gist+AS+ OPERATOR 1 < ,+ OPERATOR 2 <= ,+ OPERATOR 3 = ,+ OPERATOR 4 >= ,+ OPERATOR 5 > ,+ FUNCTION 1 gbt_inet_consistent (internal, inet, int2, oid, internal),+ FUNCTION 2 gbt_inet_union (internal, internal),+ FUNCTION 3 gbt_inet_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_inet_penalty (internal, internal, internal),+ FUNCTION 6 gbt_inet_picksplit (internal, internal),+ FUNCTION 7 gbt_inet_same (gbtreekey16, gbtreekey16, internal),+ STORAGE gbtreekey16;++ALTER OPERATOR FAMILY gist_inet_ops USING gist ADD+ OPERATOR 6 <> (inet, inet) ;+ -- no fetch support, the compress function is lossy++-- Create the operator class+CREATE OPERATOR CLASS gist_cidr_ops+DEFAULT FOR TYPE cidr USING gist+AS+ OPERATOR 1 < (inet, inet) ,+ OPERATOR 2 <= (inet, inet) ,+ OPERATOR 3 = (inet, inet) ,+ OPERATOR 4 >= (inet, inet) ,+ OPERATOR 5 > (inet, inet) ,+ FUNCTION 1 gbt_inet_consistent (internal, inet, int2, oid, internal),+ FUNCTION 2 gbt_inet_union (internal, internal),+ FUNCTION 3 gbt_inet_compress (internal),+ FUNCTION 4 gbt_decompress (internal),+ FUNCTION 5 gbt_inet_penalty (internal, internal, internal),+ FUNCTION 6 gbt_inet_picksplit (internal, internal),+ FUNCTION 7 gbt_inet_same (gbtreekey16, gbtreekey16, internal),+ STORAGE gbtreekey16;++ALTER OPERATOR FAMILY gist_cidr_ops USING gist ADD+ OPERATOR 6 <> (inet, inet) ;+ -- no fetch support, the compress function is lossydiff --git a/contrib/btree_gist/btree_gist.control b/contrib/btree_gist/btree_gist.controlindex c7adfeb..74d0e92 100644--- a/contrib/btree_gist/btree_gist.control+++ b/contrib/btree_gist/btree_gist.control@@ -1,5 +1,5 @@
# btree_gist extension
comment = 'support for indexing common datatypes in GiST'
-default_version = '1.1'+default_version = '1.2'
module_pathname = '$libdir/btree_gist'
relocatable = true
diff --git a/contrib/btree_gist/btree_gist.h b/contrib/btree_gist/btree_gist.hindex dcffbb5..61f8d83 100644--- a/contrib/btree_gist/btree_gist.h+++ b/contrib/btree_gist/btree_gist.h@@ -31,7 +31,8 @@ enum gbtree_type
gbt_t_bpchar,
gbt_t_bytea,
gbt_t_bit,
- gbt_t_inet+ gbt_t_inet,+ gbt_t_enum
};
diff --git a/contrib/btree_gist/btree_utils_num.c b/contrib/btree_gist/btree_utils_num.cindex 99cb41f..79f40a9 100644--- a/contrib/btree_gist/btree_utils_num.c+++ b/contrib/btree_gist/btree_utils_num.c@@ -48,6 +48,7 @@ gbt_num_compress(GISTENTRY *entry, const gbtree_ninfo *tinfo)
leaf = &v.i8;
break;
case gbt_t_oid:
+ case gbt_t_enum:
v.i4 = DatumGetObjectId(entry->key);
leaf = &v.i4;
break;
@@ -122,6 +123,7 @@ gbt_num_fetch(GISTENTRY *entry, const gbtree_ninfo *tinfo)
datum = Int64GetDatum(*(int64 *) entry->key);
break;
case gbt_t_oid:
+ case gbt_t_enum:
datum = ObjectIdGetDatum(*(Oid *) entry->key);
break;
case gbt_t_float4:
diff --git a/contrib/btree_gist/expected/enum.out b/contrib/btree_gist/expected/enum.outnew file mode 100644index 0000000..c4b769d--- /dev/null+++ b/contrib/btree_gist/expected/enum.out@@ -0,0 +1,91 @@+-- enum check+create type rainbow as enum ('r','o','y','g','b','i','v');+CREATE TABLE enumtmp (a rainbow);+\copy enumtmp from 'data/enum.data'+SET enable_seqscan=on;+select a, count(*) from enumtmp group by a order by 1;+ a | count +---+-------+ r | 76+ o | 78+ y | 73+ g | 75+ b | 77+ i | 78+ v | 75+ | 63+(8 rows)++SELECT count(*) FROM enumtmp WHERE a < 'g'::rainbow;+ count +-------+ 227+(1 row)++SELECT count(*) FROM enumtmp WHERE a <= 'g'::rainbow;+ count +-------+ 302+(1 row)++SELECT count(*) FROM enumtmp WHERE a = 'g'::rainbow;+ count +-------+ 75+(1 row)++SELECT count(*) FROM enumtmp WHERE a >= 'g'::rainbow;+ count +-------+ 305+(1 row)++SELECT count(*) FROM enumtmp WHERE a > 'g'::rainbow;+ count +-------+ 230+(1 row)++CREATE INDEX enumidx ON enumtmp USING gist ( a );+SET enable_seqscan=off;+SELECT count(*) FROM enumtmp WHERE a < 'g'::rainbow;+ count +-------+ 227+(1 row)++SELECT count(*) FROM enumtmp WHERE a <= 'g'::rainbow;+ count +-------+ 302+(1 row)++SELECT count(*) FROM enumtmp WHERE a = 'g'::rainbow;+ count +-------+ 75+(1 row)++SELECT count(*) FROM enumtmp WHERE a >= 'g'::rainbow;+ count +-------+ 305+(1 row)++SELECT count(*) FROM enumtmp WHERE a > 'g'::rainbow;+ count +-------+ 230+(1 row)++EXPLAIN (COSTS OFF)+SELECT count(*) FROM enumtmp WHERE a >= 'g'::rainbow;+ QUERY PLAN +-----------------------------------------------+ Aggregate+ -> Bitmap Heap Scan on enumtmp+ Recheck Cond: (a >= 'g'::rainbow)+ -> Bitmap Index Scan on enumidx+ Index Cond: (a >= 'g'::rainbow)+(5 rows)+diff --git a/contrib/btree_gist/sql/enum.sql b/contrib/btree_gist/sql/enum.sqlnew file mode 100644index 0000000..476211e--- /dev/null+++ b/contrib/btree_gist/sql/enum.sql@@ -0,0 +1,38 @@+-- enum check++create type rainbow as enum ('r','o','y','g','b','i','v');++CREATE TABLE enumtmp (a rainbow);++\copy enumtmp from 'data/enum.data'++SET enable_seqscan=on;++select a, count(*) from enumtmp group by a order by 1;++SELECT count(*) FROM enumtmp WHERE a < 'g'::rainbow;++SELECT count(*) FROM enumtmp WHERE a <= 'g'::rainbow;++SELECT count(*) FROM enumtmp WHERE a = 'g'::rainbow;++SELECT count(*) FROM enumtmp WHERE a >= 'g'::rainbow;++SELECT count(*) FROM enumtmp WHERE a > 'g'::rainbow;++CREATE INDEX enumidx ON enumtmp USING gist ( a );++SET enable_seqscan=off;++SELECT count(*) FROM enumtmp WHERE a < 'g'::rainbow;++SELECT count(*) FROM enumtmp WHERE a <= 'g'::rainbow;++SELECT count(*) FROM enumtmp WHERE a = 'g'::rainbow;++SELECT count(*) FROM enumtmp WHERE a >= 'g'::rainbow;++SELECT count(*) FROM enumtmp WHERE a > 'g'::rainbow;++EXPLAIN (COSTS OFF)+SELECT count(*) FROM enumtmp WHERE a >= 'g'::rainbow;diff --git a/doc/src/sgml/btree-gin.sgml b/doc/src/sgml/btree-gin.sgmlindex 2b081db..f407e92 100644--- a/doc/src/sgml/btree-gin.sgml+++ b/doc/src/sgml/btree-gin.sgml@@ -16,7 +16,8 @@
<type>time without time zone</>, <type>date</>, <type>interval</>,
<type>oid</>, <type>money</>, <type>"char"</>,
<type>varchar</>, <type>text</>, <type>bytea</>, <type>bit</>,
- <type>varbit</>, <type>macaddr</>, <type>inet</>, and <type>cidr</>.+ <type>varbit</>, <type>macaddr</>, <type>inet</>, <type>cidr</>,+ and all <type>enum</> types.
</para>
<para>
diff --git a/doc/src/sgml/btree-gist.sgml b/doc/src/sgml/btree-gist.sgmlindex f4afc09..6db5ae3 100644--- a/doc/src/sgml/btree-gist.sgml+++ b/doc/src/sgml/btree-gist.sgml@@ -16,7 +16,8 @@
<type>time without time zone</>, <type>date</>, <type>interval</>,
<type>oid</>, <type>money</>, <type>char</>,
<type>varchar</>, <type>text</>, <type>bytea</>, <type>bit</>,
- <type>varbit</>, <type>macaddr</>, <type>inet</>, and <type>cidr</>.+ <type>varbit</>, <type>macaddr</>, <type>inet</>, <type>cidr</>,+ and all <type>enum</> types.
</para>
<para>
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: andrew@dunslane.net
Subject: Re: btree_gin and btree_gist for enums
In-Reply-To: <56EA8A71.8060107@dunslane.net>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox