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

Commita89b4b1

Browse files
committed
Update citext extension for parallel query.
All citext functions are PARALLEL SAFE, and a couple of them canbenefit from having aggregate combine functions.Andreas Karlsson
1 parent40fc457 commita89b4b1

File tree

4 files changed

+101
-42
lines changed

4 files changed

+101
-42
lines changed

‎contrib/citext/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
MODULES = citext
44

55
EXTENSION = citext
6-
DATA = citext--1.1.sql citext--1.0--1.1.sql citext--unpackaged--1.0.sql
6+
DATA = citext--1.2.sql citext--1.1--1.2.sql citext--1.0--1.1.sql\
7+
citext--unpackaged--1.0.sql
78
PGFILEDESC = "citext - case-insensitive character string data type"
89

910
REGRESS = citext

‎contrib/citext/citext--1.1--1.2.sql

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/* contrib/citext/citext--1.1--1.2.sql*/
2+
3+
-- complain if script is sourced in psql, rather than via ALTER EXTENSION
4+
\echo Use"ALTER EXTENSION citext UPDATE TO '1.2'" to load this file. \quit
5+
6+
ALTERFUNCTION citextin(cstring) PARALLEL SAFE;
7+
ALTERFUNCTION citextout(citext) PARALLEL SAFE;
8+
ALTERFUNCTION citextrecv(internal) PARALLEL SAFE;
9+
ALTERFUNCTION citextsend(citext) PARALLEL SAFE;
10+
ALTERFUNCTION citext(bpchar) PARALLEL SAFE;
11+
ALTERFUNCTION citext(boolean) PARALLEL SAFE;
12+
ALTERFUNCTION citext(inet) PARALLEL SAFE;
13+
ALTERFUNCTION citext_eq(citext, citext) PARALLEL SAFE;
14+
ALTERFUNCTION citext_ne(citext, citext) PARALLEL SAFE;
15+
ALTERFUNCTION citext_lt(citext, citext) PARALLEL SAFE;
16+
ALTERFUNCTION citext_le(citext, citext) PARALLEL SAFE;
17+
ALTERFUNCTION citext_gt(citext, citext) PARALLEL SAFE;
18+
ALTERFUNCTION citext_ge(citext, citext) PARALLEL SAFE;
19+
ALTERFUNCTION citext_cmp(citext, citext) PARALLEL SAFE;
20+
ALTERFUNCTION citext_hash(citext) PARALLEL SAFE;
21+
ALTERFUNCTION citext_smaller(citext, citext) PARALLEL SAFE;
22+
ALTERFUNCTION citext_larger(citext, citext) PARALLEL SAFE;
23+
ALTERFUNCTION texticlike(citext, citext) PARALLEL SAFE;
24+
ALTERFUNCTION texticnlike(citext, citext) PARALLEL SAFE;
25+
ALTERFUNCTION texticregexeq(citext, citext) PARALLEL SAFE;
26+
ALTERFUNCTION texticregexne(citext, citext) PARALLEL SAFE;
27+
ALTERFUNCTION texticlike(citext,text) PARALLEL SAFE;
28+
ALTERFUNCTION texticnlike(citext,text) PARALLEL SAFE;
29+
ALTERFUNCTION texticregexeq(citext,text) PARALLEL SAFE;
30+
ALTERFUNCTION texticregexne(citext,text) PARALLEL SAFE;
31+
ALTERFUNCTION regexp_matches(citext, citext) PARALLEL SAFE;
32+
ALTERFUNCTION regexp_matches(citext, citext,text) PARALLEL SAFE;
33+
ALTERFUNCTION regexp_replace(citext, citext,text) PARALLEL SAFE;
34+
ALTERFUNCTION regexp_replace(citext, citext,text,text) PARALLEL SAFE;
35+
ALTERFUNCTION regexp_split_to_array(citext, citext) PARALLEL SAFE;
36+
ALTERFUNCTION regexp_split_to_array(citext, citext,text) PARALLEL SAFE;
37+
ALTERFUNCTION regexp_split_to_table(citext, citext) PARALLEL SAFE;
38+
ALTERFUNCTION regexp_split_to_table(citext, citext,text) PARALLEL SAFE;
39+
ALTERFUNCTION strpos(citext, citext) PARALLEL SAFE;
40+
ALTERFUNCTION replace(citext, citext, citext) PARALLEL SAFE;
41+
ALTERFUNCTION split_part(citext, citext,int) PARALLEL SAFE;
42+
ALTERFUNCTIONtranslate(citext, citext,text) PARALLEL SAFE;
43+
44+
UPDATE pg_procSET proparallel='s'
45+
WHEREoid='min(citext)'::regprocedure;
46+
47+
UPDATE pg_procSET proparallel='s'
48+
WHEREoid='max(citext)'::regprocedure;
49+
50+
UPDATE pg_aggregateSET aggcombinefn='citext_smaller'
51+
WHERE aggfnoid='max(citext)'::regprocedure;
52+
53+
UPDATE pg_aggregateSET aggcombinefn='citext_larger'
54+
WHERE aggfnoid='max(citext)'::regprocedure;

‎contrib/citext/citext--1.1.sqlrenamed to‎contrib/citext/citext--1.2.sql

Lines changed: 44 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* contrib/citext/citext--1.1.sql*/
1+
/* contrib/citext/citext--1.2.sql*/
22

33
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
44
\echo Use"CREATE EXTENSION citext" to load this file. \quit
@@ -22,22 +22,22 @@ CREATE TYPE citext;
2222
CREATEFUNCTIONcitextin(cstring)
2323
RETURNS citext
2424
AS'textin'
25-
LANGUAGE internal IMMUTABLE STRICT;
25+
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE;
2626

2727
CREATEFUNCTIONcitextout(citext)
2828
RETURNS cstring
2929
AS'textout'
30-
LANGUAGE internal IMMUTABLE STRICT;
30+
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE;
3131

3232
CREATEFUNCTIONcitextrecv(internal)
3333
RETURNS citext
3434
AS'textrecv'
35-
LANGUAGE internal STABLE STRICT;
35+
LANGUAGE internal STABLE STRICT PARALLEL SAFE;
3636

3737
CREATEFUNCTIONcitextsend(citext)
3838
RETURNSbytea
3939
AS'textsend'
40-
LANGUAGE internal STABLE STRICT;
40+
LANGUAGE internal STABLE STRICT PARALLEL SAFE;
4141

4242
--
4343
-- The type itself.
@@ -64,17 +64,17 @@ CREATE TYPE citext (
6464
CREATEFUNCTIONcitext(bpchar)
6565
RETURNS citext
6666
AS'rtrim1'
67-
LANGUAGE internal IMMUTABLE STRICT;
67+
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE;
6868

6969
CREATEFUNCTIONcitext(boolean)
7070
RETURNS citext
7171
AS'booltext'
72-
LANGUAGE internal IMMUTABLE STRICT;
72+
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE;
7373

7474
CREATEFUNCTIONcitext(inet)
7575
RETURNS citext
7676
AS'network_show'
77-
LANGUAGE internal IMMUTABLE STRICT;
77+
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE;
7878

7979
--
8080
-- Implicit and assignment type casts.
@@ -96,32 +96,32 @@ CREATE CAST (inet AS citext) WITH FUNCTION citext(inet) AS ASSIGNMENT;
9696
CREATEFUNCTIONcitext_eq( citext, citext )
9797
RETURNS bool
9898
AS'MODULE_PATHNAME'
99-
LANGUAGE C IMMUTABLE STRICT;
99+
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
100100

101101
CREATEFUNCTIONcitext_ne( citext, citext )
102102
RETURNS bool
103103
AS'MODULE_PATHNAME'
104-
LANGUAGE C IMMUTABLE STRICT;
104+
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
105105

106106
CREATEFUNCTIONcitext_lt( citext, citext )
107107
RETURNS bool
108108
AS'MODULE_PATHNAME'
109-
LANGUAGE C IMMUTABLE STRICT;
109+
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
110110

111111
CREATEFUNCTIONcitext_le( citext, citext )
112112
RETURNS bool
113113
AS'MODULE_PATHNAME'
114-
LANGUAGE C IMMUTABLE STRICT;
114+
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
115115

116116
CREATEFUNCTIONcitext_gt( citext, citext )
117117
RETURNS bool
118118
AS'MODULE_PATHNAME'
119-
LANGUAGE C IMMUTABLE STRICT;
119+
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
120120

121121
CREATEFUNCTIONcitext_ge( citext, citext )
122122
RETURNS bool
123123
AS'MODULE_PATHNAME'
124-
LANGUAGE C IMMUTABLE STRICT;
124+
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
125125

126126
--
127127
-- Operators.
@@ -196,12 +196,12 @@ CREATE OPERATOR > (
196196
CREATEFUNCTIONcitext_cmp(citext, citext)
197197
RETURNS int4
198198
AS'MODULE_PATHNAME'
199-
LANGUAGE C STRICT IMMUTABLE;
199+
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
200200

201201
CREATEFUNCTIONcitext_hash(citext)
202202
RETURNS int4
203203
AS'MODULE_PATHNAME'
204-
LANGUAGE C STRICT IMMUTABLE;
204+
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
205205

206206
--
207207
-- The btree indexing operator class.
@@ -232,23 +232,27 @@ DEFAULT FOR TYPE citext USING hash AS
232232
CREATEFUNCTIONcitext_smaller(citext, citext)
233233
RETURNS citext
234234
AS'MODULE_PATHNAME'
235-
LANGUAGE C IMMUTABLE STRICT;
235+
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
236236

237237
CREATEFUNCTIONcitext_larger(citext, citext)
238238
RETURNS citext
239239
AS'MODULE_PATHNAME'
240-
LANGUAGE C IMMUTABLE STRICT;
240+
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
241241

242242
CREATEAGGREGATEmin(citext) (
243243
SFUNC= citext_smaller,
244244
STYPE= citext,
245-
SORTOP=<
245+
SORTOP=<,
246+
PARALLEL= SAFE,
247+
COMBINEFUNC= citext_smaller
246248
);
247249

248250
CREATEAGGREGATEmax(citext) (
249251
SFUNC= citext_larger,
250252
STYPE= citext,
251-
SORTOP=>
253+
SORTOP=>,
254+
PARALLEL= SAFE,
255+
COMBINEFUNC= citext_larger
252256
);
253257

254258
--
@@ -257,19 +261,19 @@ CREATE AGGREGATE max(citext) (
257261

258262
CREATEFUNCTIONtexticlike(citext, citext)
259263
RETURNS boolAS'texticlike'
260-
LANGUAGE internal IMMUTABLE STRICT;
264+
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE;
261265

262266
CREATEFUNCTIONtexticnlike(citext, citext)
263267
RETURNS boolAS'texticnlike'
264-
LANGUAGE internal IMMUTABLE STRICT;
268+
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE;
265269

266270
CREATEFUNCTIONtexticregexeq(citext, citext)
267271
RETURNS boolAS'texticregexeq'
268-
LANGUAGE internal IMMUTABLE STRICT;
272+
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE;
269273

270274
CREATEFUNCTIONtexticregexne(citext, citext)
271275
RETURNS boolAS'texticregexne'
272-
LANGUAGE internal IMMUTABLE STRICT;
276+
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE;
273277

274278
CREATE OPERATOR ~ (
275279
PROCEDURE= texticregexeq,
@@ -349,19 +353,19 @@ CREATE OPERATOR !~~* (
349353

350354
CREATEFUNCTIONtexticlike(citext,text)
351355
RETURNS boolAS'texticlike'
352-
LANGUAGE internal IMMUTABLE STRICT;
356+
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE;
353357

354358
CREATEFUNCTIONtexticnlike(citext,text)
355359
RETURNS boolAS'texticnlike'
356-
LANGUAGE internal IMMUTABLE STRICT;
360+
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE;
357361

358362
CREATEFUNCTIONtexticregexeq(citext,text)
359363
RETURNS boolAS'texticregexeq'
360-
LANGUAGE internal IMMUTABLE STRICT;
364+
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE;
361365

362366
CREATEFUNCTIONtexticregexne(citext,text)
363367
RETURNS boolAS'texticregexne'
364-
LANGUAGE internal IMMUTABLE STRICT;
368+
LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE;
365369

366370
CREATE OPERATOR ~ (
367371
PROCEDURE= texticregexeq,
@@ -442,48 +446,48 @@ CREATE OPERATOR !~~* (
442446

443447
CREATEFUNCTIONregexp_matches( citext, citext ) RETURNS SETOFTEXT[]AS $$
444448
SELECTpg_catalog.regexp_matches( $1::pg_catalog.text, $2::pg_catalog.text,'i' );
445-
$$ LANGUAGE SQL IMMUTABLE STRICT ROWS1;
449+
$$ LANGUAGE SQL IMMUTABLE STRICTPARALLEL SAFEROWS1;
446450

447451
CREATEFUNCTIONregexp_matches( citext, citext,text ) RETURNS SETOFTEXT[]AS $$
448452
SELECTpg_catalog.regexp_matches( $1::pg_catalog.text, $2::pg_catalog.text, CASE WHENpg_catalog.strpos($3,'c')=0 THEN $3||'i' ELSE $3 END );
449-
$$ LANGUAGE SQL IMMUTABLE STRICT ROWS10;
453+
$$ LANGUAGE SQL IMMUTABLE STRICTPARALLEL SAFEROWS10;
450454

451455
CREATEFUNCTIONregexp_replace( citext, citext,text ) returnsTEXTAS $$
452456
SELECTpg_catalog.regexp_replace( $1::pg_catalog.text, $2::pg_catalog.text, $3,'i');
453-
$$ LANGUAGE SQL IMMUTABLE STRICT;
457+
$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;
454458

455459
CREATEFUNCTIONregexp_replace( citext, citext,text,text ) returnsTEXTAS $$
456460
SELECTpg_catalog.regexp_replace( $1::pg_catalog.text, $2::pg_catalog.text, $3, CASE WHENpg_catalog.strpos($4,'c')=0 THEN $4||'i' ELSE $4 END);
457-
$$ LANGUAGE SQL IMMUTABLE STRICT;
461+
$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;
458462

459463
CREATEFUNCTIONregexp_split_to_array( citext, citext ) RETURNSTEXT[]AS $$
460464
SELECTpg_catalog.regexp_split_to_array( $1::pg_catalog.text, $2::pg_catalog.text,'i' );
461-
$$ LANGUAGE SQL IMMUTABLE STRICT;
465+
$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;
462466

463467
CREATEFUNCTIONregexp_split_to_array( citext, citext,text ) RETURNSTEXT[]AS $$
464468
SELECTpg_catalog.regexp_split_to_array( $1::pg_catalog.text, $2::pg_catalog.text, CASE WHENpg_catalog.strpos($3,'c')=0 THEN $3||'i' ELSE $3 END );
465-
$$ LANGUAGE SQL IMMUTABLE STRICT;
469+
$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;
466470

467471
CREATEFUNCTIONregexp_split_to_table( citext, citext ) RETURNS SETOFTEXTAS $$
468472
SELECTpg_catalog.regexp_split_to_table( $1::pg_catalog.text, $2::pg_catalog.text,'i' );
469-
$$ LANGUAGE SQL IMMUTABLE STRICT;
473+
$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;
470474

471475
CREATEFUNCTIONregexp_split_to_table( citext, citext,text ) RETURNS SETOFTEXTAS $$
472476
SELECTpg_catalog.regexp_split_to_table( $1::pg_catalog.text, $2::pg_catalog.text, CASE WHENpg_catalog.strpos($3,'c')=0 THEN $3||'i' ELSE $3 END );
473-
$$ LANGUAGE SQL IMMUTABLE STRICT;
477+
$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;
474478

475479
CREATEFUNCTIONstrpos( citext, citext ) RETURNSINTAS $$
476480
SELECTpg_catalog.strpos(pg_catalog.lower( $1::pg_catalog.text ),pg_catalog.lower( $2::pg_catalog.text ) );
477-
$$ LANGUAGE SQL IMMUTABLE STRICT;
481+
$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;
478482

479483
CREATEFUNCTIONreplace( citext, citext, citext ) RETURNSTEXTAS $$
480484
SELECTpg_catalog.regexp_replace( $1::pg_catalog.text,pg_catalog.regexp_replace($2::pg_catalog.text,'([^a-zA-Z_0-9])', E'\\\\\\1','g'), $3::pg_catalog.text,'gi' );
481-
$$ LANGUAGE SQL IMMUTABLE STRICT;
485+
$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;
482486

483487
CREATEFUNCTIONsplit_part( citext, citext,int ) RETURNSTEXTAS $$
484488
SELECT (pg_catalog.regexp_split_to_array( $1::pg_catalog.text,pg_catalog.regexp_replace($2::pg_catalog.text,'([^a-zA-Z_0-9])', E'\\\\\\1','g'),'i'))[$3];
485-
$$ LANGUAGE SQL IMMUTABLE STRICT;
489+
$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;
486490

487491
CREATEFUNCTIONtranslate( citext, citext,text ) RETURNSTEXTAS $$
488492
SELECTpg_catalog.translate(pg_catalog.translate( $1::pg_catalog.text,pg_catalog.lower($2::pg_catalog.text), $3),pg_catalog.upper($2::pg_catalog.text), $3);
489-
$$ LANGUAGE SQL IMMUTABLE STRICT;
493+
$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;

‎contrib/citext/citext.control

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

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp