mirror of
https://github.com/postgres/postgres.git
synced 2025-08-08 06:02:22 +03:00
Update extensions with GIN/GIST support for parallel query.
Commit 749a787c5b
bumped the extension
version on all of these extensions already, and we haven't had a
release since then, so we can make further changes without bumping the
extension version again. Take this opportunity to mark all of the
functions exported by these modules PARALLEL SAFE -- except for
pg_trgm's set_limit(). Mark that one PARALLEL RESTRICTED, because it
makes a persistent change to a GUC value.
Note that some of the markings added by this commit don't have any
effect; for example, gseg_picksplit() isn't likely to be mentioned
explicitly in a query and therefore it's parallel-safety marking will
never be consulted. But this commit just marks everything for
consistency: if it were somehow used in a query, that would be fine as
far as parallel query is concerned, since it does not consult any
backend-private state, attempt to write data, etc.
Andreas Karlsson, with a few revisions by me.
This commit is contained in:
@@ -22,3 +22,29 @@ WHERE oid = pg_catalog.to_regprocedure(oldproc);
|
||||
UPDATE pg_catalog.pg_proc SET
|
||||
prorettype = 'gtrgm'::pg_catalog.regtype
|
||||
WHERE oid = pg_catalog.to_regprocedure('gtrgm_union(internal,internal)');
|
||||
|
||||
ALTER FUNCTION set_limit(float4) PARALLEL RESTRICTED;
|
||||
ALTER FUNCTION show_limit() PARALLEL SAFE;
|
||||
ALTER FUNCTION show_trgm(text) PARALLEL SAFE;
|
||||
ALTER FUNCTION similarity(text, text) PARALLEL SAFE;
|
||||
ALTER FUNCTION similarity_op(text, text) PARALLEL SAFE;
|
||||
ALTER FUNCTION word_similarity(text, text) PARALLEL SAFE;
|
||||
ALTER FUNCTION word_similarity_op(text, text) PARALLEL SAFE;
|
||||
ALTER FUNCTION word_similarity_commutator_op(text, text) PARALLEL SAFE;
|
||||
ALTER FUNCTION similarity_dist(text, text) PARALLEL SAFE;
|
||||
ALTER FUNCTION word_similarity_dist_op(text, text) PARALLEL SAFE;
|
||||
ALTER FUNCTION word_similarity_dist_commutator_op(text, text) PARALLEL SAFE;
|
||||
ALTER FUNCTION gtrgm_in(cstring) PARALLEL SAFE;
|
||||
ALTER FUNCTION gtrgm_out(gtrgm) PARALLEL SAFE;
|
||||
ALTER FUNCTION gtrgm_consistent(internal, text, smallint, oid, internal) PARALLEL SAFE;
|
||||
ALTER FUNCTION gtrgm_distance(internal, text, smallint, oid, internal) PARALLEL SAFE;
|
||||
ALTER FUNCTION gtrgm_compress(internal) PARALLEL SAFE;
|
||||
ALTER FUNCTION gtrgm_decompress(internal) PARALLEL SAFE;
|
||||
ALTER FUNCTION gtrgm_penalty(internal, internal, internal) PARALLEL SAFE;
|
||||
ALTER FUNCTION gtrgm_picksplit(internal, internal) PARALLEL SAFE;
|
||||
ALTER FUNCTION gtrgm_union(internal, internal) PARALLEL SAFE;
|
||||
ALTER FUNCTION gtrgm_same(gtrgm, gtrgm, internal) PARALLEL SAFE;
|
||||
ALTER FUNCTION gin_extract_value_trgm(text, internal) PARALLEL SAFE;
|
||||
ALTER FUNCTION gin_extract_query_trgm(text, internal, int2, internal, internal, internal, internal) PARALLEL SAFE;
|
||||
ALTER FUNCTION gin_trgm_consistent(internal, int2, text, int4, internal, internal, internal, internal) PARALLEL SAFE;
|
||||
ALTER FUNCTION gin_trgm_triconsistent(internal, int2, text, int4, internal, internal, internal) PARALLEL SAFE;
|
||||
|
@@ -7,28 +7,28 @@
|
||||
CREATE FUNCTION set_limit(float4)
|
||||
RETURNS float4
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT VOLATILE;
|
||||
LANGUAGE C STRICT VOLATILE PARALLEL RESTRICTED;
|
||||
|
||||
-- Deprecated function
|
||||
CREATE FUNCTION show_limit()
|
||||
RETURNS float4
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT STABLE;
|
||||
LANGUAGE C STRICT STABLE PARALLEL SAFE;
|
||||
|
||||
CREATE FUNCTION show_trgm(text)
|
||||
RETURNS _text
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT IMMUTABLE;
|
||||
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
|
||||
|
||||
CREATE FUNCTION similarity(text,text)
|
||||
RETURNS float4
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT IMMUTABLE;
|
||||
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
|
||||
|
||||
CREATE FUNCTION similarity_op(text,text)
|
||||
RETURNS bool
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT STABLE; -- stable because depends on pg_trgm.similarity_threshold
|
||||
LANGUAGE C STRICT STABLE PARALLEL SAFE; -- stable because depends on pg_trgm.similarity_threshold
|
||||
|
||||
CREATE OPERATOR % (
|
||||
LEFTARG = text,
|
||||
@@ -42,17 +42,17 @@ CREATE OPERATOR % (
|
||||
CREATE FUNCTION word_similarity(text,text)
|
||||
RETURNS float4
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT IMMUTABLE;
|
||||
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
|
||||
|
||||
CREATE FUNCTION word_similarity_op(text,text)
|
||||
RETURNS bool
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT STABLE; -- stable because depends on pg_trgm.word_similarity_threshold
|
||||
LANGUAGE C STRICT STABLE PARALLEL SAFE; -- stable because depends on pg_trgm.word_similarity_threshold
|
||||
|
||||
CREATE FUNCTION word_similarity_commutator_op(text,text)
|
||||
RETURNS bool
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT STABLE; -- stable because depends on pg_trgm.word_similarity_threshold
|
||||
LANGUAGE C STRICT STABLE PARALLEL SAFE; -- stable because depends on pg_trgm.word_similarity_threshold
|
||||
|
||||
CREATE OPERATOR <% (
|
||||
LEFTARG = text,
|
||||
@@ -75,7 +75,7 @@ CREATE OPERATOR %> (
|
||||
CREATE FUNCTION similarity_dist(text,text)
|
||||
RETURNS float4
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT IMMUTABLE;
|
||||
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
|
||||
|
||||
CREATE OPERATOR <-> (
|
||||
LEFTARG = text,
|
||||
@@ -87,12 +87,12 @@ CREATE OPERATOR <-> (
|
||||
CREATE FUNCTION word_similarity_dist_op(text,text)
|
||||
RETURNS float4
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT IMMUTABLE;
|
||||
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
|
||||
|
||||
CREATE FUNCTION word_similarity_dist_commutator_op(text,text)
|
||||
RETURNS float4
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT IMMUTABLE;
|
||||
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
|
||||
|
||||
CREATE OPERATOR <<-> (
|
||||
LEFTARG = text,
|
||||
@@ -112,12 +112,12 @@ CREATE OPERATOR <->> (
|
||||
CREATE FUNCTION gtrgm_in(cstring)
|
||||
RETURNS gtrgm
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT IMMUTABLE;
|
||||
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
|
||||
|
||||
CREATE FUNCTION gtrgm_out(gtrgm)
|
||||
RETURNS cstring
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C STRICT IMMUTABLE;
|
||||
LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
|
||||
|
||||
CREATE TYPE gtrgm (
|
||||
INTERNALLENGTH = -1,
|
||||
@@ -129,42 +129,42 @@ CREATE TYPE gtrgm (
|
||||
CREATE FUNCTION gtrgm_consistent(internal,text,smallint,oid,internal)
|
||||
RETURNS bool
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C IMMUTABLE STRICT;
|
||||
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||
|
||||
CREATE FUNCTION gtrgm_distance(internal,text,smallint,oid,internal)
|
||||
RETURNS float8
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C IMMUTABLE STRICT;
|
||||
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||
|
||||
CREATE FUNCTION gtrgm_compress(internal)
|
||||
RETURNS internal
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C IMMUTABLE STRICT;
|
||||
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||
|
||||
CREATE FUNCTION gtrgm_decompress(internal)
|
||||
RETURNS internal
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C IMMUTABLE STRICT;
|
||||
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||
|
||||
CREATE FUNCTION gtrgm_penalty(internal,internal,internal)
|
||||
RETURNS internal
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C IMMUTABLE STRICT;
|
||||
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||
|
||||
CREATE FUNCTION gtrgm_picksplit(internal, internal)
|
||||
RETURNS internal
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C IMMUTABLE STRICT;
|
||||
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||
|
||||
CREATE FUNCTION gtrgm_union(internal, internal)
|
||||
RETURNS gtrgm
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C IMMUTABLE STRICT;
|
||||
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||
|
||||
CREATE FUNCTION gtrgm_same(gtrgm, gtrgm, internal)
|
||||
RETURNS internal
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C IMMUTABLE STRICT;
|
||||
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||
|
||||
-- create the operator class for gist
|
||||
CREATE OPERATOR CLASS gist_trgm_ops
|
||||
@@ -207,17 +207,17 @@ ALTER OPERATOR FAMILY gist_trgm_ops USING gist ADD
|
||||
CREATE FUNCTION gin_extract_value_trgm(text, internal)
|
||||
RETURNS internal
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C IMMUTABLE STRICT;
|
||||
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||
|
||||
CREATE FUNCTION gin_extract_query_trgm(text, internal, int2, internal, internal, internal, internal)
|
||||
RETURNS internal
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C IMMUTABLE STRICT;
|
||||
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||
|
||||
CREATE FUNCTION gin_trgm_consistent(internal, int2, text, int4, internal, internal, internal, internal)
|
||||
RETURNS bool
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C IMMUTABLE STRICT;
|
||||
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||
|
||||
-- create the operator class for gin
|
||||
CREATE OPERATOR CLASS gin_trgm_ops
|
||||
@@ -247,7 +247,7 @@ ALTER OPERATOR FAMILY gin_trgm_ops USING gin ADD
|
||||
CREATE FUNCTION gin_trgm_triconsistent(internal, int2, text, int4, internal, internal, internal)
|
||||
RETURNS "char"
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C IMMUTABLE STRICT;
|
||||
LANGUAGE C IMMUTABLE STRICT PARALLEL SAFE;
|
||||
|
||||
ALTER OPERATOR FAMILY gin_trgm_ops USING gin ADD
|
||||
OPERATOR 7 %> (text, text),
|
||||
|
Reference in New Issue
Block a user