+-- complain if script is sourced in psql, rather than via CREATE EXTENSION
+\echo Use "CREATE EXTENSION smlar" to load this file. \quit
+
+CREATE OR REPLACE FUNCTION smlar(anyarray, anyarray)
+ RETURNS float4
+ AS 'MODULE_PATHNAME', 'arraysml'
+ LANGUAGE C STRICT IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION smlar(anyarray, anyarray, bool)
+ RETURNS float4
+ AS 'MODULE_PATHNAME', 'arraysmlw'
+ LANGUAGE C STRICT IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION smlar(anyarray, anyarray, text)
+ RETURNS float4
+ AS 'MODULE_PATHNAME', 'arraysml_func'
+ LANGUAGE C STRICT IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION set_smlar_limit(float4)
+ RETURNS float4
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C STRICT VOLATILE;
+
+CREATE OR REPLACE FUNCTION show_smlar_limit()
+ RETURNS float4
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C STRICT STABLE;
+
+CREATE OR REPLACE FUNCTION smlar_op(anyarray,anyarray)
+ RETURNS bool
+ AS 'MODULE_PATHNAME', 'arraysml_op'
+ LANGUAGE C STRICT STABLE;
+
+CREATE OPERATOR % (
+ LEFTARG = anyarray,
+ RIGHTARG = anyarray,
+ PROCEDURE = smlar_op,
+ COMMUTATOR = '%',
+ RESTRICT = contsel,
+ JOIN = contjoinsel
+);
+
+--
+
+CREATE OR REPLACE FUNCTION tsvector2textarray(tsvector)
+ RETURNS _text
+ AS 'MODULE_PATHNAME', 'tsvector2textarray'
+ LANGUAGE C STRICT IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION array_unique(anyarray)
+ RETURNS anyarray
+ AS 'MODULE_PATHNAME', 'array_unique'
+ LANGUAGE C STRICT IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION inarray(anyarray, anyelement)
+ RETURNS float4
+ AS 'MODULE_PATHNAME', 'inarray'
+ LANGUAGE C STRICT IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION inarray(anyarray, anyelement, float4, float4)
+ RETURNS float4
+ AS 'MODULE_PATHNAME', 'inarray'
+ LANGUAGE C STRICT IMMUTABLE;
+
+--gist key
+
+CREATE OR REPLACE FUNCTION gsmlsign_in(cstring)
+ RETURNS gsmlsign
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C STRICT;
+
+CREATE OR REPLACE FUNCTION gsmlsign_out(gsmlsign)
+ RETURNS cstring
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C STRICT;
+
+CREATE TYPE gsmlsign (
+ INTERNALLENGTH = -1,
+ INPUT = gsmlsign_in,
+ OUTPUT = gsmlsign_out
+);
+
+-- support functions for gist
+CREATE OR REPLACE FUNCTION gsmlsign_consistent(gsmlsign,internal,int4)
+ RETURNS bool
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION gsmlsign_compress(internal)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION gsmlsign_decompress(internal)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION gsmlsign_penalty(internal,internal,internal)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C STRICT IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION gsmlsign_picksplit(internal, internal)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION gsmlsign_union(bytea, internal)
+ RETURNS _int4
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION gsmlsign_same(gsmlsign, gsmlsign, internal)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE;
+
+--create the operator classes for gist
+
+CREATE OPERATOR CLASS _int2_sml_ops
+FOR TYPE _int2 USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _int4_sml_ops
+FOR TYPE _int4 USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _int8_sml_ops
+FOR TYPE _int8 USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _float4_sml_ops
+FOR TYPE _float4 USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _float8_sml_ops
+FOR TYPE _float8 USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+-- money type hasn't hash support
+--CREATE OPERATOR CLASS _money_sml_ops
+--FOR TYPE _money USING gist
+--AS
+-- OPERATOR 1 && (anyarray, anyarray),
+-- OPERATOR 2 % (anyarray, anyarray),
+-- FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+-- FUNCTION 2 gsmlsign_union (bytea, internal),
+-- FUNCTION 3 gsmlsign_compress (internal),
+-- FUNCTION 4 gsmlsign_decompress (internal),
+-- FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+-- FUNCTION 6 gsmlsign_picksplit (internal, internal),
+-- FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+--STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _oid_sml_ops
+FOR TYPE _oid USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _timestamp_sml_ops
+FOR TYPE _timestamp USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _timestamptz_sml_ops
+FOR TYPE _timestamptz USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _time_sml_ops
+FOR TYPE _time USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _timetz_sml_ops
+FOR TYPE _timetz USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _date_sml_ops
+FOR TYPE _date USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _interval_sml_ops
+FOR TYPE _interval USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _macaddr_sml_ops
+FOR TYPE _macaddr USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _inet_sml_ops
+FOR TYPE _inet USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _cidr_sml_ops
+FOR TYPE _cidr USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _text_sml_ops
+FOR TYPE _text USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _varchar_sml_ops
+FOR TYPE _varchar USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _char_sml_ops
+FOR TYPE _char USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _bytea_sml_ops
+FOR TYPE _bytea USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+--no hash
+--CREATE OPERATOR CLASS _bit_sml_ops
+--FOR TYPE _bit USING gist
+--AS
+-- OPERATOR 1 && (anyarray, anyarray),
+-- OPERATOR 2 % (anyarray, anyarray),
+-- FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+-- FUNCTION 2 gsmlsign_union (bytea, internal),
+-- FUNCTION 3 gsmlsign_compress (internal),
+-- FUNCTION 4 gsmlsign_decompress (internal),
+-- FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+-- FUNCTION 6 gsmlsign_picksplit (internal, internal),
+-- FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+--STORAGE gsmlsign;
+
+--CREATE OPERATOR CLASS _varbit_sml_ops
+--FOR TYPE _varbit USING gist
+--AS
+-- OPERATOR 1 && (anyarray, anyarray),
+-- OPERATOR 2 % (anyarray, anyarray),
+-- FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+-- FUNCTION 2 gsmlsign_union (bytea, internal),
+-- FUNCTION 3 gsmlsign_compress (internal),
+-- FUNCTION 4 gsmlsign_decompress (internal),
+-- FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+-- FUNCTION 6 gsmlsign_picksplit (internal, internal),
+-- FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+--STORAGE gsmlsign;
+
+CREATE OPERATOR CLASS _numeric_sml_ops
+FOR TYPE _numeric USING gist
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 gsmlsign_consistent (gsmlsign, internal, int4),
+ FUNCTION 2 gsmlsign_union (bytea, internal),
+ FUNCTION 3 gsmlsign_compress (internal),
+ FUNCTION 4 gsmlsign_decompress (internal),
+ FUNCTION 5 gsmlsign_penalty (internal, internal, internal),
+ FUNCTION 6 gsmlsign_picksplit (internal, internal),
+ FUNCTION 7 gsmlsign_same (gsmlsign, gsmlsign, internal),
+STORAGE gsmlsign;
+
+--gin support functions
+CREATE OR REPLACE FUNCTION smlararrayextract(anyarray, internal)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION smlarqueryarrayextract(anyarray, internal, internal)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE;
+
+CREATE OR REPLACE FUNCTION smlararrayconsistent(internal, internal, anyarray)
+ RETURNS internal
+ AS 'MODULE_PATHNAME'
+ LANGUAGE C IMMUTABLE;
+
+--gin opclasses
+
+CREATE OPERATOR CLASS _int2_sml_ops
+FOR TYPE _int2 USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 btint2cmp(int2,int2),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE int2;
+CREATE OPERATOR CLASS _int4_sml_ops
+FOR TYPE _int4 USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 btint4cmp(int4,int4),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE int4;
+
+CREATE OPERATOR CLASS _int8_sml_ops
+FOR TYPE _int8 USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 btint8cmp(int8,int8),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE int8;
+
+CREATE OPERATOR CLASS _float4_sml_ops
+FOR TYPE _float4 USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 btfloat4cmp(float4,float4),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE float4;
+
+CREATE OPERATOR CLASS _float8_sml_ops
+FOR TYPE _float8 USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 btfloat8cmp(float8,float8),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE float8;
+
+CREATE OPERATOR CLASS _money_sml_ops
+FOR TYPE _money USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 cash_cmp(money,money),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE money;
+
+CREATE OPERATOR CLASS _oid_sml_ops
+FOR TYPE _oid USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 btoidcmp(oid,oid),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE oid;
+
+CREATE OPERATOR CLASS _timestamp_sml_ops
+FOR TYPE _timestamp USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 timestamp_cmp(timestamp,timestamp),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE timestamp;
+
+CREATE OPERATOR CLASS _timestamptz_sml_ops
+FOR TYPE _timestamptz USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 timestamptz_cmp(timestamptz,timestamptz),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE timestamptz;
+
+CREATE OPERATOR CLASS _time_sml_ops
+FOR TYPE _time USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 time_cmp(time,time),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE time;
+
+CREATE OPERATOR CLASS _timetz_sml_ops
+FOR TYPE _timetz USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 timetz_cmp(timetz,timetz),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE timetz;
+
+CREATE OPERATOR CLASS _date_sml_ops
+FOR TYPE _date USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 date_cmp(date,date),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE date;
+
+CREATE OPERATOR CLASS _interval_sml_ops
+FOR TYPE _interval USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 interval_cmp(interval,interval),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE interval;
+
+CREATE OPERATOR CLASS _macaddr_sml_ops
+FOR TYPE _macaddr USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 macaddr_cmp(macaddr,macaddr),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE macaddr;
+
+CREATE OPERATOR CLASS _inet_sml_ops
+FOR TYPE _inet USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 network_cmp(inet,inet),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE inet;
+
+CREATE OPERATOR CLASS _cidr_sml_ops
+FOR TYPE _cidr USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 network_cmp(inet,inet),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE cidr;
+
+CREATE OPERATOR CLASS _text_sml_ops
+FOR TYPE _text USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 bttextcmp(text,text),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE text;
+
+CREATE OPERATOR CLASS _varchar_sml_ops
+FOR TYPE _varchar USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 bttextcmp(text,text),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE varchar;
+
+CREATE OPERATOR CLASS _char_sml_ops
+FOR TYPE "_char" USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 btcharcmp("char","char"),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE "char";
+
+CREATE OPERATOR CLASS _bytea_sml_ops
+FOR TYPE _bytea USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 byteacmp(bytea,bytea),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE bytea;
+
+CREATE OPERATOR CLASS _bit_sml_ops
+FOR TYPE _bit USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 bitcmp(bit,bit),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE bit;
+
+CREATE OPERATOR CLASS _varbit_sml_ops
+FOR TYPE _varbit USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 varbitcmp(varbit,varbit),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE varbit;
+
+CREATE OPERATOR CLASS _numeric_sml_ops
+FOR TYPE _numeric USING gin
+AS
+ OPERATOR 1 && (anyarray, anyarray),
+ OPERATOR 2 % (anyarray, anyarray),
+ FUNCTION 1 numeric_cmp(numeric,numeric),
+ FUNCTION 2 smlararrayextract(anyarray, internal),
+ FUNCTION 3 smlarqueryarrayextract(anyarray, internal, internal),
+ FUNCTION 4 smlararrayconsistent(internal, internal, anyarray),
+ STORAGE numeric;
+