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

Commitf9d747a

Browse files
committed
Support the new regexp_match() function for citext.
Emre HasegeliPatch: <CAE2gYzzF24ZHWqkMukkHwqa0otbES9Rex22LrjQUNbi=oKziNQ@mail.gmail.com>
1 parent9f31e45 commitf9d747a

File tree

8 files changed

+149
-3
lines changed

8 files changed

+149
-3
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.3.sql citext--1.2--1.3.sql citext--1.1--1.2.sql\
6+
DATA = citext--1.4.sql citext--1.3--1.4.sql\
7+
citext--1.2--1.3.sql citext--1.1--1.2.sql\
78
citext--1.0--1.1.sql citext--unpackaged--1.0.sql
89
PGFILEDESC = "citext - case-insensitive character string data type"
910

‎contrib/citext/citext--1.3--1.4.sql

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/* contrib/citext/citext--1.3--1.4.sql*/
2+
3+
-- complain if script is sourced in psql, rather than via ALTER EXTENSION
4+
\echo Use"ALTER EXTENSION citext UPDATE TO '1.4'" to load this file. \quit
5+
6+
CREATEFUNCTIONregexp_match( citext, citext ) RETURNSTEXT[]AS $$
7+
SELECTpg_catalog.regexp_match( $1::pg_catalog.text, $2::pg_catalog.text,'i' );
8+
$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;
9+
10+
CREATEFUNCTIONregexp_match( citext, citext,text ) RETURNSTEXT[]AS $$
11+
SELECTpg_catalog.regexp_match( $1::pg_catalog.text, $2::pg_catalog.text, CASE WHENpg_catalog.strpos($3,'c')=0 THEN $3||'i' ELSE $3 END );
12+
$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;

‎contrib/citext/citext--1.3.sqlrenamed to‎contrib/citext/citext--1.4.sql

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* contrib/citext/citext--1.2.sql*/
1+
/* contrib/citext/citext--1.4.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
@@ -444,6 +444,14 @@ CREATE OPERATOR !~~* (
444444
-- XXX TODO Ideally these would be implemented in C.
445445
--
446446

447+
CREATEFUNCTIONregexp_match( citext, citext ) RETURNSTEXT[]AS $$
448+
SELECTpg_catalog.regexp_match( $1::pg_catalog.text, $2::pg_catalog.text,'i' );
449+
$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;
450+
451+
CREATEFUNCTIONregexp_match( citext, citext,text ) RETURNSTEXT[]AS $$
452+
SELECTpg_catalog.regexp_match( $1::pg_catalog.text, $2::pg_catalog.text, CASE WHENpg_catalog.strpos($3,'c')=0 THEN $3||'i' ELSE $3 END );
453+
$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE;
454+
447455
CREATEFUNCTIONregexp_matches( citext, citext ) RETURNS SETOFTEXT[]AS $$
448456
SELECTpg_catalog.regexp_matches( $1::pg_catalog.text, $2::pg_catalog.text,'i' );
449457
$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE ROWS1;

‎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.3'
3+
default_version = '1.4'
44
module_pathname = '$libdir/citext'
55
relocatable = true

‎contrib/citext/expected/citext.out

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1770,6 +1770,60 @@ SELECT quote_literal( name ) = quote_literal( name::text ) AS t FROM srt;
17701770
t
17711771
(4 rows)
17721772

1773+
SELECT regexp_match('foobarbequebaz'::citext, '(bar)(beque)') = ARRAY[ 'bar', 'beque' ] AS t;
1774+
t
1775+
---
1776+
t
1777+
(1 row)
1778+
1779+
SELECT regexp_match('foobarbequebaz'::citext, '(BAR)(BEQUE)') = ARRAY[ 'bar', 'beque' ] AS t;
1780+
t
1781+
---
1782+
t
1783+
(1 row)
1784+
1785+
SELECT regexp_match('foobarbequebaz'::citext, '(BAR)(BEQUE)'::citext) = ARRAY[ 'bar', 'beque' ] AS t;
1786+
t
1787+
---
1788+
t
1789+
(1 row)
1790+
1791+
SELECT regexp_match('foobarbequebaz'::citext, '(BAR)(BEQUE)'::citext, '') = ARRAY[ 'bar', 'beque' ] AS t;
1792+
t
1793+
---
1794+
t
1795+
(1 row)
1796+
1797+
SELECT regexp_match('foobarbequebaz'::citext, '(BAR)(BEQUE)', '') = ARRAY[ 'bar', 'beque' ] AS t;
1798+
t
1799+
---
1800+
t
1801+
(1 row)
1802+
1803+
SELECT regexp_match('foobarbequebaz', '(BAR)(BEQUE)'::citext, '') = ARRAY[ 'bar', 'beque' ] AS t;
1804+
t
1805+
---
1806+
t
1807+
(1 row)
1808+
1809+
SELECT regexp_match('foobarbequebaz'::citext, '(BAR)(BEQUE)'::citext, ''::citext) = ARRAY[ 'bar', 'beque' ] AS t;
1810+
t
1811+
---
1812+
t
1813+
(1 row)
1814+
1815+
-- c forces case-sensitive
1816+
SELECT regexp_match('foobarbequebaz'::citext, '(BAR)(BEQUE)'::citext, 'c'::citext) = ARRAY[ 'bar', 'beque' ] AS "no result";
1817+
no result
1818+
-----------
1819+
1820+
(1 row)
1821+
1822+
-- g is not allowed
1823+
SELECT regexp_match('foobarbequebazmorebarbequetoo'::citext, '(BAR)(BEQUE)'::citext, 'g') AS "error";
1824+
ERROR: regexp_match does not support the global option
1825+
HINT: Use the regexp_matches function instead.
1826+
CONTEXT: SQL function "regexp_match" statement 1
17731827
SELECT regexp_matches('foobarbequebaz'::citext, '(bar)(beque)') = ARRAY[ 'bar', 'beque' ] AS t;
17741828
t
17751829
---

‎contrib/citext/expected/citext_1.out

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1770,6 +1770,60 @@ SELECT quote_literal( name ) = quote_literal( name::text ) AS t FROM srt;
17701770
t
17711771
(4 rows)
17721772

1773+
SELECT regexp_match('foobarbequebaz'::citext, '(bar)(beque)') = ARRAY[ 'bar', 'beque' ] AS t;
1774+
t
1775+
---
1776+
t
1777+
(1 row)
1778+
1779+
SELECT regexp_match('foobarbequebaz'::citext, '(BAR)(BEQUE)') = ARRAY[ 'bar', 'beque' ] AS t;
1780+
t
1781+
---
1782+
t
1783+
(1 row)
1784+
1785+
SELECT regexp_match('foobarbequebaz'::citext, '(BAR)(BEQUE)'::citext) = ARRAY[ 'bar', 'beque' ] AS t;
1786+
t
1787+
---
1788+
t
1789+
(1 row)
1790+
1791+
SELECT regexp_match('foobarbequebaz'::citext, '(BAR)(BEQUE)'::citext, '') = ARRAY[ 'bar', 'beque' ] AS t;
1792+
t
1793+
---
1794+
t
1795+
(1 row)
1796+
1797+
SELECT regexp_match('foobarbequebaz'::citext, '(BAR)(BEQUE)', '') = ARRAY[ 'bar', 'beque' ] AS t;
1798+
t
1799+
---
1800+
t
1801+
(1 row)
1802+
1803+
SELECT regexp_match('foobarbequebaz', '(BAR)(BEQUE)'::citext, '') = ARRAY[ 'bar', 'beque' ] AS t;
1804+
t
1805+
---
1806+
t
1807+
(1 row)
1808+
1809+
SELECT regexp_match('foobarbequebaz'::citext, '(BAR)(BEQUE)'::citext, ''::citext) = ARRAY[ 'bar', 'beque' ] AS t;
1810+
t
1811+
---
1812+
t
1813+
(1 row)
1814+
1815+
-- c forces case-sensitive
1816+
SELECT regexp_match('foobarbequebaz'::citext, '(BAR)(BEQUE)'::citext, 'c'::citext) = ARRAY[ 'bar', 'beque' ] AS "no result";
1817+
no result
1818+
-----------
1819+
1820+
(1 row)
1821+
1822+
-- g is not allowed
1823+
SELECT regexp_match('foobarbequebazmorebarbequetoo'::citext, '(BAR)(BEQUE)'::citext, 'g') AS "error";
1824+
ERROR: regexp_match does not support the global option
1825+
HINT: Use the regexp_matches function instead.
1826+
CONTEXT: SQL function "regexp_match" statement 1
17731827
SELECT regexp_matches('foobarbequebaz'::citext, '(bar)(beque)') = ARRAY[ 'bar', 'beque' ] AS t;
17741828
t
17751829
---

‎contrib/citext/sql/citext.sql

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,18 @@ SELECT md5( name ) = md5( name::text ) AS t FROM srt;
592592
SELECT quote_ident( name )= quote_ident( name::text )AS tFROM srt;
593593
SELECT quote_literal( name )= quote_literal( name::text )AS tFROM srt;
594594

595+
SELECT regexp_match('foobarbequebaz'::citext,'(bar)(beque)')= ARRAY['bar','beque' ]AS t;
596+
SELECT regexp_match('foobarbequebaz'::citext,'(BAR)(BEQUE)')= ARRAY['bar','beque' ]AS t;
597+
SELECT regexp_match('foobarbequebaz'::citext,'(BAR)(BEQUE)'::citext)= ARRAY['bar','beque' ]AS t;
598+
SELECT regexp_match('foobarbequebaz'::citext,'(BAR)(BEQUE)'::citext,'')= ARRAY['bar','beque' ]AS t;
599+
SELECT regexp_match('foobarbequebaz'::citext,'(BAR)(BEQUE)','')= ARRAY['bar','beque' ]AS t;
600+
SELECT regexp_match('foobarbequebaz','(BAR)(BEQUE)'::citext,'')= ARRAY['bar','beque' ]AS t;
601+
SELECT regexp_match('foobarbequebaz'::citext,'(BAR)(BEQUE)'::citext,''::citext)= ARRAY['bar','beque' ]AS t;
602+
-- c forces case-sensitive
603+
SELECT regexp_match('foobarbequebaz'::citext,'(BAR)(BEQUE)'::citext,'c'::citext)= ARRAY['bar','beque' ]AS"no result";
604+
-- g is not allowed
605+
SELECT regexp_match('foobarbequebazmorebarbequetoo'::citext,'(BAR)(BEQUE)'::citext,'g')AS"error";
606+
595607
SELECT regexp_matches('foobarbequebaz'::citext,'(bar)(beque)')= ARRAY['bar','beque' ]AS t;
596608
SELECT regexp_matches('foobarbequebaz'::citext,'(BAR)(BEQUE)')= ARRAY['bar','beque' ]AS t;
597609
SELECT regexp_matches('foobarbequebaz'::citext,'(BAR)(BEQUE)'::citext)= ARRAY['bar','beque' ]AS t;

‎doc/src/sgml/citext.sgml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,11 @@ SELECT * FROM users WHERE nick = 'Larry';
124124
</para>
125125

126126
<itemizedlist>
127+
<listitem>
128+
<para>
129+
<function>regexp_match()</>
130+
</para>
131+
</listitem>
127132
<listitem>
128133
<para>
129134
<function>regexp_matches()</>

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp