Skip to content

Commit 97a5a16

Browse files
committed
contrib/citext: Use SQL-standard function bodies.
In the same spirit as 969bbd0, 13e3796, 3f323eb. Tom Lane and Ronan Dunklau Discussion: https://postgr.es/m/3316564.aeNJFYEL58@aivenlaptop
1 parent eb53ff5 commit 97a5a16

File tree

4 files changed

+63
-1
lines changed

4 files changed

+63
-1
lines changed

contrib/citext/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ MODULES = citext
44

55
EXTENSION = citext
66
DATA = citext--1.4.sql \
7+
citext--1.7--1.8.sql \
78
citext--1.6--1.7.sql \
89
citext--1.5--1.6.sql \
910
citext--1.4--1.5.sql \

contrib/citext/citext--1.7--1.8.sql

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/* contrib/citext/citext--1.7--1.8.sql */
2+
3+
-- complain if script is sourced in psql, rather than via ALTER EXTENSION
4+
\echo Use "ALTER EXTENSION citext UPDATE TO '1.8'" to load this file. \quit
5+
6+
CREATE OR REPLACE FUNCTION regexp_match(string citext, pattern citext) RETURNS TEXT[]
7+
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE
8+
RETURN pg_catalog.regexp_match( $1::text, $2::text, 'i' );
9+
10+
CREATE OR REPLACE FUNCTION regexp_match(string citext, pattern citext, flags text) RETURNS TEXT[]
11+
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE
12+
RETURN pg_catalog.regexp_match( $1::text, $2::text, CASE WHEN pg_catalog.strpos($3, 'c') = 0 THEN $3 || 'i' ELSE $3 END );
13+
14+
CREATE OR REPLACE FUNCTION regexp_matches(string citext, pattern citext) RETURNS SETOF TEXT[]
15+
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE ROWS 1
16+
RETURN pg_catalog.regexp_matches( $1::text, $2::text, 'i' );
17+
18+
CREATE OR REPLACE FUNCTION regexp_matches(string citext, pattern citext, flags text) RETURNS SETOF TEXT[]
19+
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE ROWS 10
20+
RETURN pg_catalog.regexp_matches( $1::text, $2::text, CASE WHEN pg_catalog.strpos($3, 'c') = 0 THEN $3 || 'i' ELSE $3 END );
21+
22+
CREATE OR REPLACE FUNCTION regexp_replace(string citext, pattern citext, replacement text) returns TEXT
23+
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE
24+
RETURN pg_catalog.regexp_replace( $1::text, $2::text, $3, 'i');
25+
26+
CREATE OR REPLACE FUNCTION regexp_replace(string citext, pattern citext, replacement text, flags text) returns TEXT
27+
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE
28+
RETURN pg_catalog.regexp_replace( $1::text, $2::text, $3, CASE WHEN pg_catalog.strpos($4, 'c') = 0 THEN $4 || 'i' ELSE $4 END);
29+
30+
CREATE OR REPLACE FUNCTION regexp_split_to_array(string citext, pattern citext) RETURNS TEXT[]
31+
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE
32+
RETURN pg_catalog.regexp_split_to_array( $1::text, $2::text, 'i' );
33+
34+
CREATE OR REPLACE FUNCTION regexp_split_to_array(string citext, pattern citext, flags text) RETURNS TEXT[]
35+
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE
36+
RETURN pg_catalog.regexp_split_to_array( $1::text, $2::text, CASE WHEN pg_catalog.strpos($3, 'c') = 0 THEN $3 || 'i' ELSE $3 END );
37+
38+
CREATE OR REPLACE FUNCTION regexp_split_to_table(string citext, pattern citext) RETURNS SETOF TEXT
39+
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE
40+
RETURN pg_catalog.regexp_split_to_table( $1::text, $2::text, 'i' );
41+
42+
CREATE OR REPLACE FUNCTION regexp_split_to_table(string citext, pattern citext, flags text) RETURNS SETOF TEXT
43+
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE
44+
RETURN pg_catalog.regexp_split_to_table( $1::text, $2::text, CASE WHEN pg_catalog.strpos($3, 'c') = 0 THEN $3 || 'i' ELSE $3 END );
45+
46+
CREATE OR REPLACE FUNCTION strpos( citext, citext ) RETURNS INT
47+
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE
48+
RETURN pg_catalog.strpos( pg_catalog.lower( $1::text ), pg_catalog.lower( $2::text ) );
49+
50+
CREATE OR REPLACE FUNCTION replace( citext, citext, citext ) RETURNS TEXT
51+
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE
52+
RETURN pg_catalog.regexp_replace( $1::text, pg_catalog.regexp_replace($2::text, '([^a-zA-Z_0-9])', E'\\\\\\1', 'g'), $3::text, 'gi' );
53+
54+
CREATE OR REPLACE FUNCTION split_part( citext, citext, int ) RETURNS TEXT
55+
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE
56+
RETURN (pg_catalog.regexp_split_to_array( $1::text, pg_catalog.regexp_replace($2::text, '([^a-zA-Z_0-9])', E'\\\\\\1', 'g'), 'i'))[$3];
57+
58+
CREATE OR REPLACE FUNCTION translate( citext, citext, text ) RETURNS TEXT
59+
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE
60+
RETURN pg_catalog.translate( pg_catalog.translate( $1::text, pg_catalog.lower($2::text), $3), pg_catalog.upper($2::text), $3);

contrib/citext/citext.control

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# citext extension
22
comment = 'data type for case-insensitive character strings'
3-
default_version = '1.7'
3+
default_version = '1.8'
44
module_pathname = '$libdir/citext'
55
relocatable = true
66
trusted = true

contrib/citext/meson.build

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ install_data(
2626
'citext--1.4--1.5.sql',
2727
'citext--1.5--1.6.sql',
2828
'citext--1.6--1.7.sql',
29+
'citext--1.7--1.8.sql',
2930
kwargs: contrib_data_args,
3031
)
3132

0 commit comments

Comments
 (0)