Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1d84daf

Browse files
author
Vladlen Popolitov
committed
Version 2.0 commited
1 parenta61742c commit1d84daf

File tree

8 files changed

+1925
-2
lines changed

8 files changed

+1925
-2
lines changed

‎Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ OBJS = anyarray.o anyarray_util.o anyarray_guc.o \
55
anyarray_gist.o anyarray_gin.o anyarray_rum.o
66

77
EXTENSION = anyarray
8-
DATA = anyarray--1.0.sql anyarray--1.2.sql
8+
DATA = anyarray--1.0.sql anyarray--1.1.sql anyarray--1.0--1.1.sql anyarray--1.1.sql anyarray--1.1--2.0.sql anyarray--2.0.sql
99
PGFILEDESC = "anyarray - functions and operators for one-dimensional arrays"
1010

1111
REGRESS = security init anyarray\

‎README.md

Lines changed: 284 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,284 @@
1+
AnyArray – 1-D anyarray functionality for PostgreSQL
2+
==============================================
3+
4+
Introduction
5+
------------
6+
7+
AnyArray is a PostgreSQL extension which implements 1-D anyarray
8+
functionality.
9+
10+
11+
Authors
12+
-------
13+
14+
* Teodor Sigaev<teodor@sigaev.ru> , Postgres Professional, Moscow, Russia
15+
* Oleg Bartunov <o.bartunov@postgrespro.ru> , Postgres Professional, Moscow, Russia
16+
17+
Availability
18+
------------
19+
20+
AnyArray is released as an extension and not available in default PostgreSQL
21+
installation. It is available from
22+
[github](https://github.com/postgrespro/anyarray)
23+
under the same license as
24+
[PostgreSQL](http://www.postgresql.org/about/licence/)
25+
and supports PostgreSQL 9.1+.
26+
27+
Installation
28+
------------
29+
30+
Before build and install AnyArray you should ensure following:
31+
32+
* PostgreSQL version is 9.1 or higher.
33+
* You have development package of PostgreSQL installed or you built
34+
PostgreSQL from source.
35+
* Your PATH variable is configured so that pg\_config command available.
36+
37+
Typical installation procedure may look like this:
38+
39+
$ git clonehttps://github.com/postgrespro/anyarray.git
40+
$ cd anyarray
41+
$ make USE_PGXS=1
42+
$ sudo make USE_PGXS=1 install
43+
$ make USE_PGXS=1 installcheck
44+
$ psql DB -c "CREATE EXTENSION anyarray;"
45+
46+
Usage
47+
-----
48+
49+
###Anyarray functions
50+
51+
|Function|Description|Examples|
52+
|--------|-----------|--------|
53+
|`anyset(int)``int[1]`||`anyset(1234)``ARRAY[1234]`|
54+
|`icount(anyarray)``int`|Returns the length of anyarray. icount() returns 0 for empty arrays.|`icount( '{1234234, 0234234}'::int[] )``2`|
55+
|`sort(anyarray [, 'asc'\|'desc'])``anyarray`|Returns the anyarray sorted in an ascending (default) or descending order.|`sort( '{1234234, -30, 0234234}'::int[],'desc')``{1234234, 234234, -30}`|
56+
|`sort_asc(anyarray)``anyarray`|Returns the anyarray sorted in an ascending order.|`sort_asc( '{1234234,-30, 0234234}'::int[])``{-30,234234,1234234}`|
57+
|`sort_desc(anyarray)``anyarray`|Returns the anyarray sorted in a descending order.|`sort( '{1234234, -30, 0234234}'::int[],'desc' )``{1234234,234234,-30}`|
58+
|`uniq(anyarray)``anyarray`|Returns anyarray where consequent repeating elements replaced by one element. If you need to remove all repeating elements in array, you can sort array and apply uniq() function.|`uniq( '{1234234, -30, -30, 0234234, -30}'::int[])``{1234234, -30, 234234, -30}` ,`uniq( sort_asc( '{1234234, -30, -30, 0234234, -30}'::int[] ) )``{-30,234234,1234234}`|
59+
|`uniq_d(anyarray)``anyarray`|Returns only consequent repeating elements. If you need to return all repeating elements, you can sort array and apply uniq_d() function|`uniq_d( '{1234234, -30, -30, 0234234, -30, 0234234}'::int[] )``{-30}`,`uniq_d( sort_asc('{1234234, -30,-30, 0234234, -30, 0234234}'::int[] ) )``{-30,234234}`|
60+
|`idx(anyarray, searchelement)``int`|Returns the position of the searchelement first occurance in the array|`idx( '{1234234,-30,-30,0234234,-30}'::int[], -30 )``2`|
61+
|`subarray(anyarray, start int, length int)``anyarray`|Returns the subarray from original array. If the start position value is negative, it is counted from the end of the original array (-1 means last element, -2 means element before last etc.)|`subarray( '{1234234, -30, -30, 0234234, -30}'::int[],2,3 )``{-30, -30, 234234}` ,`subarray( '{1234234, -30, -30, 0234234, -30}'::int[], -1, 1 )``{-30}`,`subarray( '{1234234, -30, -30, 0234234, -30}'::int[], 0, -1 )``{1234234, -30, -30, 234234}`|
62+
63+
64+
###Anyarray operators
65+
66+
|Operator|Description|Examples|
67+
|--------|-----------|--------|
68+
|`#anyarray``int`|Returns the length of anyarray.|`#'{1234234,0234234}'::int[]``2`|
69+
|`anyarray + anyarray``anyarray`|Returns the union of arrays|`'{123,623,445}'::int[] + 1245``{123,623,445,1245}` ,`'{123,623,445}'::int[] + '{1245,87,445}'``{123,623,445,1245,87,445}`|
70+
|`anyarray - anyarray``anyarray`|Returns the substraction of left array and right array|`'{123,623,445}'::int[] - 623``{123,445}`,`'{123,623,445}'::int[] - '{1623,623}'::int[]``{123,445}`|
71+
|`anyarray \| anyarray``anyarray`|Returns the union of array, repeating elements are excluded from resulting array.|`'{123,623,445}'::int[]`\|`{1623,623}'::int[]``{123,445,623,1623}`|
72+
|`anyarray & anyarray``anyarray`|Returns arrays intersection.|`'{1,3,1}'::int[] & '{1,2}'``{1}`|
73+
74+
75+
###Anyarray operator class strategies
76+
77+
78+
|Operator|GIST and GIN Strategy num|RUM Strategy num|Description|
79+
|--------|-------------------------|-----------|
80+
|`anyarray` &&`anyarray`|RTOverlapStrategyNumber 3|RUM_OVERLAP_STRATEGY 1|Overlapped|
81+
|`anyarray` =`anyarray`|RTSameStrategyNumber 6|RUM_EQUAL_STRATEGY 4|Same|
82+
|`anyarray` @>`anyarray`|RTContainsStrategyNumber 7|RUM_CONTAINS_STRATEGY 2|Contains|
83+
|`anyarray` <@`anyarray`|RTContainedByStrategyNumber 8|RUM_CONTAINED_STRATEGY 3|Contained|
84+
|`anyarray` %`anyarray`|AnyAarraySimilarityStrategy 16|RUM_SIMILAR_STRATEGY 5|Similarity|
85+
86+
87+
###Similarity search options
88+
89+
Set distance type for similarity search.
90+
```
91+
SET anyarray.similarity_type=cosine;
92+
SET anyarray.similarity_type=jaccard;
93+
SET anyarray.similarity_type=overlap;
94+
```
95+
96+
Set threshold for similarity search.
97+
```
98+
SET anyarray.similarity_threshold = 3;
99+
RESET anyarray.similarity_threshold;
100+
```
101+
102+
Examples
103+
-------
104+
105+
Examples for INTEGER[] .
106+
107+
###Create a table with sample data.
108+
```
109+
SELECT t, ARRAY(
110+
SELECT v::int4
111+
FROM generate_series(max(0, t - 10), t) as v
112+
) AS v
113+
INTO test_int4
114+
FROM generate_series(1, 200) as t;
115+
```
116+
117+
###Similarity calculation.
118+
119+
```
120+
SET anyarray.similarity_type=cosine;
121+
SELECT t, similarity(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4
122+
WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t;
123+
SELECT t, similarity(v, '{50,49,8,7,6,5,4,3,2,1}') AS s FROM test_int4
124+
WHERE v % '{50,49,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t;
125+
126+
SET anyarray.similarity_type=jaccard;
127+
SELECT t, similarity(v, '{10,9,8,7,6,5,4,3,2,1}') AS s FROM test_int4
128+
WHERE v % '{10,9,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t;
129+
SELECT t, similarity(v, '{50,49,8,7,6,5,4,3,2,1}') AS s FROM test_int4
130+
WHERE v % '{50,49,8,7,6,5,4,3,2,1}' ORDER BY s DESC, t;
131+
132+
SELECT t, v FROM test_int4 WHERE v && '{43,50}' ORDER BY t;
133+
SELECT t, v FROM test_int4 WHERE v @> '{43,50}' ORDER BY t;
134+
SELECT t, v FROM test_int4 WHERE v <@ '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
135+
SELECT t, v FROM test_int4 WHERE v = '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
136+
SET anyarray.similarity_type=cosine;
137+
SELECT t, v FROM test_int4 WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
138+
SET anyarray.similarity_type=jaccard;
139+
SELECT t, v FROM test_int4 WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
140+
SET anyarray.similarity_type=overlap;
141+
SET anyarray.similarity_threshold = 3;
142+
SELECT t, v FROM test_int4 WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
143+
RESET anyarray.similarity_threshold;
144+
```
145+
146+
###Create GIST index.
147+
148+
```
149+
CREATE INDEX idx_test_int4 ON test_int4 USING gist (v _int4_aa_ops);
150+
151+
SET enable_seqscan=off;
152+
153+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_int4 WHERE v && '{43,50}' ORDER BY t;
154+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_int4 WHERE v @> '{43,50}' ORDER BY t;
155+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_int4 WHERE v <@ '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
156+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_int4 WHERE v = '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
157+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_int4 WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
158+
159+
SELECT t, v FROM test_int4 WHERE v && '{43,50}' ORDER BY t;
160+
SELECT t, v FROM test_int4 WHERE v @> '{43,50}' ORDER BY t;
161+
SELECT t, v FROM test_int4 WHERE v <@ '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
162+
SELECT t, v FROM test_int4 WHERE v = '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
163+
SET anyarray.similarity_type=cosine;
164+
SELECT t, v FROM test_int4 WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
165+
SET anyarray.similarity_type=jaccard;
166+
SELECT t, v FROM test_int4 WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
167+
SET anyarray.similarity_type=overlap;
168+
SET anyarray.similarity_threshold = 3;
169+
SELECT t, v FROM test_int4 WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
170+
RESET anyarray.similarity_threshold;
171+
172+
DROP INDEX idx_test_int4;
173+
```
174+
175+
###Create GIN index.
176+
177+
```
178+
CREATE INDEX idx_test_int4 ON test_int4 USING gin (v _int4_aa_ops);
179+
180+
SET enable_seqscan=off;
181+
182+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_int4 WHERE v && '{43,50}' ORDER BY t;
183+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_int4 WHERE v @> '{43,50}' ORDER BY t;
184+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_int4 WHERE v <@ '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
185+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_int4 WHERE v = '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
186+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_int4 WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
187+
188+
SELECT t, v FROM test_int4 WHERE v && '{43,50}' ORDER BY t;
189+
SELECT t, v FROM test_int4 WHERE v @> '{43,50}' ORDER BY t;
190+
SELECT t, v FROM test_int4 WHERE v <@ '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
191+
SELECT t, v FROM test_int4 WHERE v = '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
192+
SET anyarray.similarity_type=cosine;
193+
SELECT t, v FROM test_int4 WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
194+
SET anyarray.similarity_type=jaccard;
195+
SELECT t, v FROM test_int4 WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
196+
SET anyarray.similarity_type=overlap;
197+
SET anyarray.similarity_threshold = 3;
198+
SELECT t, v FROM test_int4 WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
199+
RESET anyarray.similarity_threshold;
200+
```
201+
202+
###Create RUM index.
203+
204+
```
205+
CREATE INDEX idx_test_int4 ON test_int4 USING rum (v _int4_aa_ops);
206+
207+
SET enable_seqscan=off;
208+
209+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_int4 WHERE v && '{43,50}' ORDER BY t;
210+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_int4 WHERE v @> '{43,50}' ORDER BY t;
211+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_int4 WHERE v <@ '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
212+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_int4 WHERE v = '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
213+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_int4 WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
214+
215+
SELECT t, v FROM test_int4 WHERE v && '{43,50}' ORDER BY t;
216+
SELECT t, v FROM test_int4 WHERE v @> '{43,50}' ORDER BY t;
217+
SELECT t, v FROM test_int4 WHERE v <@ '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
218+
SELECT t, v FROM test_int4 WHERE v = '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
219+
SET anyarray.similarity_type=cosine;
220+
SELECT t, v FROM test_int4 WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
221+
SET anyarray.similarity_type=jaccard;
222+
SELECT t, v FROM test_int4 WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
223+
SET anyarray.similarity_type=overlap;
224+
SET anyarray.similarity_threshold = 3;
225+
SELECT t, v FROM test_int4 WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
226+
RESET anyarray.similarity_threshold;
227+
```
228+
229+
Operator class names for all types implemented in anyarray.
230+
-----------------------------------------------------------
231+
232+
|Anyarray type|GIST|GIN|RUM|
233+
|----|----|---|---|
234+
|bit|_bit_aa_ops|_bit_aa_ops|_bit_aa_ops|
235+
|bytea|_bytea_aa_ops|_bytea_aa_ops|_bytea_aa_ops|
236+
|char|_char_aa_ops|_char_aa_ops|_char_aa_ops|
237+
|cidr|_cidr_aa_ops|_cidr_aa_ops|_cidr_aa_ops|
238+
|date|_date_aa_ops|_date_aa_ops|_date_aa_ops|
239+
|float4|_float4_aa_ops|_float4_aa_ops|_float4_aa_ops|
240+
|float8|_float8_aa_ops|_float8_aa_ops|_float8_aa_ops|
241+
|inet|_inet_aa_ops|_inet_aa_ops|_inet_aa_ops|
242+
|int2|_int2_aa_ops|_int2_aa_ops|_int2_aa_ops|
243+
|int4|_int4_aa_ops|_int4_aa_ops|_int4_aa_ops|
244+
|int8|_int8_aa_ops|_int8_aa_ops|_int8_aa_ops|
245+
|interval|_interval_aa_ops|_interval_aa_ops|_interval_aa_ops|
246+
|macaddr|_macaddr_aa_ops|_macaddr_aa_ops|_macaddr_aa_ops|
247+
|money| -|_money_aa_ops|_money_aa_ops|
248+
|numeric|_numeric_aa_ops|_numeric_aa_ops|_numeric_aa_ops|
249+
|oid|_oid_aa_ops|_oid_aa_ops|_oid_aa_ops|
250+
|text|_text_aa_ops|_text_aa_ops|_text_aa_ops|
251+
|time|_time_aa_ops|_time_aa_ops|_time_aa_ops|
252+
|timestamp|_timestamp_aa_ops|_timestamp_aa_ops|_timestamp_aa_ops|
253+
|timestamptz|_timestamptz_aa_ops|_timestamptz_aa_ops|_timestamptz_aa_ops|
254+
|timetz|_timetz_aa_ops|_timetz_aa_ops|_timetz_aa_ops|
255+
|uuid|_uuid_aa_ops|_uuid_aa_ops|_uuid_aa_ops|
256+
|varbit|_varbit_aa_ops|_varbit_aa_ops|_varbit_aa_ops|
257+
|varchar|_varchar_aa_ops|_varchar_aa_ops|_varchar_aa_ops|
258+
259+
##Upgrading
260+
261+
Install the latest version and run in every database you want to upgrade:
262+
263+
```
264+
ALTER EXTENSION anyarray UPDATE;
265+
```
266+
You need to close this database server connection to apply changes.
267+
268+
You can check the version in the current database with psql command:
269+
270+
```
271+
\dx
272+
```
273+
274+
##Version Notes
275+
276+
###2.0
277+
278+
The support of RUM index is added. RUM extension 1.4 of upper is required.
279+
Anyarray supports GIST, GIN, RUM indexes for uuid type.
280+
Anyarray supports GIN, RUM indexes for money type.
281+
282+
###1.1
283+
284+
Query time of anyarray using GIN indexes decreased.

‎anyarray--1.0--1.1.sql

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/*
2+
* anyarray version 1.1
3+
*/
4+
5+
CREATE OR REPLACEFUNCTIONginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal)
6+
RETURNS internal
7+
AS'MODULE_PATHNAME'
8+
LANGUAGE C IMMUTABLE;
9+
10+
ALTEROPERATOR FAMILY _bit_aa_ops USING gin ADD
11+
FUNCTION6 (bit[],bit[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
12+
13+
ALTEROPERATOR FAMILY _bytea_aa_ops USING gin ADD
14+
FUNCTION6 (bytea[],bytea[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
15+
16+
ALTEROPERATOR FAMILY _char_aa_ops USING gin ADD
17+
FUNCTION6 (char[],char[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
18+
19+
ALTEROPERATOR FAMILY _cidr_aa_ops USING gin ADD
20+
FUNCTION6 (cidr[],cidr[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
21+
22+
ALTEROPERATOR FAMILY _date_aa_ops USING gin ADD
23+
FUNCTION6 (date[],date[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
24+
25+
ALTEROPERATOR FAMILY _float4_aa_ops USING gin ADD
26+
FUNCTION6 (float4[],float4[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
27+
28+
ALTEROPERATOR FAMILY _float8_aa_ops USING gin ADD
29+
FUNCTION6 (float8[],float8[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
30+
31+
ALTEROPERATOR FAMILY _inet_aa_ops USING gin ADD
32+
FUNCTION6 (inet[],inet[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
33+
34+
ALTEROPERATOR FAMILY _int2_aa_ops USING gin ADD
35+
FUNCTION6 (int2[],int2[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
36+
37+
ALTEROPERATOR FAMILY _int4_aa_ops USING gin ADD
38+
FUNCTION6 (int4[],int4[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
39+
40+
ALTEROPERATOR FAMILY _int8_aa_ops USING gin ADD
41+
FUNCTION6 (int8[],int8[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
42+
43+
ALTEROPERATOR FAMILY _interval_aa_ops USING gin ADD
44+
FUNCTION6 (interval[],interval[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
45+
46+
ALTEROPERATOR FAMILY _macaddr_aa_ops USING gin ADD
47+
FUNCTION6 (macaddr[],macaddr[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
48+
49+
ALTEROPERATOR FAMILY _money_aa_ops USING gin ADD
50+
FUNCTION6 (money[],money[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
51+
52+
ALTEROPERATOR FAMILY _numeric_aa_ops USING gin ADD
53+
FUNCTION6 (numeric[],numeric[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
54+
55+
ALTEROPERATOR FAMILY _oid_aa_ops USING gin ADD
56+
FUNCTION6 (oid[],oid[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
57+
58+
ALTEROPERATOR FAMILY _text_aa_ops USING gin ADD
59+
FUNCTION6 (text[],text[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
60+
61+
ALTEROPERATOR FAMILY _time_aa_ops USING gin ADD
62+
FUNCTION6 (time[],time[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
63+
64+
ALTEROPERATOR FAMILY _timestamp_aa_ops USING gin ADD
65+
FUNCTION6 (timestamp[],timestamp[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
66+
67+
ALTEROPERATOR FAMILY _timestamptz_aa_ops USING gin ADD
68+
FUNCTION6 (timestamptz[],timestamptz[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
69+
70+
ALTEROPERATOR FAMILY _timetz_aa_ops USING gin ADD
71+
FUNCTION6 (timetz[],timetz[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
72+
73+
ALTEROPERATOR FAMILY _varbit_aa_ops USING gin ADD
74+
FUNCTION6 (varbit[],varbit[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);
75+
76+
ALTEROPERATOR FAMILY _varchar_aa_ops USING gin ADD
77+
FUNCTION6 (varchar[],varchar[]) ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp