From 6c22ae7398198bafeb09cfeb8735b88887e0a922 Mon Sep 17 00:00:00 2001 From: "houzj.fnst" Date: Wed, 28 Apr 2021 10:25:14 +0800 Subject: [PATCH] fix-testcase-with-wrong-parallel-safety-flag --- src/backend/snowball/snowball_func.sql.in | 4 ++-- src/include/catalog/pg_proc.dat | 8 ++++++++ src/pl/plpgsql/src/plpgsql--1.0.sql | 2 +- src/test/isolation/specs/deadlock-parallel.spec | 4 ++-- src/test/regress/expected/aggregates.out | 1 + src/test/regress/expected/create_type.out | 4 ++-- src/test/regress/expected/domain.out | 2 +- src/test/regress/expected/insert.out | 2 +- src/test/regress/input/create_function_1.source | 4 ++-- src/test/regress/output/create_function_1.source | 4 ++-- src/test/regress/sql/aggregates.sql | 1 + src/test/regress/sql/create_type.sql | 4 ++-- src/test/regress/sql/domain.sql | 2 +- src/test/regress/sql/insert.sql | 2 +- 14 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/backend/snowball/snowball_func.sql.in b/src/backend/snowball/snowball_func.sql.in index cb1eaca4fb..08bf3397e4 100644 --- a/src/backend/snowball/snowball_func.sql.in +++ b/src/backend/snowball/snowball_func.sql.in @@ -21,11 +21,11 @@ SET search_path = pg_catalog; CREATE FUNCTION dsnowball_init(INTERNAL) RETURNS INTERNAL AS '$libdir/dict_snowball', 'dsnowball_init' -LANGUAGE C STRICT; +LANGUAGE C STRICT PARALLEL SAFE; CREATE FUNCTION dsnowball_lexize(INTERNAL, INTERNAL, INTERNAL, INTERNAL) RETURNS INTERNAL AS '$libdir/dict_snowball', 'dsnowball_lexize' -LANGUAGE C STRICT; +LANGUAGE C STRICT PARALLEL SAFE; CREATE TEXT SEARCH TEMPLATE snowball (INIT = dsnowball_init, diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat index cac5b82cc6..5690c66f07 100644 --- a/src/include/catalog/pg_proc.dat +++ b/src/include/catalog/pg_proc.dat @@ -8485,6 +8485,14 @@ { oid => '2892', descr => 'release all advisory locks', proname => 'pg_advisory_unlock_all', provolatile => 'v', proparallel => 'r', prorettype => 'void', proargtypes => '', prosrc => 'pg_advisory_unlock_all' }, +{ oid => '6123', descr => 'obtain shared advisory lock for testing purpose', + proname => 'pg_advisory_test_xact_lock_shared', provolatile => 'v', + prorettype => 'void', proargtypes => 'int8', + prosrc => 'pg_advisory_xact_lock_shared_int8' }, +{ oid => '6124', descr => 'obtain exclusive advisory lock for testing purpose', + proname => 'pg_advisory_test_xact_lock', provolatile => 'v', + prorettype => 'void', proargtypes => 'int8', + prosrc => 'pg_advisory_xact_lock_int8' }, # XML support { oid => '2893', descr => 'I/O', diff --git a/src/pl/plpgsql/src/plpgsql--1.0.sql b/src/pl/plpgsql/src/plpgsql--1.0.sql index 6e5b990fcc..165a670aa8 100644 --- a/src/pl/plpgsql/src/plpgsql--1.0.sql +++ b/src/pl/plpgsql/src/plpgsql--1.0.sql @@ -1,7 +1,7 @@ /* src/pl/plpgsql/src/plpgsql--1.0.sql */ CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler - LANGUAGE c AS 'MODULE_PATHNAME'; + LANGUAGE c PARALLEL SAFE AS 'MODULE_PATHNAME'; CREATE FUNCTION plpgsql_inline_handler(internal) RETURNS void STRICT LANGUAGE c AS 'MODULE_PATHNAME'; diff --git a/src/test/isolation/specs/deadlock-parallel.spec b/src/test/isolation/specs/deadlock-parallel.spec index 7ad290c0bd..7beaad46ee 100644 --- a/src/test/isolation/specs/deadlock-parallel.spec +++ b/src/test/isolation/specs/deadlock-parallel.spec @@ -37,10 +37,10 @@ setup { create function lock_share(int,int) returns int language sql as - 'select pg_advisory_xact_lock_shared($1); select 1;' parallel safe; + 'select pg_advisory_test_xact_lock_shared($1); select 1;' parallel safe; create function lock_excl(int,int) returns int language sql as - 'select pg_advisory_xact_lock($1); select 1;' parallel safe; + 'select pg_advisory_test_xact_lock($1); select 1;' parallel safe; create table bigt as select x from generate_series(1, 10000) x; analyze bigt; diff --git a/src/test/regress/expected/aggregates.out b/src/test/regress/expected/aggregates.out index ca06d41dd0..2a4a83fab7 100644 --- a/src/test/regress/expected/aggregates.out +++ b/src/test/regress/expected/aggregates.out @@ -2386,6 +2386,7 @@ rollback; BEGIN; CREATE FUNCTION balkifnull(int8, int4) RETURNS int8 +PARALLEL SAFE STRICT LANGUAGE plpgsql AS $$ BEGIN diff --git a/src/test/regress/expected/create_type.out b/src/test/regress/expected/create_type.out index 14394cc95c..eb1c6bdcd2 100644 --- a/src/test/regress/expected/create_type.out +++ b/src/test/regress/expected/create_type.out @@ -48,7 +48,7 @@ NOTICE: return type int42 is only a shell CREATE FUNCTION int42_out(int42) RETURNS cstring AS 'int4out' - LANGUAGE internal STRICT IMMUTABLE; + LANGUAGE internal STRICT IMMUTABLE PARALLEL SAFE; NOTICE: argument type int42 is only a shell CREATE FUNCTION text_w_default_in(cstring) RETURNS text_w_default @@ -58,7 +58,7 @@ NOTICE: return type text_w_default is only a shell CREATE FUNCTION text_w_default_out(text_w_default) RETURNS cstring AS 'textout' - LANGUAGE internal STRICT IMMUTABLE; + LANGUAGE internal STRICT IMMUTABLE PARALLEL SAFE; NOTICE: argument type text_w_default is only a shell CREATE TYPE int42 ( internallength = 4, diff --git a/src/test/regress/expected/domain.out b/src/test/regress/expected/domain.out index 411d5c003e..c82d189823 100644 --- a/src/test/regress/expected/domain.out +++ b/src/test/regress/expected/domain.out @@ -1067,7 +1067,7 @@ drop domain di; -- this has caused issues in the past -- create function sql_is_distinct_from(anyelement, anyelement) -returns boolean language sql +returns boolean language sql parallel safe as 'select $1 is distinct from $2 limit 1'; create domain inotnull int check (sql_is_distinct_from(value, null)); diff --git a/src/test/regress/expected/insert.out b/src/test/regress/expected/insert.out index 5063a3dc22..7e7ef24098 100644 --- a/src/test/regress/expected/insert.out +++ b/src/test/regress/expected/insert.out @@ -415,7 +415,7 @@ select tableoid::regclass::text, a, min(b) as min_b, max(b) as max_b from list_p create or replace function part_hashint4_noop(value int4, seed int8) returns int8 as $$ select value + seed; -$$ language sql immutable; +$$ language sql immutable parallel safe; create operator class part_test_int4_ops for type int4 using hash as diff --git a/src/test/regress/input/create_function_1.source b/src/test/regress/input/create_function_1.source index 6c69b7fe6c..b9a4e7af38 100644 --- a/src/test/regress/input/create_function_1.source +++ b/src/test/regress/input/create_function_1.source @@ -10,7 +10,7 @@ CREATE FUNCTION widget_in(cstring) CREATE FUNCTION widget_out(widget) RETURNS cstring AS '@libdir@/regress@DLSUFFIX@' - LANGUAGE C STRICT IMMUTABLE; + LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION int44in(cstring) RETURNS city_budget @@ -20,7 +20,7 @@ CREATE FUNCTION int44in(cstring) CREATE FUNCTION int44out(city_budget) RETURNS cstring AS '@libdir@/regress@DLSUFFIX@' - LANGUAGE C STRICT IMMUTABLE; + LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION check_primary_key () RETURNS trigger diff --git a/src/test/regress/output/create_function_1.source b/src/test/regress/output/create_function_1.source index c66146db9d..0c1390e8c5 100644 --- a/src/test/regress/output/create_function_1.source +++ b/src/test/regress/output/create_function_1.source @@ -10,7 +10,7 @@ DETAIL: Creating a shell type definition. CREATE FUNCTION widget_out(widget) RETURNS cstring AS '@libdir@/regress@DLSUFFIX@' - LANGUAGE C STRICT IMMUTABLE; + LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; NOTICE: argument type widget is only a shell CREATE FUNCTION int44in(cstring) RETURNS city_budget @@ -21,7 +21,7 @@ DETAIL: Creating a shell type definition. CREATE FUNCTION int44out(city_budget) RETURNS cstring AS '@libdir@/regress@DLSUFFIX@' - LANGUAGE C STRICT IMMUTABLE; + LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE; NOTICE: argument type city_budget is only a shell CREATE FUNCTION check_primary_key () RETURNS trigger diff --git a/src/test/regress/sql/aggregates.sql b/src/test/regress/sql/aggregates.sql index eb80a2fe06..68990b5b5f 100644 --- a/src/test/regress/sql/aggregates.sql +++ b/src/test/regress/sql/aggregates.sql @@ -978,6 +978,7 @@ rollback; BEGIN; CREATE FUNCTION balkifnull(int8, int4) RETURNS int8 +PARALLEL SAFE STRICT LANGUAGE plpgsql AS $$ BEGIN diff --git a/src/test/regress/sql/create_type.sql b/src/test/regress/sql/create_type.sql index a32a9e6795..285707e532 100644 --- a/src/test/regress/sql/create_type.sql +++ b/src/test/regress/sql/create_type.sql @@ -51,7 +51,7 @@ CREATE FUNCTION int42_in(cstring) CREATE FUNCTION int42_out(int42) RETURNS cstring AS 'int4out' - LANGUAGE internal STRICT IMMUTABLE; + LANGUAGE internal STRICT IMMUTABLE PARALLEL SAFE; CREATE FUNCTION text_w_default_in(cstring) RETURNS text_w_default AS 'textin' @@ -59,7 +59,7 @@ CREATE FUNCTION text_w_default_in(cstring) CREATE FUNCTION text_w_default_out(text_w_default) RETURNS cstring AS 'textout' - LANGUAGE internal STRICT IMMUTABLE; + LANGUAGE internal STRICT IMMUTABLE PARALLEL SAFE; CREATE TYPE int42 ( internallength = 4, diff --git a/src/test/regress/sql/domain.sql b/src/test/regress/sql/domain.sql index 549c0b5adf..a022ae4223 100644 --- a/src/test/regress/sql/domain.sql +++ b/src/test/regress/sql/domain.sql @@ -724,7 +724,7 @@ drop domain di; -- create function sql_is_distinct_from(anyelement, anyelement) -returns boolean language sql +returns boolean language sql parallel safe as 'select $1 is distinct from $2 limit 1'; create domain inotnull int diff --git a/src/test/regress/sql/insert.sql b/src/test/regress/sql/insert.sql index bfaa8a3b27..895524bc88 100644 --- a/src/test/regress/sql/insert.sql +++ b/src/test/regress/sql/insert.sql @@ -258,7 +258,7 @@ select tableoid::regclass::text, a, min(b) as min_b, max(b) as max_b from list_p create or replace function part_hashint4_noop(value int4, seed int8) returns int8 as $$ select value + seed; -$$ language sql immutable; +$$ language sql immutable parallel safe; create operator class part_test_int4_ops for type int4 -- 2.18.4