aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/test/regress/expected/select_parallel.out54
-rw-r--r--src/test/regress/parallel_schedule2
-rw-r--r--src/test/regress/serial_schedule1
-rw-r--r--src/test/regress/sql/select_parallel.sql29
4 files changed, 85 insertions, 1 deletions
diff --git a/src/test/regress/expected/select_parallel.out b/src/test/regress/expected/select_parallel.out
new file mode 100644
index 00000000000..b19dc1b2f0e
--- /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 c03f6352b76..4ebad04d060 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 e25660cdd65..5c7038d6e1b 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 00000000000..1cd4a700f19
--- /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;