Fix compiler warnings
[smlar.git] / smlar--1.0.sql
1 -- complain if script is sourced in psql, rather than via CREATE EXTENSION
2 \echo Use "CREATE EXTENSION smlar" to load this file. \quit
3
4 CREATE OR REPLACE FUNCTION smlar(anyarray, anyarray)
5         RETURNS float4
6         AS      'MODULE_PATHNAME', 'arraysml'
7         LANGUAGE C STRICT IMMUTABLE;
8
9 CREATE OR REPLACE FUNCTION smlar(anyarray, anyarray, bool)
10         RETURNS float4
11         AS      'MODULE_PATHNAME', 'arraysmlw'
12         LANGUAGE C STRICT IMMUTABLE;
13
14 CREATE OR REPLACE FUNCTION smlar(anyarray, anyarray, text)
15     RETURNS float4
16         AS  'MODULE_PATHNAME', 'arraysml_func'
17         LANGUAGE C STRICT IMMUTABLE;
18
19 CREATE OR REPLACE FUNCTION set_smlar_limit(float4)
20         RETURNS float4
21         AS 'MODULE_PATHNAME'
22         LANGUAGE C STRICT VOLATILE;
23
24 CREATE OR REPLACE FUNCTION show_smlar_limit()
25         RETURNS float4
26         AS 'MODULE_PATHNAME'
27         LANGUAGE C STRICT STABLE;
28
29 CREATE OR REPLACE FUNCTION smlar_op(anyarray,anyarray)
30         RETURNS bool
31         AS 'MODULE_PATHNAME', 'arraysml_op'
32         LANGUAGE C STRICT STABLE;
33
34 CREATE OPERATOR % (
35         LEFTARG = anyarray,
36         RIGHTARG = anyarray,
37         PROCEDURE = smlar_op,
38         COMMUTATOR = '%',
39         RESTRICT = contsel,
40         JOIN = contjoinsel
41 );
42
43 --
44
45 CREATE OR REPLACE FUNCTION tsvector2textarray(tsvector)
46         RETURNS _text
47         AS 'MODULE_PATHNAME', 'tsvector2textarray'
48         LANGUAGE C STRICT IMMUTABLE;
49
50 CREATE OR REPLACE FUNCTION array_unique(anyarray)
51         RETURNS anyarray
52         AS      'MODULE_PATHNAME', 'array_unique'
53         LANGUAGE C STRICT IMMUTABLE;
54
55 CREATE OR REPLACE FUNCTION inarray(anyarray, anyelement)
56         RETURNS float4
57         AS      'MODULE_PATHNAME', 'inarray'
58         LANGUAGE C STRICT IMMUTABLE;
59
60 CREATE OR REPLACE FUNCTION inarray(anyarray, anyelement, float4, float4)
61         RETURNS float4
62         AS      'MODULE_PATHNAME', 'inarray'
63         LANGUAGE C STRICT IMMUTABLE;
64
65 --gist key
66
67 CREATE OR REPLACE FUNCTION gsmlsign_in(cstring)
68         RETURNS gsmlsign
69         AS 'MODULE_PATHNAME'
70         LANGUAGE C IMMUTABLE;
71
72 CREATE OR REPLACE FUNCTION gsmlsign_out(gsmlsign)
73         RETURNS cstring
74         AS 'MODULE_PATHNAME'
75         LANGUAGE C IMMUTABLE;
76
77 CREATE TYPE gsmlsign (
78         INTERNALLENGTH = -1,
79         INPUT = gsmlsign_in,
80         OUTPUT = gsmlsign_out
81 );
82
83 -- support functions for gist
84 CREATE OR REPLACE FUNCTION gsmlsign_consistent(gsmlsign,internal,int4)
85         RETURNS bool
86         AS 'MODULE_PATHNAME'
87         LANGUAGE C IMMUTABLE;
88
89 CREATE OR REPLACE FUNCTION gsmlsign_compress(internal)
90         RETURNS internal
91         AS 'MODULE_PATHNAME'
92         LANGUAGE C IMMUTABLE;
93
94 CREATE OR REPLACE FUNCTION gsmlsign_decompress(internal)
95         RETURNS internal
96         AS 'MODULE_PATHNAME'
97         LANGUAGE C IMMUTABLE;
98
99 CREATE OR REPLACE FUNCTION gsmlsign_penalty(internal,internal,internal)
100         RETURNS internal
101         AS 'MODULE_PATHNAME'
102         LANGUAGE C STRICT IMMUTABLE;
103
104 CREATE OR REPLACE FUNCTION gsmlsign_picksplit(internal, internal)
105         RETURNS internal
106         AS 'MODULE_PATHNAME'
107         LANGUAGE C IMMUTABLE;
108
109 CREATE OR REPLACE FUNCTION gsmlsign_union(bytea, internal)
110         RETURNS _int4
111         AS 'MODULE_PATHNAME'
112         LANGUAGE C IMMUTABLE;
113
114 CREATE OR REPLACE FUNCTION gsmlsign_same(gsmlsign, gsmlsign, internal)
115         RETURNS internal
116         AS 'MODULE_PATHNAME'
117         LANGUAGE C IMMUTABLE;
118
119 --create the operator classes for gist
120
121 CREATE OPERATOR CLASS _int2_sml_ops
122 FOR TYPE _int2 USING gist
123 AS
124         OPERATOR        1       && (anyarray, anyarray),
125         OPERATOR        2       % (anyarray, anyarray),
126         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
127         FUNCTION        2       gsmlsign_union (bytea, internal),
128         FUNCTION        3       gsmlsign_compress (internal),
129         FUNCTION        4       gsmlsign_decompress (internal),
130         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
131         FUNCTION        6       gsmlsign_picksplit (internal, internal),
132         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
133 STORAGE         gsmlsign;
134
135 CREATE OPERATOR CLASS _int4_sml_ops
136 FOR TYPE _int4 USING gist
137 AS
138         OPERATOR        1       && (anyarray, anyarray),
139         OPERATOR        2       % (anyarray, anyarray),
140         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
141         FUNCTION        2       gsmlsign_union (bytea, internal),
142         FUNCTION        3       gsmlsign_compress (internal),
143         FUNCTION        4       gsmlsign_decompress (internal),
144         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
145         FUNCTION        6       gsmlsign_picksplit (internal, internal),
146         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
147 STORAGE         gsmlsign;
148
149 CREATE OPERATOR CLASS _int8_sml_ops
150 FOR TYPE _int8 USING gist
151 AS
152         OPERATOR        1       && (anyarray, anyarray),
153         OPERATOR        2       % (anyarray, anyarray),
154         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
155         FUNCTION        2       gsmlsign_union (bytea, internal),
156         FUNCTION        3       gsmlsign_compress (internal),
157         FUNCTION        4       gsmlsign_decompress (internal),
158         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
159         FUNCTION        6       gsmlsign_picksplit (internal, internal),
160         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
161 STORAGE         gsmlsign;
162
163 CREATE OPERATOR CLASS _float4_sml_ops
164 FOR TYPE _float4 USING gist
165 AS
166         OPERATOR        1       && (anyarray, anyarray),
167         OPERATOR        2       % (anyarray, anyarray),
168         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
169         FUNCTION        2       gsmlsign_union (bytea, internal),
170         FUNCTION        3       gsmlsign_compress (internal),
171         FUNCTION        4       gsmlsign_decompress (internal),
172         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
173         FUNCTION        6       gsmlsign_picksplit (internal, internal),
174         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
175 STORAGE         gsmlsign;
176
177 CREATE OPERATOR CLASS _float8_sml_ops
178 FOR TYPE _float8 USING gist
179 AS
180         OPERATOR        1       && (anyarray, anyarray),
181         OPERATOR        2       % (anyarray, anyarray),
182         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
183         FUNCTION        2       gsmlsign_union (bytea, internal),
184         FUNCTION        3       gsmlsign_compress (internal),
185         FUNCTION        4       gsmlsign_decompress (internal),
186         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
187         FUNCTION        6       gsmlsign_picksplit (internal, internal),
188         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
189 STORAGE         gsmlsign;
190
191 -- money type hasn't hash support
192 --CREATE OPERATOR CLASS _money_sml_ops
193 --FOR TYPE _money USING gist
194 --AS
195 --      OPERATOR        1       && (anyarray, anyarray),
196 --      OPERATOR        2       % (anyarray, anyarray),
197 --      FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
198 --      FUNCTION        2       gsmlsign_union (bytea, internal),
199 --      FUNCTION        3       gsmlsign_compress (internal),
200 --      FUNCTION        4       gsmlsign_decompress (internal),
201 --      FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
202 --      FUNCTION        6       gsmlsign_picksplit (internal, internal),
203 --      FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
204 --STORAGE         gsmlsign;
205
206 CREATE OPERATOR CLASS _oid_sml_ops
207 FOR TYPE _oid USING gist
208 AS
209         OPERATOR        1       && (anyarray, anyarray),
210         OPERATOR        2       % (anyarray, anyarray),
211         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
212         FUNCTION        2       gsmlsign_union (bytea, internal),
213         FUNCTION        3       gsmlsign_compress (internal),
214         FUNCTION        4       gsmlsign_decompress (internal),
215         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
216         FUNCTION        6       gsmlsign_picksplit (internal, internal),
217         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
218 STORAGE         gsmlsign;
219
220 CREATE OPERATOR CLASS _timestamp_sml_ops
221 FOR TYPE _timestamp USING gist
222 AS
223         OPERATOR        1       && (anyarray, anyarray),
224         OPERATOR        2       % (anyarray, anyarray),
225         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
226         FUNCTION        2       gsmlsign_union (bytea, internal),
227         FUNCTION        3       gsmlsign_compress (internal),
228         FUNCTION        4       gsmlsign_decompress (internal),
229         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
230         FUNCTION        6       gsmlsign_picksplit (internal, internal),
231         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
232 STORAGE         gsmlsign;
233
234 CREATE OPERATOR CLASS _timestamptz_sml_ops
235 FOR TYPE _timestamptz USING gist
236 AS
237         OPERATOR        1       && (anyarray, anyarray),
238         OPERATOR        2       % (anyarray, anyarray),
239         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
240         FUNCTION        2       gsmlsign_union (bytea, internal),
241         FUNCTION        3       gsmlsign_compress (internal),
242         FUNCTION        4       gsmlsign_decompress (internal),
243         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
244         FUNCTION        6       gsmlsign_picksplit (internal, internal),
245         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
246 STORAGE         gsmlsign;
247
248 CREATE OPERATOR CLASS _time_sml_ops
249 FOR TYPE _time USING gist
250 AS
251         OPERATOR        1       && (anyarray, anyarray),
252         OPERATOR        2       % (anyarray, anyarray),
253         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
254         FUNCTION        2       gsmlsign_union (bytea, internal),
255         FUNCTION        3       gsmlsign_compress (internal),
256         FUNCTION        4       gsmlsign_decompress (internal),
257         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
258         FUNCTION        6       gsmlsign_picksplit (internal, internal),
259         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
260 STORAGE         gsmlsign;
261
262 CREATE OPERATOR CLASS _timetz_sml_ops
263 FOR TYPE _timetz USING gist
264 AS
265         OPERATOR        1       && (anyarray, anyarray),
266         OPERATOR        2       % (anyarray, anyarray),
267         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
268         FUNCTION        2       gsmlsign_union (bytea, internal),
269         FUNCTION        3       gsmlsign_compress (internal),
270         FUNCTION        4       gsmlsign_decompress (internal),
271         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
272         FUNCTION        6       gsmlsign_picksplit (internal, internal),
273         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
274 STORAGE         gsmlsign;
275
276 CREATE OPERATOR CLASS _date_sml_ops
277 FOR TYPE _date USING gist
278 AS
279         OPERATOR        1       && (anyarray, anyarray),
280         OPERATOR        2       % (anyarray, anyarray),
281         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
282         FUNCTION        2       gsmlsign_union (bytea, internal),
283         FUNCTION        3       gsmlsign_compress (internal),
284         FUNCTION        4       gsmlsign_decompress (internal),
285         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
286         FUNCTION        6       gsmlsign_picksplit (internal, internal),
287         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
288 STORAGE         gsmlsign;
289
290 CREATE OPERATOR CLASS _interval_sml_ops
291 FOR TYPE _interval USING gist
292 AS
293         OPERATOR        1       && (anyarray, anyarray),
294         OPERATOR        2       % (anyarray, anyarray),
295         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
296         FUNCTION        2       gsmlsign_union (bytea, internal),
297         FUNCTION        3       gsmlsign_compress (internal),
298         FUNCTION        4       gsmlsign_decompress (internal),
299         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
300         FUNCTION        6       gsmlsign_picksplit (internal, internal),
301         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
302 STORAGE         gsmlsign;
303
304 CREATE OPERATOR CLASS _macaddr_sml_ops
305 FOR TYPE _macaddr USING gist
306 AS
307         OPERATOR        1       && (anyarray, anyarray),
308         OPERATOR        2       % (anyarray, anyarray),
309         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
310         FUNCTION        2       gsmlsign_union (bytea, internal),
311         FUNCTION        3       gsmlsign_compress (internal),
312         FUNCTION        4       gsmlsign_decompress (internal),
313         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
314         FUNCTION        6       gsmlsign_picksplit (internal, internal),
315         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
316 STORAGE         gsmlsign;
317
318 CREATE OPERATOR CLASS _inet_sml_ops
319 FOR TYPE _inet USING gist
320 AS
321         OPERATOR        1       && (anyarray, anyarray),
322         OPERATOR        2       % (anyarray, anyarray),
323         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
324         FUNCTION        2       gsmlsign_union (bytea, internal),
325         FUNCTION        3       gsmlsign_compress (internal),
326         FUNCTION        4       gsmlsign_decompress (internal),
327         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
328         FUNCTION        6       gsmlsign_picksplit (internal, internal),
329         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
330 STORAGE         gsmlsign;
331
332 CREATE OPERATOR CLASS _cidr_sml_ops
333 FOR TYPE _cidr USING gist
334 AS
335         OPERATOR        1       && (anyarray, anyarray),
336         OPERATOR        2       % (anyarray, anyarray),
337         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
338         FUNCTION        2       gsmlsign_union (bytea, internal),
339         FUNCTION        3       gsmlsign_compress (internal),
340         FUNCTION        4       gsmlsign_decompress (internal),
341         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
342         FUNCTION        6       gsmlsign_picksplit (internal, internal),
343         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
344 STORAGE         gsmlsign;
345
346 CREATE OPERATOR CLASS _text_sml_ops
347 FOR TYPE _text USING gist
348 AS
349         OPERATOR        1       && (anyarray, anyarray),
350         OPERATOR        2       % (anyarray, anyarray),
351         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
352         FUNCTION        2       gsmlsign_union (bytea, internal),
353         FUNCTION        3       gsmlsign_compress (internal),
354         FUNCTION        4       gsmlsign_decompress (internal),
355         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
356         FUNCTION        6       gsmlsign_picksplit (internal, internal),
357         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
358 STORAGE         gsmlsign;
359
360 CREATE OPERATOR CLASS _varchar_sml_ops
361 FOR TYPE _varchar USING gist
362 AS
363         OPERATOR        1       && (anyarray, anyarray),
364         OPERATOR        2       % (anyarray, anyarray),
365         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
366         FUNCTION        2       gsmlsign_union (bytea, internal),
367         FUNCTION        3       gsmlsign_compress (internal),
368         FUNCTION        4       gsmlsign_decompress (internal),
369         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
370         FUNCTION        6       gsmlsign_picksplit (internal, internal),
371         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
372 STORAGE         gsmlsign;
373
374 CREATE OPERATOR CLASS _char_sml_ops
375 FOR TYPE _char USING gist
376 AS
377         OPERATOR        1       && (anyarray, anyarray),
378         OPERATOR        2       % (anyarray, anyarray),
379         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
380         FUNCTION        2       gsmlsign_union (bytea, internal),
381         FUNCTION        3       gsmlsign_compress (internal),
382         FUNCTION        4       gsmlsign_decompress (internal),
383         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
384         FUNCTION        6       gsmlsign_picksplit (internal, internal),
385         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
386 STORAGE         gsmlsign;
387
388 CREATE OPERATOR CLASS _bytea_sml_ops
389 FOR TYPE _bytea USING gist
390 AS
391         OPERATOR        1       && (anyarray, anyarray),
392         OPERATOR        2       % (anyarray, anyarray),
393         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
394         FUNCTION        2       gsmlsign_union (bytea, internal),
395         FUNCTION        3       gsmlsign_compress (internal),
396         FUNCTION        4       gsmlsign_decompress (internal),
397         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
398         FUNCTION        6       gsmlsign_picksplit (internal, internal),
399         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
400 STORAGE         gsmlsign;
401
402 --no hash 
403 --CREATE OPERATOR CLASS _bit_sml_ops
404 --FOR TYPE _bit USING gist
405 --AS
406 --      OPERATOR        1       && (anyarray, anyarray),
407 --      OPERATOR        2       % (anyarray, anyarray),
408 --      FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
409 --      FUNCTION        2       gsmlsign_union (bytea, internal),
410 --      FUNCTION        3       gsmlsign_compress (internal),
411 --      FUNCTION        4       gsmlsign_decompress (internal),
412 --      FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
413 --      FUNCTION        6       gsmlsign_picksplit (internal, internal),
414 --      FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
415 --STORAGE         gsmlsign;
416
417 --CREATE OPERATOR CLASS _varbit_sml_ops
418 --FOR TYPE _varbit USING gist
419 --AS
420 --      OPERATOR        1       && (anyarray, anyarray),
421 --      OPERATOR        2       % (anyarray, anyarray),
422 --      FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
423 --      FUNCTION        2       gsmlsign_union (bytea, internal),
424 --      FUNCTION        3       gsmlsign_compress (internal),
425 --      FUNCTION        4       gsmlsign_decompress (internal),
426 --      FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
427 --      FUNCTION        6       gsmlsign_picksplit (internal, internal),
428 --      FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
429 --STORAGE         gsmlsign;
430
431 CREATE OPERATOR CLASS _numeric_sml_ops
432 FOR TYPE _numeric USING gist
433 AS
434         OPERATOR        1       && (anyarray, anyarray),
435         OPERATOR        2       % (anyarray, anyarray),
436         FUNCTION        1       gsmlsign_consistent (gsmlsign, internal, int4),
437         FUNCTION        2       gsmlsign_union (bytea, internal),
438         FUNCTION        3       gsmlsign_compress (internal),
439         FUNCTION        4       gsmlsign_decompress (internal),
440         FUNCTION        5       gsmlsign_penalty (internal, internal, internal),
441         FUNCTION        6       gsmlsign_picksplit (internal, internal),
442         FUNCTION        7       gsmlsign_same (gsmlsign, gsmlsign, internal),
443 STORAGE         gsmlsign;
444
445 --gin support functions
446 CREATE OR REPLACE FUNCTION smlararrayextract(anyarray, internal)
447         RETURNS internal
448         AS 'MODULE_PATHNAME'
449         LANGUAGE C IMMUTABLE;
450
451 CREATE OR REPLACE FUNCTION smlarqueryarrayextract(anyarray, internal, internal)
452         RETURNS internal
453         AS 'MODULE_PATHNAME'
454         LANGUAGE C IMMUTABLE;
455
456 CREATE OR REPLACE FUNCTION smlararrayconsistent(internal, internal, anyarray)
457         RETURNS internal
458         AS 'MODULE_PATHNAME'
459         LANGUAGE C IMMUTABLE;
460
461 --gin opclasses
462
463 CREATE OPERATOR CLASS _int2_sml_ops
464 FOR TYPE _int2  USING gin
465 AS
466         OPERATOR        1       && (anyarray, anyarray),
467         OPERATOR        2       %  (anyarray, anyarray),
468         FUNCTION        1       btint2cmp(int2,int2),
469         FUNCTION        2       smlararrayextract(anyarray, internal),
470         FUNCTION        3       smlarqueryarrayextract(anyarray, internal, internal),
471         FUNCTION        4       smlararrayconsistent(internal, internal, anyarray),
472         STORAGE         int2;
473 CREATE OPERATOR CLASS _int4_sml_ops
474 FOR TYPE _int4  USING gin
475 AS
476     OPERATOR    1   && (anyarray, anyarray),
477         OPERATOR    2   %  (anyarray, anyarray),
478         FUNCTION    1   btint4cmp(int4,int4),
479         FUNCTION    2   smlararrayextract(anyarray, internal),
480         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
481         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
482         STORAGE     int4;
483
484 CREATE OPERATOR CLASS _int8_sml_ops
485 FOR TYPE _int8  USING gin
486 AS
487     OPERATOR    1   && (anyarray, anyarray),
488         OPERATOR    2   %  (anyarray, anyarray),
489         FUNCTION    1   btint8cmp(int8,int8),
490         FUNCTION    2   smlararrayextract(anyarray, internal),
491         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
492         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
493         STORAGE     int8;
494
495 CREATE OPERATOR CLASS _float4_sml_ops
496 FOR TYPE _float4  USING gin
497 AS
498     OPERATOR    1   && (anyarray, anyarray),
499         OPERATOR    2   %  (anyarray, anyarray),
500         FUNCTION    1   btfloat4cmp(float4,float4),
501         FUNCTION    2   smlararrayextract(anyarray, internal),
502         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
503         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
504         STORAGE     float4;
505
506 CREATE OPERATOR CLASS _float8_sml_ops
507 FOR TYPE _float8  USING gin
508 AS
509     OPERATOR    1   && (anyarray, anyarray),
510         OPERATOR    2   %  (anyarray, anyarray),
511         FUNCTION    1   btfloat8cmp(float8,float8),
512         FUNCTION    2   smlararrayextract(anyarray, internal),
513         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
514         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
515         STORAGE     float8;
516
517 CREATE OPERATOR CLASS _money_sml_ops
518 FOR TYPE _money  USING gin
519 AS
520     OPERATOR    1   && (anyarray, anyarray),
521         OPERATOR    2   %  (anyarray, anyarray),
522         FUNCTION    1   cash_cmp(money,money),
523         FUNCTION    2   smlararrayextract(anyarray, internal),
524         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
525         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
526         STORAGE     money;
527
528 CREATE OPERATOR CLASS _oid_sml_ops
529 FOR TYPE _oid  USING gin
530 AS
531     OPERATOR    1   && (anyarray, anyarray),
532         OPERATOR    2   %  (anyarray, anyarray),
533         FUNCTION    1   btoidcmp(oid,oid),
534         FUNCTION    2   smlararrayextract(anyarray, internal),
535         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
536         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
537         STORAGE     oid;
538
539 CREATE OPERATOR CLASS _timestamp_sml_ops
540 FOR TYPE _timestamp  USING gin
541 AS
542     OPERATOR    1   && (anyarray, anyarray),
543         OPERATOR    2   %  (anyarray, anyarray),
544         FUNCTION    1   timestamp_cmp(timestamp,timestamp),
545         FUNCTION    2   smlararrayextract(anyarray, internal),
546         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
547         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
548         STORAGE     timestamp;
549
550 CREATE OPERATOR CLASS _timestamptz_sml_ops
551 FOR TYPE _timestamptz  USING gin
552 AS
553     OPERATOR    1   && (anyarray, anyarray),
554         OPERATOR    2   %  (anyarray, anyarray),
555         FUNCTION    1   timestamptz_cmp(timestamptz,timestamptz),
556         FUNCTION    2   smlararrayextract(anyarray, internal),
557         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
558         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
559         STORAGE     timestamptz;
560
561 CREATE OPERATOR CLASS _time_sml_ops
562 FOR TYPE _time  USING gin
563 AS
564     OPERATOR    1   && (anyarray, anyarray),
565         OPERATOR    2   %  (anyarray, anyarray),
566         FUNCTION    1   time_cmp(time,time),
567         FUNCTION    2   smlararrayextract(anyarray, internal),
568         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
569         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
570         STORAGE     time;
571
572 CREATE OPERATOR CLASS _timetz_sml_ops
573 FOR TYPE _timetz  USING gin
574 AS
575     OPERATOR    1   && (anyarray, anyarray),
576         OPERATOR    2   %  (anyarray, anyarray),
577         FUNCTION    1   timetz_cmp(timetz,timetz),
578         FUNCTION    2   smlararrayextract(anyarray, internal),
579         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
580         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
581         STORAGE     timetz;
582
583 CREATE OPERATOR CLASS _date_sml_ops
584 FOR TYPE _date  USING gin
585 AS
586     OPERATOR    1   && (anyarray, anyarray),
587         OPERATOR    2   %  (anyarray, anyarray),
588         FUNCTION    1   date_cmp(date,date),
589         FUNCTION    2   smlararrayextract(anyarray, internal),
590         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
591         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
592         STORAGE     date;
593
594 CREATE OPERATOR CLASS _interval_sml_ops
595 FOR TYPE _interval  USING gin
596 AS
597     OPERATOR    1   && (anyarray, anyarray),
598         OPERATOR    2   %  (anyarray, anyarray),
599         FUNCTION    1   interval_cmp(interval,interval),
600         FUNCTION    2   smlararrayextract(anyarray, internal),
601         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
602         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
603         STORAGE     interval;
604
605 CREATE OPERATOR CLASS _macaddr_sml_ops
606 FOR TYPE _macaddr  USING gin
607 AS
608     OPERATOR    1   && (anyarray, anyarray),
609         OPERATOR    2   %  (anyarray, anyarray),
610         FUNCTION    1   macaddr_cmp(macaddr,macaddr),
611         FUNCTION    2   smlararrayextract(anyarray, internal),
612         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
613         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
614         STORAGE     macaddr;
615
616 CREATE OPERATOR CLASS _inet_sml_ops
617 FOR TYPE _inet  USING gin
618 AS
619     OPERATOR    1   && (anyarray, anyarray),
620         OPERATOR    2   %  (anyarray, anyarray),
621         FUNCTION    1   network_cmp(inet,inet),
622         FUNCTION    2   smlararrayextract(anyarray, internal),
623         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
624         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
625         STORAGE     inet;
626
627 CREATE OPERATOR CLASS _cidr_sml_ops
628 FOR TYPE _cidr  USING gin
629 AS
630     OPERATOR    1   && (anyarray, anyarray),
631         OPERATOR    2   %  (anyarray, anyarray),
632         FUNCTION    1   network_cmp(inet,inet),
633         FUNCTION    2   smlararrayextract(anyarray, internal),
634         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
635         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
636         STORAGE     cidr;
637
638 CREATE OPERATOR CLASS _text_sml_ops
639 FOR TYPE _text  USING gin
640 AS
641     OPERATOR    1   && (anyarray, anyarray),
642         OPERATOR    2   %  (anyarray, anyarray),
643         FUNCTION    1   bttextcmp(text,text),
644         FUNCTION    2   smlararrayextract(anyarray, internal),
645         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
646         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
647         STORAGE     text;
648
649 CREATE OPERATOR CLASS _varchar_sml_ops
650 FOR TYPE _varchar  USING gin
651 AS
652     OPERATOR    1   && (anyarray, anyarray),
653         OPERATOR    2   %  (anyarray, anyarray),
654         FUNCTION    1   bttextcmp(text,text),
655         FUNCTION    2   smlararrayextract(anyarray, internal),
656         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
657         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
658         STORAGE     varchar;
659
660 CREATE OPERATOR CLASS _char_sml_ops
661 FOR TYPE "_char"  USING gin
662 AS
663     OPERATOR    1   && (anyarray, anyarray),
664         OPERATOR    2   %  (anyarray, anyarray),
665         FUNCTION    1   btcharcmp("char","char"),
666         FUNCTION    2   smlararrayextract(anyarray, internal),
667         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
668         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
669         STORAGE     "char";
670
671 CREATE OPERATOR CLASS _bytea_sml_ops
672 FOR TYPE _bytea  USING gin
673 AS
674     OPERATOR    1   && (anyarray, anyarray),
675         OPERATOR    2   %  (anyarray, anyarray),
676         FUNCTION    1   byteacmp(bytea,bytea),
677         FUNCTION    2   smlararrayextract(anyarray, internal),
678         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
679         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
680         STORAGE     bytea;
681
682 CREATE OPERATOR CLASS _bit_sml_ops
683 FOR TYPE _bit  USING gin
684 AS
685     OPERATOR    1   && (anyarray, anyarray),
686         OPERATOR    2   %  (anyarray, anyarray),
687         FUNCTION    1   bitcmp(bit,bit),
688         FUNCTION    2   smlararrayextract(anyarray, internal),
689         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
690         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
691         STORAGE     bit;
692
693 CREATE OPERATOR CLASS _varbit_sml_ops
694 FOR TYPE _varbit  USING gin
695 AS
696     OPERATOR    1   && (anyarray, anyarray),
697         OPERATOR    2   %  (anyarray, anyarray),
698         FUNCTION    1   varbitcmp(varbit,varbit),
699         FUNCTION    2   smlararrayextract(anyarray, internal),
700         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
701         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
702         STORAGE     varbit;
703
704 CREATE OPERATOR CLASS _numeric_sml_ops
705 FOR TYPE _numeric  USING gin
706 AS
707     OPERATOR    1   && (anyarray, anyarray),
708         OPERATOR    2   %  (anyarray, anyarray),
709         FUNCTION    1   numeric_cmp(numeric,numeric),
710         FUNCTION    2   smlararrayextract(anyarray, internal),
711         FUNCTION    3   smlarqueryarrayextract(anyarray, internal, internal),
712         FUNCTION    4   smlararrayconsistent(internal, internal, anyarray),
713         STORAGE     numeric;
714