Skip to content

Commit a61742c

Browse files
author
Vladlen Popolitov
committed
Anyarray support for uuid type added in GIST, GIN, RUM
1 parent acff257 commit a61742c

File tree

6 files changed

+863
-6
lines changed

6 files changed

+863
-6
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ REGRESS = security init anyarray \
1313
text varchar char varbit bit bytea \
1414
interval money oid \
1515
timestamp timestamptz time timetz date \
16-
macaddr inet cidr anyarrayrum
16+
macaddr inet cidr anyarrayrum uuid
1717

1818
ifdef USE_PGXS
1919
PG_CONFIG = pg_config

anyarray--1.2.sql

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1487,4 +1487,54 @@ AS
14871487
FUNCTION 7 rumanyarray_preconsistent(internal,smallint,anyarray,integer,internal,internal,internal,internal),
14881488
FUNCTION 8 rumanyarray_ordering(internal,smallint,anyarray,int,internal,internal,internal,internal,internal),
14891489
STORAGE varchar;
1490-
1490+
1491+
CREATE OPERATOR CLASS _uuid_aa_ops
1492+
FOR TYPE _uuid USING gist
1493+
AS
1494+
OPERATOR 3 && (anyarray, anyarray),
1495+
OPERATOR 6 = (anyarray, anyarray),
1496+
OPERATOR 7 @> (anyarray, anyarray),
1497+
OPERATOR 8 <@ (anyarray, anyarray),
1498+
OPERATOR 16 % (anyarray, anyarray),
1499+
FUNCTION 1 ganyarray_consistent(internal,internal,int,oid,internal),
1500+
FUNCTION 2 ganyarray_union (bytea, internal),
1501+
FUNCTION 3 ganyarray_compress (internal),
1502+
FUNCTION 4 ganyarray_decompress (internal),
1503+
FUNCTION 5 ganyarray_penalty (internal, internal, internal),
1504+
FUNCTION 6 ganyarray_picksplit (internal, internal),
1505+
FUNCTION 7 ganyarray_same (ganyarray, ganyarray, internal),
1506+
STORAGE ganyarray;
1507+
1508+
CREATE OPERATOR CLASS _uuid_aa_ops
1509+
FOR TYPE _uuid USING gin
1510+
AS
1511+
OPERATOR 3 && (anyarray, anyarray),
1512+
OPERATOR 6 = (anyarray, anyarray),
1513+
OPERATOR 7 @> (anyarray, anyarray),
1514+
OPERATOR 8 <@ (anyarray, anyarray),
1515+
OPERATOR 16 % (anyarray, anyarray),
1516+
FUNCTION 1 uuid_cmp(uuid,uuid),
1517+
FUNCTION 2 ginanyarray_extract(anyarray, internal),
1518+
FUNCTION 3 ginanyarray_queryextract(anyarray, internal, internal),
1519+
FUNCTION 4 ginanyarray_consistent(internal, internal, anyarray),
1520+
FUNCTION 6 ginanyarray_triconsistent(internal, internal, anyarray,internal,internal,internal,internal,internal),
1521+
STORAGE uuid;
1522+
1523+
CREATE OPERATOR CLASS _uuid_aa_ops
1524+
FOR TYPE _uuid USING rum
1525+
AS
1526+
OPERATOR 1 && (anyarray, anyarray),
1527+
OPERATOR 2 @> (anyarray, anyarray),
1528+
OPERATOR 3 <@ (anyarray, anyarray),
1529+
OPERATOR 4 = (anyarray, anyarray),
1530+
OPERATOR 5 % (anyarray, anyarray),
1531+
OPERATOR 20 <=> (anyarray, anyarray) FOR ORDER BY pg_catalog.float_ops,
1532+
--dispatch function 1 for concrete type
1533+
FUNCTION 1 uuid_cmp(uuid,uuid),
1534+
FUNCTION 2 rumextract_anyarray(anyarray,internal,internal,internal,internal),
1535+
FUNCTION 3 rumextract_anyarray_query(anyarray,internal,smallint,internal,internal,internal,internal),
1536+
FUNCTION 4 rumanyarray_consistent(internal,smallint,anyarray,integer,internal,internal,internal,internal),
1537+
FUNCTION 6 rumanyarray_config(internal),
1538+
FUNCTION 7 rumanyarray_preconsistent(internal,smallint,anyarray,integer,internal,internal,internal,internal),
1539+
FUNCTION 8 rumanyarray_ordering(internal,smallint,anyarray,int,internal,internal,internal,internal,internal),
1540+
STORAGE uuid;

expected/init.out

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,9 @@ ORDER BY opc.opcname;
3838
_timestamp_aa_ops | _timestamp | f
3939
_timestamptz_aa_ops | _timestamptz | f
4040
_timetz_aa_ops | _timetz | f
41+
_uuid_aa_ops | _uuid | f
4142
_varchar_aa_ops | _varchar | f
42-
(20 rows)
43+
(21 rows)
4344

4445
SELECT
4546
opc.opcname,
@@ -78,9 +79,10 @@ ORDER BY opc.opcname;
7879
_timestamp_aa_ops | _timestamp | f
7980
_timestamptz_aa_ops | _timestamptz | f
8081
_timetz_aa_ops | _timetz | f
82+
_uuid_aa_ops | _uuid | f
8183
_varbit_aa_ops | _varbit | f
8284
_varchar_aa_ops | _varchar | f
83-
(23 rows)
85+
(24 rows)
8486

8587
SELECT
8688
am.amname,
@@ -206,6 +208,11 @@ ORDER BY
206208
gin | _timetz_aa_ops | <@ | 5
207209
gin | _timetz_aa_ops | = | 5
208210
gin | _timetz_aa_ops | @> | 5
211+
gin | _uuid_aa_ops | % | 5
212+
gin | _uuid_aa_ops | && | 5
213+
gin | _uuid_aa_ops | <@ | 5
214+
gin | _uuid_aa_ops | = | 5
215+
gin | _uuid_aa_ops | @> | 5
209216
gin | _varbit_aa_ops | % | 5
210217
gin | _varbit_aa_ops | && | 5
211218
gin | _varbit_aa_ops | <@ | 5
@@ -311,6 +318,11 @@ ORDER BY
311318
gist | _timetz_aa_ops | <@ | 5
312319
gist | _timetz_aa_ops | = | 5
313320
gist | _timetz_aa_ops | @> | 5
321+
gist | _uuid_aa_ops | % | 5
322+
gist | _uuid_aa_ops | && | 5
323+
gist | _uuid_aa_ops | <@ | 5
324+
gist | _uuid_aa_ops | = | 5
325+
gist | _uuid_aa_ops | @> | 5
314326
gist | _varchar_aa_ops | % | 5
315327
gist | _varchar_aa_ops | && | 5
316328
gist | _varchar_aa_ops | <@ | 5
@@ -442,6 +454,12 @@ ORDER BY
442454
rum | _timetz_aa_ops | <@ | 6
443455
rum | _timetz_aa_ops | = | 6
444456
rum | _timetz_aa_ops | @> | 6
457+
rum | _uuid_aa_ops | % | 6
458+
rum | _uuid_aa_ops | && | 6
459+
rum | _uuid_aa_ops | <=> | 6
460+
rum | _uuid_aa_ops | <@ | 6
461+
rum | _uuid_aa_ops | = | 6
462+
rum | _uuid_aa_ops | @> | 6
445463
rum | _varbit_aa_ops | % | 6
446464
rum | _varbit_aa_ops | && | 6
447465
rum | _varbit_aa_ops | <=> | 6
@@ -454,7 +472,7 @@ ORDER BY
454472
rum | _varchar_aa_ops | <@ | 6
455473
rum | _varchar_aa_ops | = | 6
456474
rum | _varchar_aa_ops | @> | 6
457-
(353 rows)
475+
(369 rows)
458476

459477
SELECT
460478
trim( leading '_' from t.typname ) || '[]' AS "Array Type",
@@ -516,9 +534,10 @@ ORDER BY
516534
timestamp[] | _timestamp_aa_ops | _timestamp_aa_ops
517535
timestamptz[] | _timestamptz_aa_ops | _timestamptz_aa_ops
518536
timetz[] | _timetz_aa_ops | _timetz_aa_ops
537+
uuid[] | _uuid_aa_ops | _uuid_aa_ops
519538
varbit[] | _varbit_aa_ops |
520539
varchar[] | _varchar_aa_ops | _varchar_aa_ops
521-
(23 rows)
540+
(24 rows)
522541

523542
--testing function
524543
CREATE OR REPLACE FUNCTION epoch2timestamp(int8)
@@ -543,6 +562,15 @@ RETURNS _macaddr AS $$
543562
generate_series( 1, array_upper( $1, 1) - array_lower( $1, 1 ) + 1 ) AS n
544563
);
545564
$$ LANGUAGE SQL RETURNS NULL ON NULL INPUT IMMUTABLE;
565+
CREATE OR REPLACE FUNCTION to_uuid_array(_int8)
566+
RETURNS _uuid AS $$
567+
SELECT ARRAY(
568+
SELECT
569+
('a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a' || RIGHT('00' || to_hex($1[n] % 256),2))::uuid
570+
FROM
571+
generate_series( 1, array_upper( $1, 1) - array_lower( $1, 1 ) + 1 ) AS n
572+
);
573+
$$ LANGUAGE SQL RETURNS NULL ON NULL INPUT IMMUTABLE;
546574
CREATE OR REPLACE FUNCTION to_inetp_array(_int8)
547575
RETURNS _inet AS $$
548576
SELECT ARRAY(

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy