diff --git a/contrib/citext/Makefile b/contrib/citext/Makefile index 61e04bce7ae72679391680dffe0114f26022e1be..363a11ba9c6a62d3cb32f44384962799136b8002 100644 --- a/contrib/citext/Makefile +++ b/contrib/citext/Makefile @@ -3,7 +3,8 @@ MODULES = citext EXTENSION = citext -DATA = citext--1.1.sql citext--1.0--1.1.sql citext--unpackaged--1.0.sql +DATA = citext--1.2.sql citext--1.1--1.2.sql citext--1.0--1.1.sql \ + citext--unpackaged--1.0.sql PGFILEDESC = "citext - case-insensitive character string data type" REGRESS = citext diff --git a/contrib/citext/citext--1.1--1.2.sql b/contrib/citext/citext--1.1--1.2.sql new file mode 100644 index 0000000000000000000000000000000000000000..60dd15bbb386833549e0222dd5529da503bfeefd --- /dev/null +++ b/contrib/citext/citext--1.1--1.2.sql @@ -0,0 +1,54 @@ +/* contrib/citext/citext--1.1--1.2.sql */ + +-- complain if script is sourced in psql, rather than via ALTER EXTENSION +\echo Use "ALTER EXTENSION citext UPDATE TO '1.2'" to load this file. \quit + +ALTER FUNCTION citextin(cstring) PARALLEL SAFE; +ALTER FUNCTION citextout(citext) PARALLEL SAFE; +ALTER FUNCTION citextrecv(internal) PARALLEL SAFE; +ALTER FUNCTION citextsend(citext) PARALLEL SAFE; +ALTER FUNCTION citext(bpchar) PARALLEL SAFE; +ALTER FUNCTION citext(boolean) PARALLEL SAFE; +ALTER FUNCTION citext(inet) PARALLEL SAFE; +ALTER FUNCTION citext_eq(citext, citext) PARALLEL SAFE; +ALTER FUNCTION citext_ne(citext, citext) PARALLEL SAFE; +ALTER FUNCTION citext_lt(citext, citext) PARALLEL SAFE; +ALTER FUNCTION citext_le(citext, citext) PARALLEL SAFE; +ALTER FUNCTION citext_gt(citext, citext) PARALLEL SAFE; +ALTER FUNCTION citext_ge(citext, citext) PARALLEL SAFE; +ALTER FUNCTION citext_cmp(citext, citext) PARALLEL SAFE; +ALTER FUNCTION citext_hash(citext) PARALLEL SAFE; +ALTER FUNCTION citext_smaller(citext, citext) PARALLEL SAFE; +ALTER FUNCTION citext_larger(citext, citext) PARALLEL SAFE; +ALTER FUNCTION texticlike(citext, citext) PARALLEL SAFE; +ALTER FUNCTION texticnlike(citext, citext) PARALLEL SAFE; +ALTER FUNCTION texticregexeq(citext, citext) PARALLEL SAFE; +ALTER FUNCTION texticregexne(citext, citext) PARALLEL SAFE; +ALTER FUNCTION texticlike(citext, text) PARALLEL SAFE; +ALTER FUNCTION texticnlike(citext, text) PARALLEL SAFE; +ALTER FUNCTION texticregexeq(citext, text) PARALLEL SAFE; +ALTER FUNCTION texticregexne(citext, text) PARALLEL SAFE; +ALTER FUNCTION regexp_matches(citext, citext) PARALLEL SAFE; +ALTER FUNCTION regexp_matches(citext, citext, text) PARALLEL SAFE; +ALTER FUNCTION regexp_replace(citext, citext, text) PARALLEL SAFE; +ALTER FUNCTION regexp_replace(citext, citext, text, text) PARALLEL SAFE; +ALTER FUNCTION regexp_split_to_array(citext, citext) PARALLEL SAFE; +ALTER FUNCTION regexp_split_to_array(citext, citext, text) PARALLEL SAFE; +ALTER FUNCTION regexp_split_to_table(citext, citext) PARALLEL SAFE; +ALTER FUNCTION regexp_split_to_table(citext, citext, text) PARALLEL SAFE; +ALTER FUNCTION strpos(citext, citext) PARALLEL SAFE; +ALTER FUNCTION replace(citext, citext, citext) PARALLEL SAFE; +ALTER FUNCTION split_part(citext, citext, int) PARALLEL SAFE; +ALTER FUNCTION translate(citext, citext, text) PARALLEL SAFE; + +UPDATE pg_proc SET proparallel = 's' +WHERE oid = 'min(citext)'::regprocedure; + +UPDATE pg_proc SET proparallel = 's' +WHERE oid = 'max(citext)'::regprocedure; + +UPDATE pg_aggregate SET aggcombinefn = 'citext_smaller' +WHERE aggfnoid = 'max(citext)'::regprocedure; + +UPDATE pg_aggregate SET aggcombinefn = 'citext_larger' +WHERE aggfnoid = 'max(citext)'::regprocedure; diff --git a/contrib/citext/citext--1.1.sql b/contrib/citext/citext--1.2.sql similarity index 85% rename from contrib/citext/citext--1.1.sql rename to contrib/citext/citext--1.2.sql index 9ea7c64709a1093cce0cd0ef40f340b6906bec0d..c2d0c0ce9be6d5c47a29648e1090cb75a0f73e56 100644 --- a/contrib/citext/citext--1.1.sql +++ b/contrib/citext/citext--1.2.sql @@ -1,4 +1,4 @@ -/* contrib/citext/citext--1.1.sql */ +/* contrib/citext/citext--1.2.sql */ -- complain if script is sourced in psql, rather than via CREATE EXTENSION \echo Use "CREATE EXTENSION citext" to load this file. \quit @@ -22,22 +22,22 @@ CREATE TYPE citext; CREATE FUNCTION citextin(cstring) RETURNS citext AS 'textin' -LANGUAGE internal IMMUTABLE STRICT; +LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION citextout(citext) RETURNS cstring AS 'textout' -LANGUAGE internal IMMUTABLE STRICT; +LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION citextrecv(internal) RETURNS citext AS 'textrecv' -LANGUAGE internal STABLE STRICT; +LANGUAGE internal STABLE STRICT PARALLEL SAFE; CREATE FUNCTION citextsend(citext) RETURNS bytea AS 'textsend' -LANGUAGE internal STABLE STRICT; +LANGUAGE internal STABLE STRICT PARALLEL SAFE; -- -- The type itself. @@ -64,17 +64,17 @@ CREATE TYPE citext ( CREATE FUNCTION citext(bpchar) RETURNS citext AS 'rtrim1' -LANGUAGE internal IMMUTABLE STRICT; +LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION citext(boolean) RETURNS citext AS 'booltext' -LANGUAGE internal IMMUTABLE STRICT; +LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION citext(inet) RETURNS citext AS 'network_show' -LANGUAGE internal IMMUTABLE STRICT; +LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE; -- -- Implicit and assignment type casts. @@ -96,32 +96,32 @@ CREATE CAST (inet AS citext) WITH FUNCTION citext(inet) AS ASSIGNMENT; CREATE FUNCTION citext_eq( citext, citext ) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE C IMMUTABLE STRICT; +LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION citext_ne( citext, citext ) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE C IMMUTABLE STRICT; +LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION citext_lt( citext, citext ) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE C IMMUTABLE STRICT; +LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION citext_le( citext, citext ) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE C IMMUTABLE STRICT; +LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION citext_gt( citext, citext ) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE C IMMUTABLE STRICT; +LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION citext_ge( citext, citext ) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE C IMMUTABLE STRICT; +LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; -- -- Operators. @@ -196,12 +196,12 @@ CREATE OPERATOR > ( CREATE FUNCTION citext_cmp(citext, citext) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE C STRICT IMMUTABLE; +LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION citext_hash(citext) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE C STRICT IMMUTABLE; +LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; -- -- The btree indexing operator class. @@ -232,23 +232,27 @@ DEFAULT FOR TYPE citext USING hash AS CREATE FUNCTION citext_smaller(citext, citext) RETURNS citext AS 'MODULE_PATHNAME' -LANGUAGE C IMMUTABLE STRICT; +LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION citext_larger(citext, citext) RETURNS citext AS 'MODULE_PATHNAME' -LANGUAGE C IMMUTABLE STRICT; +LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE; CREATE AGGREGATE min(citext) ( SFUNC = citext_smaller, STYPE = citext, - SORTOP = < + SORTOP = <, + PARALLEL = SAFE, + COMBINEFUNC = citext_smaller ); CREATE AGGREGATE max(citext) ( SFUNC = citext_larger, STYPE = citext, - SORTOP = > + SORTOP = >, + PARALLEL = SAFE, + COMBINEFUNC = citext_larger ); -- @@ -257,19 +261,19 @@ CREATE AGGREGATE max(citext) ( CREATE FUNCTION texticlike(citext, citext) RETURNS bool AS 'texticlike' -LANGUAGE internal IMMUTABLE STRICT; +LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION texticnlike(citext, citext) RETURNS bool AS 'texticnlike' -LANGUAGE internal IMMUTABLE STRICT; +LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION texticregexeq(citext, citext) RETURNS bool AS 'texticregexeq' -LANGUAGE internal IMMUTABLE STRICT; +LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION texticregexne(citext, citext) RETURNS bool AS 'texticregexne' -LANGUAGE internal IMMUTABLE STRICT; +LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~ ( PROCEDURE = texticregexeq, @@ -349,19 +353,19 @@ CREATE OPERATOR !~~* ( CREATE FUNCTION texticlike(citext, text) RETURNS bool AS 'texticlike' -LANGUAGE internal IMMUTABLE STRICT; +LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION texticnlike(citext, text) RETURNS bool AS 'texticnlike' -LANGUAGE internal IMMUTABLE STRICT; +LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION texticregexeq(citext, text) RETURNS bool AS 'texticregexeq' -LANGUAGE internal IMMUTABLE STRICT; +LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION texticregexne(citext, text) RETURNS bool AS 'texticregexne' -LANGUAGE internal IMMUTABLE STRICT; +LANGUAGE internal IMMUTABLE STRICT PARALLEL SAFE; CREATE OPERATOR ~ ( PROCEDURE = texticregexeq, @@ -442,48 +446,48 @@ CREATE OPERATOR !~~* ( CREATE FUNCTION regexp_matches( citext, citext ) RETURNS SETOF TEXT[] AS $$ SELECT pg_catalog.regexp_matches( $1::pg_catalog.text, $2::pg_catalog.text, 'i' ); -$$ LANGUAGE SQL IMMUTABLE STRICT ROWS 1; +$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE ROWS 1; CREATE FUNCTION regexp_matches( citext, citext, text ) RETURNS SETOF TEXT[] AS $$ SELECT pg_catalog.regexp_matches( $1::pg_catalog.text, $2::pg_catalog.text, CASE WHEN pg_catalog.strpos($3, 'c') = 0 THEN $3 || 'i' ELSE $3 END ); -$$ LANGUAGE SQL IMMUTABLE STRICT ROWS 10; +$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE ROWS 10; CREATE FUNCTION regexp_replace( citext, citext, text ) returns TEXT AS $$ SELECT pg_catalog.regexp_replace( $1::pg_catalog.text, $2::pg_catalog.text, $3, 'i'); -$$ LANGUAGE SQL IMMUTABLE STRICT; +$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION regexp_replace( citext, citext, text, text ) returns TEXT AS $$ SELECT pg_catalog.regexp_replace( $1::pg_catalog.text, $2::pg_catalog.text, $3, CASE WHEN pg_catalog.strpos($4, 'c') = 0 THEN $4 || 'i' ELSE $4 END); -$$ LANGUAGE SQL IMMUTABLE STRICT; +$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION regexp_split_to_array( citext, citext ) RETURNS TEXT[] AS $$ SELECT pg_catalog.regexp_split_to_array( $1::pg_catalog.text, $2::pg_catalog.text, 'i' ); -$$ LANGUAGE SQL IMMUTABLE STRICT; +$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION regexp_split_to_array( citext, citext, text ) RETURNS TEXT[] AS $$ SELECT pg_catalog.regexp_split_to_array( $1::pg_catalog.text, $2::pg_catalog.text, CASE WHEN pg_catalog.strpos($3, 'c') = 0 THEN $3 || 'i' ELSE $3 END ); -$$ LANGUAGE SQL IMMUTABLE STRICT; +$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION regexp_split_to_table( citext, citext ) RETURNS SETOF TEXT AS $$ SELECT pg_catalog.regexp_split_to_table( $1::pg_catalog.text, $2::pg_catalog.text, 'i' ); -$$ LANGUAGE SQL IMMUTABLE STRICT; +$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION regexp_split_to_table( citext, citext, text ) RETURNS SETOF TEXT AS $$ SELECT pg_catalog.regexp_split_to_table( $1::pg_catalog.text, $2::pg_catalog.text, CASE WHEN pg_catalog.strpos($3, 'c') = 0 THEN $3 || 'i' ELSE $3 END ); -$$ LANGUAGE SQL IMMUTABLE STRICT; +$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION strpos( citext, citext ) RETURNS INT AS $$ SELECT pg_catalog.strpos( pg_catalog.lower( $1::pg_catalog.text ), pg_catalog.lower( $2::pg_catalog.text ) ); -$$ LANGUAGE SQL IMMUTABLE STRICT; +$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION replace( citext, citext, citext ) RETURNS TEXT AS $$ SELECT pg_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' ); -$$ LANGUAGE SQL IMMUTABLE STRICT; +$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION split_part( citext, citext, int ) RETURNS TEXT AS $$ 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]; -$$ LANGUAGE SQL IMMUTABLE STRICT; +$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE; CREATE FUNCTION translate( citext, citext, text ) RETURNS TEXT AS $$ SELECT pg_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); -$$ LANGUAGE SQL IMMUTABLE STRICT; +$$ LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE; diff --git a/contrib/citext/citext.control b/contrib/citext/citext.control index ef90a97bc981907855ad2233d262a423cada9142..7cba65d1105ed3ba4b80adc68c7f7ac4b3ce0bf7 100644 --- a/contrib/citext/citext.control +++ b/contrib/citext/citext.control @@ -1,5 +1,5 @@ # citext extension comment = 'data type for case-insensitive character strings' -default_version = '1.1' +default_version = '1.2' module_pathname = '$libdir/citext' relocatable = true