+-- Errors
+/*+Parallel(p1 100x hard)Parallel(p1 -1000 hard)Parallel(p1 1000000 hard)
+ 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(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 ")"
+DETAIL: wrong number of arguments (1): Parallel
+INFO: pg_hint_plan: hint syntax error at or near ")"
+DETAIL: wrong number of arguments (4): Parallel
+LOG: pg_hint_plan:
+used hint:
+not used hint:
+duplication hint:
+error hint:
+Parallel(p1 100x hard)
+Parallel(p1 -1000 hard)
+Parallel(p1 1000000 hard)
+Parallel(p1 8 soft)
+Parallel()
+Parallel()
+
+ QUERY PLAN
+------------------------------------------------
+ Gather
+ Workers Planned: 1
+ -> Parallel Append
+ -> Parallel Seq Scan on p1_c2 p1_2
+ -> Parallel Seq Scan on p1_c4 p1_4
+ -> Parallel Seq Scan on p2_c2 p2_2
+ -> Parallel Seq Scan on p2_c4 p2_4
+ -> Parallel Seq Scan on p1_c1_c1 p1_5
+ -> Parallel Seq Scan on p1_c1_c2 p1_6
+ -> Parallel Seq Scan on p1_c3_c1 p1_7
+ -> Parallel Seq Scan on p1_c3_c2 p1_8
+ -> Parallel Seq Scan on p2_c1_c1 p2_5
+ -> Parallel Seq Scan on p2_c1_c2 p2_6
+ -> Parallel Seq Scan on p2_c3_c1 p2_7
+ -> Parallel Seq Scan on p2_c3_c2 p2_8
+ -> Parallel Seq Scan on p1
+ -> Parallel Seq Scan on p1_c1 p1_1
+ -> Parallel Seq Scan on p1_c3 p1_3
+ -> Parallel Seq Scan on p2
+ -> Parallel Seq Scan on p2_c1 p2_1
+ -> Parallel Seq Scan on p2_c3 p2_3
+(21 rows)
+
+-- Hints on unhintable relations are just ignored
+/*+Parallel(p1 5 hard) Parallel(s1 3 hard) IndexScan(ft1) SeqScan(cte1)
+ TidScan(fs1) IndexScan(t) IndexScan(*VALUES*) */
+\o results/ut-W.tmpout
+EXPLAIN (COSTS false) SELECT id FROM p1_c1_c1 as s1 TABLESAMPLE SYSTEM(10)
+ UNION ALL
+SELECT id FROM ft1
+ UNION ALL
+(WITH cte1 AS (SELECT id FROM p1 WHERE id % 2 = 0) SELECT id FROM cte1)
+ UNION ALL
+SELECT userid FROM pg_stat_statements fs1
+ UNION ALL
+SELECT x FROM (VALUES (1), (2), (3)) t(x);
+LOG: pg_hint_plan:
+used hint:
+Parallel(p1 5 hard)
+not used hint:
+IndexScan(*VALUES*)
+SeqScan(cte1)
+TidScan(fs1)
+IndexScan(ft1)
+IndexScan(t)
+Parallel(s1 3 hard)
+duplication hint:
+error hint:
+
+\o
+\! sql/maskout2.sh results/ut-W.tmpout
+--(snip..)
+--(snip..)
+ Append
+ -> Result
+ -> Append
+ -> Sample Scan on p1_c1_c1 s1
+ Sampling: system ('10'::real)
+ -> Foreign Scan on ft1
+ Foreign File: (snip..)
+ -> Gather
+ Workers Planned: 5
+ -> Parallel Append
+ -> Seq Scan on p1 p1_1
+ Filter: ((id % 2) = 0)
+ -> Seq Scan on p1_c1 p1_2
+ Filter: ((id % 2) = 0)
+ -> Seq Scan on p1_c3 p1_4
+ Filter: ((id % 2) = 0)
+ -> Parallel Seq Scan on p1_c2 p1_3
+ Filter: ((id % 2) = 0)
+ -> Parallel Seq Scan on p1_c4 p1_5
+ Filter: ((id % 2) = 0)
+ -> Parallel Seq Scan on p1_c1_c1 p1_6
+ Filter: ((id % 2) = 0)
+ -> Parallel Seq Scan on p1_c1_c2 p1_7
+ Filter: ((id % 2) = 0)
+ -> Parallel Seq Scan on p1_c3_c1 p1_8
+ Filter: ((id % 2) = 0)
+ -> Parallel Seq Scan on p1_c3_c2 p1_9
+ Filter: ((id % 2) = 0)
+ -> Function Scan on pg_stat_statements
+ -> Subquery Scan on "*SELECT* 5"
+ -> Values Scan on "*VALUES*"
+(31 rows)
+