diff --git a/src/test/regress/expected/select_parallel.out b/src/test/regress/expected/select_parallel.out
new file mode 100644
index 0000000..9d8beac
--- /dev/null
+++ b/src/test/regress/expected/select_parallel.out
@@ -0,0 +1,54 @@
+--
+-- PARALLEL
+--
+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;
+       QUERY PLAN        
+-------------------------
+ Gather
+   Workers Planned: 1
+   Single Copy: true
+   ->  Seq Scan on tenk1
+(4 rows)
+
+do $$begin
+  begin
+    -- provoke error in worker
+    select stringu1::int2 from tenk1;
+  exception
+    -- raise custom exception, the original message contains
+    -- a worker PID that must be hidden in the test output 
+    when others then raise exception 'Error in worker';
+  end;
+end$$;
+ERROR:  Error in worker
+CONTEXT:  PL/pgSQL function inline_code_block line 8 at RAISE
+rollback;
diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule
index c03f635..7fbb72f 100644
--- a/src/test/regress/parallel_schedule
+++ b/src/test/regress/parallel_schedule
@@ -79,7 +79,7 @@ ignore: random
 # ----------
 # Another group of parallel tests
 # ----------
-test: select_into select_distinct select_distinct_on select_implicit select_having subselect union case join aggregates transactions random portals arrays btree_index hash_index update namespace prepared_xacts delete
+test: select_into select_distinct select_distinct_on select_implicit select_having subselect union case join aggregates transactions random portals arrays btree_index hash_index update namespace prepared_xacts delete select_parallel
 
 # ----------
 # Another group of parallel tests
diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule
index e25660c..7af16bf 100644
--- a/src/test/regress/serial_schedule
+++ b/src/test/regress/serial_schedule
@@ -166,3 +166,4 @@ test: with
 test: xml
 test: event_trigger
 test: stats
+test: select_parallel
diff --git a/src/test/regress/sql/select_parallel.sql b/src/test/regress/sql/select_parallel.sql
new file mode 100644
index 0000000..4091087
--- /dev/null
+++ b/src/test/regress/sql/select_parallel.sql
@@ -0,0 +1,31 @@
+--
+-- PARALLEL
+--
+
+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;
+
+do $$begin
+  begin
+    -- provoke error in worker
+    select stringu1::int2 from tenk1;
+  exception
+    -- raise custom exception, the original message contains
+    -- a worker PID that must be hidden in the test output
+    when others then raise exception 'Error in worker';
+  end;
+end$$;
+
+rollback;
