SET parallel_tuple_cost to 0;
SET min_parallel_relation_size to 0;
SET max_parallel_workers_per_gather to DEFAULT;
-/*+Parallel(t1 10)*/
+/*+Parallel(t1 8)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1;
LOG: pg_hint_plan:
used hint:
-Parallel(t1 10 soft)
+Parallel(t1 8 soft)
not used hint:
duplication hint:
error hint:
-> Parallel Seq Scan on t1
(3 rows)
-/*+Parallel(t1 10 soft)*/
+/*+Parallel(t1 8 soft)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1;
LOG: pg_hint_plan:
used hint:
-Parallel(t1 10 soft)
+Parallel(t1 8 soft)
not used hint:
duplication hint:
error hint:
-> Parallel Seq Scan on t1
(3 rows)
-/*+Parallel(t1 10 hard)*/
+/*+Parallel(t1 8 hard)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1;
LOG: pg_hint_plan:
used hint:
-Parallel(t1 10 hard)
+Parallel(t1 8 hard)
not used hint:
duplication hint:
error hint:
QUERY PLAN
-------------------------------
Gather
- Workers Planned: 10
+ Workers Planned: 8
-> Parallel Seq Scan on t1
(3 rows)
SET parallel_setup_cost to 0;
SET parallel_tuple_cost to 0;
SET min_parallel_relation_size to 0;
-/*+Parallel(p1 10)*/
+/*+Parallel(p1 8)*/
EXPLAIN (COSTS false) SELECT * FROM p1;
LOG: pg_hint_plan:
used hint:
-Parallel(p1 10 soft)
+Parallel(p1 8 soft)
not used hint:
duplication hint:
error hint:
SET parallel_setup_cost to DEFAULT;
SET parallel_tuple_cost to DEFAULT;
SET min_parallel_relation_size to DEFAULT;
-/*+Parallel(p1 10 hard)*/
+/*+Parallel(p1 8 hard)*/
EXPLAIN (COSTS false) SELECT * FROM p1;
LOG: pg_hint_plan:
used hint:
-Parallel(p1 10 hard)
+Parallel(p1 8 hard)
not used hint:
duplication hint:
error hint:
QUERY PLAN
-------------------------------------------
Gather
- Workers Planned: 10
+ Workers Planned: 8
-> Append
-> Parallel Seq Scan on p1
-> Parallel Seq Scan on p1_c1
(12 rows)
-- hinting on children makes the whole inheritance parallel
-/*+Parallel(p1_c1 10 hard)*/
+/*+Parallel(p1_c1 8 hard)*/
EXPLAIN (COSTS false) SELECT * FROM p1;
LOG: pg_hint_plan:
used hint:
-Parallel(p1_c1 10 hard)
+Parallel(p1_c1 8 hard)
not used hint:
duplication hint:
error hint:
QUERY PLAN
-------------------------------------------
Gather
- Workers Planned: 10
+ Workers Planned: 8
-> Append
-> Parallel Seq Scan on p1
-> Parallel Seq Scan on p1_c1
-> Seq Scan on p2_c1_c1
(5 rows)
-/*+Parallel(p1_c1_c1 10 hard)*/
+/*+Parallel(p1_c1_c1 8 hard)*/
EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
LOG: pg_hint_plan:
used hint:
-Parallel(p1_c1_c1 10 hard)
+Parallel(p1_c1_c1 8 hard)
not used hint:
duplication hint:
error hint:
-> Seq Scan on p2_c1_c1
-> Hash
-> Gather
- Workers Planned: 10
+ Workers Planned: 8
-> Parallel Seq Scan on p1_c1_c1
(7 rows)
SET parallel_setup_cost to 0;
SET parallel_tuple_cost to 0;
SET min_parallel_relation_size to 0;
-/*+Parallel(p1_c1_c1 10 soft) Parallel(p2_c1_c1 0)*/
+/*+Parallel(p1_c1_c1 8 soft) Parallel(p2_c1_c1 0)*/
EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
LOG: pg_hint_plan:
used hint:
-Parallel(p1_c1_c1 10 soft)
+Parallel(p1_c1_c1 8 soft)
Parallel(p2_c1_c1 0 soft)
not used hint:
duplication hint:
-> Seq Scan on p2_c1_c1
(7 rows)
-/*+Parallel(p1_c1_c1 10 hard) Parallel(p2_c1_c1 0)*/
+/*+Parallel(p1_c1_c1 8 hard) Parallel(p2_c1_c1 0)*/
EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
LOG: pg_hint_plan:
used hint:
-Parallel(p1_c1_c1 10 hard)
+Parallel(p1_c1_c1 8 hard)
Parallel(p2_c1_c1 0 soft)
not used hint:
duplication hint:
QUERY PLAN
------------------------------------------------
Gather
- Workers Planned: 10
+ Workers Planned: 8
-> Hash Join
Hash Cond: (p1_c1_c1.id = p2_c1_c1.id)
-> Parallel Seq Scan on p1_c1_c1
-> Seq Scan on p2_c1_c1
(7 rows)
-/*+Parallel(p1_c1_c1 10 hard) Parallel(p2_c1_c1 10 hard)*/
+/*+Parallel(p1_c1_c1 8 hard) Parallel(p2_c1_c1 8 hard)*/
EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
LOG: pg_hint_plan:
used hint:
-Parallel(p1_c1_c1 10 hard)
-Parallel(p2_c1_c1 10 hard)
+Parallel(p1_c1_c1 8 hard)
+Parallel(p2_c1_c1 8 hard)
not used hint:
duplication hint:
error hint:
Hash Join
Hash Cond: (p1_c1_c1.id = p2_c1_c1.id)
-> Gather
- Workers Planned: 10
+ Workers Planned: 8
-> Parallel Seq Scan on p1_c1_c1
-> Hash
-> Gather
- Workers Planned: 10
+ Workers Planned: 8
-> Parallel Seq Scan on p2_c1_c1
(9 rows)
SET parallel_setup_cost to 0;
SET parallel_tuple_cost to 0;
SET min_parallel_relation_size to 0;
-/*+Parallel(p1 10)*/
+/*+Parallel(p1 8)*/
EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
LOG: pg_hint_plan:
used hint:
-Parallel(p1 10 soft)
+Parallel(p1 8 soft)
not used hint:
duplication hint:
error hint:
-> Parallel Seq Scan on p2_c3_c2
(27 rows)
-/*+Parallel(p1 10)Parallel(p2 0)*/
+/*+Parallel(p1 8)Parallel(p2 0)*/
EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
LOG: pg_hint_plan:
used hint:
-Parallel(p1 10 soft)
+Parallel(p1 8 soft)
Parallel(p2 0 soft)
not used hint:
duplication hint:
SET parallel_setup_cost to DEFAULT;
SET parallel_tuple_cost to DEFAULT;
SET min_parallel_relation_size to DEFAULT;
-/*+Parallel(p2 10 hard)*/
+/*+Parallel(p2 8 hard)*/
EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
LOG: pg_hint_plan:
used hint:
-Parallel(p2 10 hard)
+Parallel(p2 8 hard)
not used hint:
duplication hint:
error hint:
QUERY PLAN
-------------------------------------------------------
Hash Join
- Hash Cond: (p1.id = p2.id)
+ Hash Cond: (p2.id = p1.id)
-> Gather
- Workers Planned: 1
+ Workers Planned: 8
-> Append
- -> Parallel Seq Scan on p1
- -> Parallel Seq Scan on p1_c1
- -> Parallel Seq Scan on p1_c2
- -> Parallel Seq Scan on p1_c3
- -> Parallel Seq Scan on p1_c4
- -> Parallel Seq Scan on p1_c1_c1
- -> Parallel Seq Scan on p1_c1_c2
- -> Parallel Seq Scan on p1_c3_c1
- -> Parallel Seq Scan on p1_c3_c2
+ -> Parallel Seq Scan on p2
+ -> Parallel Seq Scan on p2_c1
+ -> Parallel Seq Scan on p2_c2
+ -> Parallel Seq Scan on p2_c3
+ -> Parallel Seq Scan on p2_c4
+ -> Parallel Seq Scan on p2_c1_c1
+ -> Parallel Seq Scan on p2_c1_c2
+ -> Parallel Seq Scan on p2_c3_c1
+ -> Parallel Seq Scan on p2_c3_c2
-> Hash
-> Gather
- Workers Planned: 10
+ Workers Planned: 1
-> Append
- -> Parallel Seq Scan on p2
- -> Parallel Seq Scan on p2_c1
- -> Parallel Seq Scan on p2_c2
- -> Parallel Seq Scan on p2_c3
- -> Parallel Seq Scan on p2_c4
- -> Parallel Seq Scan on p2_c1_c1
- -> Parallel Seq Scan on p2_c1_c2
- -> Parallel Seq Scan on p2_c3_c1
- -> Parallel Seq Scan on p2_c3_c2
+ -> Parallel Seq Scan on p1
+ -> Parallel Seq Scan on p1_c1
+ -> Parallel Seq Scan on p1_c2
+ -> Parallel Seq Scan on p1_c3
+ -> Parallel Seq Scan on p1_c4
+ -> Parallel Seq Scan on p1_c1_c1
+ -> Parallel Seq Scan on p1_c1_c2
+ -> Parallel Seq Scan on p1_c3_c1
+ -> Parallel Seq Scan on p1_c3_c2
(27 rows)
-/*+Parallel(p2 10 hard) Parallel(p1 5 hard) */
+/*+Parallel(p2 8 hard) Parallel(p1 5 hard) */
EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
LOG: pg_hint_plan:
used hint:
Parallel(p1 5 hard)
-Parallel(p2 10 hard)
+Parallel(p2 8 hard)
not used hint:
duplication hint:
error hint:
QUERY PLAN
-------------------------------------------------------
Hash Join
- Hash Cond: (p1.id = p2.id)
+ Hash Cond: (p2.id = p1.id)
-> Gather
- Workers Planned: 5
+ Workers Planned: 8
-> Append
- -> Parallel Seq Scan on p1
- -> Parallel Seq Scan on p1_c1
- -> Parallel Seq Scan on p1_c2
- -> Parallel Seq Scan on p1_c3
- -> Parallel Seq Scan on p1_c4
- -> Parallel Seq Scan on p1_c1_c1
- -> Parallel Seq Scan on p1_c1_c2
- -> Parallel Seq Scan on p1_c3_c1
- -> Parallel Seq Scan on p1_c3_c2
+ -> Parallel Seq Scan on p2
+ -> Parallel Seq Scan on p2_c1
+ -> Parallel Seq Scan on p2_c2
+ -> Parallel Seq Scan on p2_c3
+ -> Parallel Seq Scan on p2_c4
+ -> Parallel Seq Scan on p2_c1_c1
+ -> Parallel Seq Scan on p2_c1_c2
+ -> Parallel Seq Scan on p2_c3_c1
+ -> Parallel Seq Scan on p2_c3_c2
-> Hash
-> Gather
- Workers Planned: 10
+ Workers Planned: 5
-> Append
- -> Parallel Seq Scan on p2
- -> Parallel Seq Scan on p2_c1
- -> Parallel Seq Scan on p2_c2
- -> Parallel Seq Scan on p2_c3
- -> Parallel Seq Scan on p2_c4
- -> Parallel Seq Scan on p2_c1_c1
- -> Parallel Seq Scan on p2_c1_c2
- -> Parallel Seq Scan on p2_c3_c1
- -> Parallel Seq Scan on p2_c3_c2
+ -> Parallel Seq Scan on p1
+ -> Parallel Seq Scan on p1_c1
+ -> Parallel Seq Scan on p1_c2
+ -> Parallel Seq Scan on p1_c3
+ -> Parallel Seq Scan on p1_c4
+ -> Parallel Seq Scan on p1_c1_c1
+ -> Parallel Seq Scan on p1_c1_c2
+ -> Parallel Seq Scan on p1_c3_c1
+ -> Parallel Seq Scan on p1_c3_c2
(27 rows)
-- Mixture with a scan hint
-- p1 can be parallel
-/*+Parallel(p1 10 hard) IndexScan(p2) */
+/*+Parallel(p1 8 hard) IndexScan(p2) */
EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
LOG: pg_hint_plan:
used hint:
IndexScan(p2)
-Parallel(p1 10 hard)
+Parallel(p1 8 hard)
not used hint:
duplication hint:
error hint:
Hash Join
Hash Cond: (p1.id = p2.id)
-> Gather
- Workers Planned: 10
+ Workers Planned: 8
-> Append
-> Parallel Seq Scan on p1
-> Parallel Seq Scan on p1_c1
(27 rows)
-- seqscan doesn't harm parallelism
-/*+Parallel(p1 10 hard) SeqScan(p1) */
+/*+Parallel(p1 8 hard) SeqScan(p1) */
EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
LOG: pg_hint_plan:
used hint:
SeqScan(p1)
-Parallel(p1 10 hard)
+Parallel(p1 8 hard)
not used hint:
duplication hint:
error hint:
Hash Join
Hash Cond: (p1.id = p2.id)
-> Gather
- Workers Planned: 10
+ Workers Planned: 8
-> Append
-> Parallel Seq Scan on p1
-> Parallel Seq Scan on p1_c1
(27 rows)
-- parallel overrides index scan
-/*+Parallel(p1 10 hard) IndexScan(p1) */
+/*+Parallel(p1 8 hard) IndexScan(p1) */
EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
LOG: pg_hint_plan:
used hint:
IndexScan(p1)
-Parallel(p1 10 hard)
+Parallel(p1 8 hard)
not used hint:
duplication hint:
error hint:
Hash Join
Hash Cond: (p1.id = p2.id)
-> Gather
- Workers Planned: 10
+ Workers Planned: 8
-> Append
-> Parallel Seq Scan on p1
-> Parallel Seq Scan on p1_c1
SET parallel_tuple_cost to 0;
SET min_parallel_relation_size to 0;
SET max_parallel_workers_per_gather to 0;
-/*+Parallel(p1 10) */
+/*+Parallel(p1 8) */
EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
LOG: pg_hint_plan:
used hint:
-Parallel(p1 10 soft)
+Parallel(p1 8 soft)
not used hint:
duplication hint:
error hint:
SET parallel_setup_cost to DEFAULT;
SET parallel_tuple_cost to DEFAULT;
SET min_parallel_relation_size to DEFAULT;
-SET max_parallel_workers_per_gather to 10;
+SET max_parallel_workers_per_gather to 8;
/*+Parallel(p1 5 hard)Parallel(p2 6 hard) */
EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
LOG: pg_hint_plan:
SET parallel_tuple_cost to 0;
SET min_parallel_relation_size to 0;
SET max_parallel_workers_per_gather to 3;
-/*+Parallel(p1 10 hard) */
+/*+Parallel(p1 8 hard) */
EXPLAIN (COSTS false) SELECT * FROM p1 join t1 on p1.id = t1.id;
LOG: pg_hint_plan:
used hint:
-Parallel(p1 10 hard)
+Parallel(p1 8 hard)
not used hint:
duplication hint:
error hint:
-> Parallel Seq Scan on t1
-> Hash
-> Gather
- Workers Planned: 10
+ Workers Planned: 8
-> Append
-> Parallel Seq Scan on p1
-> Parallel Seq Scan on p1_c1
-- Errors
/*+Parallel(p1 100x hard)Parallel(p1 -1000 hard)Parallel(p1 1000000 hard)
- Parallel(p1 10 hoge)Parallel(p1)Parallel(p1 100 soft x)*/
+ Parallel(p1 8 hoge)Parallel(p1)Parallel(p1 100 soft x)*/
EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
INFO: pg_hint_plan: hint syntax error at or near "100x"
DETAIL: number of workers must be a number: Parallel
INFO: pg_hint_plan: hint syntax error at or near "-1000"
DETAIL: number of workers must be positive: Parallel
INFO: pg_hint_plan: hint syntax error at or near "1000000"
-DETAIL: number of workers = 1000000 is larger than max_worker_processes(100): Parallel
+DETAIL: number of workers = 1000000 is larger than max_worker_processes(8): Parallel
INFO: pg_hint_plan: hint syntax error at or near "hoge"
DETAIL: enforcement must be soft or hard: Parallel
INFO: pg_hint_plan: hint syntax error at or near ")"
Parallel(p1 100x hard)
Parallel(p1 -1000 hard)
Parallel(p1 1000000 hard)
-Parallel(p1 10 hard)
+Parallel(p1 8 soft)
Parallel()
Parallel()
SET min_parallel_relation_size to 0;
SET max_parallel_workers_per_gather to DEFAULT;
-/*+Parallel(t1 10)*/
+/*+Parallel(t1 8)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1;
-/*+Parallel(t1 10 soft)*/
+/*+Parallel(t1 8 soft)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1;
-/*+Parallel(t1 10 hard)*/
+/*+Parallel(t1 8 hard)*/
EXPLAIN (COSTS false) SELECT * FROM s1.t1;
-- Queries on inheritance tables
SET parallel_setup_cost to 0;
SET parallel_tuple_cost to 0;
SET min_parallel_relation_size to 0;
-/*+Parallel(p1 10)*/
+/*+Parallel(p1 8)*/
EXPLAIN (COSTS false) SELECT * FROM p1;
SET parallel_setup_cost to DEFAULT;
SET parallel_tuple_cost to DEFAULT;
SET min_parallel_relation_size to DEFAULT;
-/*+Parallel(p1 10 hard)*/
+/*+Parallel(p1 8 hard)*/
EXPLAIN (COSTS false) SELECT * FROM p1;
-- hinting on children makes the whole inheritance parallel
-/*+Parallel(p1_c1 10 hard)*/
+/*+Parallel(p1_c1 8 hard)*/
EXPLAIN (COSTS false) SELECT * FROM p1;
-- Joins
EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
-/*+Parallel(p1_c1_c1 10 hard)*/
+/*+Parallel(p1_c1_c1 8 hard)*/
EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
SET parallel_setup_cost to 0;
SET parallel_tuple_cost to 0;
SET min_parallel_relation_size to 0;
-/*+Parallel(p1_c1_c1 10 soft) Parallel(p2_c1_c1 0)*/
+/*+Parallel(p1_c1_c1 8 soft) Parallel(p2_c1_c1 0)*/
EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
-/*+Parallel(p1_c1_c1 10 hard) Parallel(p2_c1_c1 0)*/
+/*+Parallel(p1_c1_c1 8 hard) Parallel(p2_c1_c1 0)*/
EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
-/*+Parallel(p1_c1_c1 10 hard) Parallel(p2_c1_c1 10 hard)*/
+/*+Parallel(p1_c1_c1 8 hard) Parallel(p2_c1_c1 8 hard)*/
EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
SET parallel_setup_cost to 0;
SET parallel_tuple_cost to 0;
SET min_parallel_relation_size to 0;
-/*+Parallel(p1 10)*/
+/*+Parallel(p1 8)*/
EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
-/*+Parallel(p1 10)Parallel(p2 0)*/
+/*+Parallel(p1 8)Parallel(p2 0)*/
EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
SET parallel_setup_cost to DEFAULT;
SET parallel_tuple_cost to DEFAULT;
SET min_parallel_relation_size to DEFAULT;
-/*+Parallel(p2 10 hard)*/
+/*+Parallel(p2 8 hard)*/
EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
-/*+Parallel(p2 10 hard) Parallel(p1 5 hard) */
+/*+Parallel(p2 8 hard) Parallel(p1 5 hard) */
EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
-- Mixture with a scan hint
-- p1 can be parallel
-/*+Parallel(p1 10 hard) IndexScan(p2) */
+/*+Parallel(p1 8 hard) IndexScan(p2) */
EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
-- seqscan doesn't harm parallelism
-/*+Parallel(p1 10 hard) SeqScan(p1) */
+/*+Parallel(p1 8 hard) SeqScan(p1) */
EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
-- parallel overrides index scan
-/*+Parallel(p1 10 hard) IndexScan(p1) */
+/*+Parallel(p1 8 hard) IndexScan(p1) */
EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
/*+Parallel(p1 0 hard) IndexScan(p1) */
EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
SET min_parallel_relation_size to 0;
SET max_parallel_workers_per_gather to 0;
-/*+Parallel(p1 10) */
+/*+Parallel(p1 8) */
EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
-- set hint also does
SET parallel_setup_cost to DEFAULT;
SET parallel_tuple_cost to DEFAULT;
SET min_parallel_relation_size to DEFAULT;
-SET max_parallel_workers_per_gather to 10;
+SET max_parallel_workers_per_gather to 8;
/*+Parallel(p1 5 hard)Parallel(p2 6 hard) */
EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
SET min_parallel_relation_size to 0;
SET max_parallel_workers_per_gather to 3;
-/*+Parallel(p1 10 hard) */
+/*+Parallel(p1 8 hard) */
EXPLAIN (COSTS false) SELECT * FROM p1 join t1 on p1.id = t1.id;
-- Negative hint
-- Errors
/*+Parallel(p1 100x hard)Parallel(p1 -1000 hard)Parallel(p1 1000000 hard)
- Parallel(p1 10 hoge)Parallel(p1)Parallel(p1 100 soft x)*/
+ Parallel(p1 8 hoge)Parallel(p1)Parallel(p1 100 soft x)*/
EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
ALTER SYSTEM SET session_preload_libraries TO DEFAULT;