From 14a254fb52423c57059851abafbd1247261f7f03 Mon Sep 17 00:00:00 2001 From: Noah Misch Date: Tue, 7 Jun 2016 23:36:22 -0400 Subject: [PATCH] Test parallel query essentials in "make check". MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Clément Prévost and Peter Eisentraut --- src/test/regress/expected/select_parallel.out | 54 +++++++++++++++++++ src/test/regress/parallel_schedule | 2 +- src/test/regress/serial_schedule | 1 + src/test/regress/sql/select_parallel.sql | 29 ++++++++++ 4 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 src/test/regress/expected/select_parallel.out create mode 100644 src/test/regress/sql/select_parallel.sql diff --git a/src/test/regress/expected/select_parallel.out b/src/test/regress/expected/select_parallel.out new file mode 100644 index 0000000000..b19dc1b2f0 --- /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 c03f6352b7..4ebad04d06 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 e25660cdd6..5c7038d6e1 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 0000000000..1cd4a700f1 --- /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; -- 2.40.0