diff options
Diffstat (limited to 'src/test/regress/sql/plpgsql.sql')
-rw-r--r-- | src/test/regress/sql/plpgsql.sql | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/test/regress/sql/plpgsql.sql b/src/test/regress/sql/plpgsql.sql index 5a9b2f00402..9ca9449a501 100644 --- a/src/test/regress/sql/plpgsql.sql +++ b/src/test/regress/sql/plpgsql.sql @@ -3356,7 +3356,7 @@ declare v int := 0; begin return 10 / v; end; -$$ language plpgsql; +$$ language plpgsql parallel safe; create or replace function raise_test() returns void as $$ begin @@ -3417,9 +3417,29 @@ $$ language plpgsql; select stacked_diagnostics_test(); -drop function zero_divide(); drop function stacked_diagnostics_test(); +-- Test that an error recovery subtransaction is parallel safe + +create function error_trap_test() returns text as $$ +begin + perform zero_divide(); + return 'no error detected!'; +exception when division_by_zero then + return 'division_by_zero detected'; +end; +$$ language plpgsql parallel safe; + +set debug_parallel_query to on; + +explain (verbose, costs off) select error_trap_test(); +select error_trap_test(); + +reset debug_parallel_query; + +drop function error_trap_test(); +drop function zero_divide(); + -- check cases where implicit SQLSTATE variable could be confused with -- SQLSTATE as a keyword, cf bug #5524 create or replace function raise_test() returns void as $$ |