diff --git a/src/test/regress/expected/select_parallel.out b/src/test/regress/expected/select_parallel.out new file mode 100644 index 0000000000000000000000000000000000000000..b19dc1b2f0edec843739c1446631bd87bb7dfc98 --- /dev/null +++ b/src/test/regress/expected/select_parallel.out @@ -0,0 +1,54 @@ +-- +-- PARALLEL +-- +-- Serializable isolation would disable parallel query, so explicitly use an +-- arbitrary other level. +begin isolation level repeatable read; +-- setup parallel test +set parallel_setup_cost=0; +set parallel_tuple_cost=0; +explain (costs off) + select count(*) from a_star; + QUERY PLAN +----------------------------------------------------- + Finalize Aggregate + -> Gather + Workers Planned: 1 + -> Partial Aggregate + -> Append + -> Parallel Seq Scan on a_star + -> Parallel Seq Scan on b_star + -> Parallel Seq Scan on c_star + -> Parallel Seq Scan on d_star + -> Parallel Seq Scan on e_star + -> Parallel Seq Scan on f_star +(11 rows) + +select count(*) from a_star; + count +------- + 50 +(1 row) + +set force_parallel_mode=1; +explain (costs off) + select stringu1::int2 from tenk1 where unique1 = 1; + QUERY PLAN +----------------------------------------------- + Gather + Workers Planned: 1 + Single Copy: true + -> Index Scan using tenk1_unique1 on tenk1 + Index Cond: (unique1 = 1) +(5 rows) + +do $$begin + -- Provoke error in worker. The original message CONTEXT contains a worker + -- PID that must be hidden in the test output. PL/pgSQL conveniently + -- substitutes its own CONTEXT. + select stringu1::int2 from tenk1 where unique1 = 1; +end$$; +ERROR: invalid input syntax for integer: "BAAAAA" +CONTEXT: SQL statement "select stringu1::int2 from tenk1 where unique1 = 1" +PL/pgSQL function inline_code_block line 5 at SQL statement +rollback; diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index c03f6352b76139f5ad47b7d39340629248b821c9..4ebad04d060e1952eaa5b28e74117c90f3ee9f15 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -92,7 +92,7 @@ test: brin gin gist spgist privileges init_privs security_label collate matview test: alter_generic alter_operator misc psql async dbsize misc_functions # rules cannot run concurrently with any test that creates a view -test: rules psql_crosstab +test: rules psql_crosstab select_parallel # ---------- # Another group of parallel tests diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule index e25660cdd65b2f19321d629c48b595231f2775c0..5c7038d6e1bb3cbd2b34cc8725c8658ef8fc8bdc 100644 --- a/src/test/regress/serial_schedule +++ b/src/test/regress/serial_schedule @@ -125,6 +125,7 @@ test: dbsize test: misc_functions test: rules test: psql_crosstab +test: select_parallel test: select_views test: portals_p2 test: foreign_key diff --git a/src/test/regress/sql/select_parallel.sql b/src/test/regress/sql/select_parallel.sql new file mode 100644 index 0000000000000000000000000000000000000000..1cd4a700f19b2fff0f3db1da9061271812f6bf71 --- /dev/null +++ b/src/test/regress/sql/select_parallel.sql @@ -0,0 +1,29 @@ +-- +-- PARALLEL +-- + +-- Serializable isolation would disable parallel query, so explicitly use an +-- arbitrary other level. +begin isolation level repeatable read; + +-- setup parallel test +set parallel_setup_cost=0; +set parallel_tuple_cost=0; + +explain (costs off) + select count(*) from a_star; +select count(*) from a_star; + +set force_parallel_mode=1; + +explain (costs off) + select stringu1::int2 from tenk1 where unique1 = 1; + +do $$begin + -- Provoke error in worker. The original message CONTEXT contains a worker + -- PID that must be hidden in the test output. PL/pgSQL conveniently + -- substitutes its own CONTEXT. + select stringu1::int2 from tenk1 where unique1 = 1; +end$$; + +rollback;