OSDN Git Service

Change version to 1.3.4.
[pghintplan/pg_hint_plan.git] / output / ut-W.source
1 LOAD 'pg_hint_plan';
2 ALTER SYSTEM SET session_preload_libraries TO 'pg_hint_plan';
3 SET pg_hint_plan.enable_hint TO on;
4 SET pg_hint_plan.debug_print TO on;
5 SET client_min_messages TO LOG;
6 CREATE TABLE s1.tl (a int);
7 INSERT INTO s1.tl (SELECT a FROM generate_series(0, 100000) a);
8 -- Queries on ordinary tables with default setting
9 EXPLAIN (COSTS false) SELECT * FROM s1.t1;
10    QUERY PLAN   
11 ----------------
12  Seq Scan on t1
13 (1 row)
14
15 SET parallel_setup_cost to 0;
16 SET parallel_tuple_cost to 0;
17 SET min_parallel_table_scan_size to 0;
18 SET min_parallel_index_scan_size to 0;
19 SET max_parallel_workers_per_gather to DEFAULT;
20 /*+Parallel(t1 8)*/
21 EXPLAIN (COSTS false) SELECT * FROM s1.t1;
22 LOG:  pg_hint_plan:
23 used hint:
24 Parallel(t1 8 soft)
25 not used hint:
26 duplication hint:
27 error hint:
28
29           QUERY PLAN           
30 -------------------------------
31  Gather
32    Workers Planned: 2
33    ->  Parallel Seq Scan on t1
34 (3 rows)
35
36 /*+Parallel(t1 8 soft)*/
37 EXPLAIN (COSTS false) SELECT * FROM s1.t1;
38 LOG:  pg_hint_plan:
39 used hint:
40 Parallel(t1 8 soft)
41 not used hint:
42 duplication hint:
43 error hint:
44
45           QUERY PLAN           
46 -------------------------------
47  Gather
48    Workers Planned: 2
49    ->  Parallel Seq Scan on t1
50 (3 rows)
51
52 /*+Parallel(t1 8 hard)*/
53 EXPLAIN (COSTS false) SELECT * FROM s1.t1;
54 LOG:  pg_hint_plan:
55 used hint:
56 Parallel(t1 8 hard)
57 not used hint:
58 duplication hint:
59 error hint:
60
61           QUERY PLAN           
62 -------------------------------
63  Gather
64    Workers Planned: 8
65    ->  Parallel Seq Scan on t1
66 (3 rows)
67
68 /*+Parallel(t1 4 hard) */ /* to be gather merge*/
69 EXPLAIN (COSTS false) SELECT * FROM s1.t1 ORDER BY s1.t1.c1 LIMIT 4;
70 LOG:  pg_hint_plan:
71 used hint:
72 Parallel(t1 4 hard)
73 not used hint:
74 duplication hint:
75 error hint:
76
77                     QUERY PLAN                     
78 ---------------------------------------------------
79  Limit
80    ->  Gather Merge
81          Workers Planned: 4
82          ->  Parallel Index Scan using t1_i1 on t1
83 (4 rows)
84
85 -- Queries on inheritance tables
86 SET parallel_setup_cost to 0;
87 SET parallel_tuple_cost to 0;
88 SET min_parallel_table_scan_size to 0;
89 SET min_parallel_index_scan_size to 0;
90 SET enable_parallel_append to false;
91 /*+Parallel(p1 8)*/
92 EXPLAIN (COSTS false) SELECT * FROM p1;
93 LOG:  pg_hint_plan:
94 used hint:
95 Parallel(p1 8 soft)
96 not used hint:
97 duplication hint:
98 error hint:
99
100                 QUERY PLAN                 
101 -------------------------------------------
102  Gather
103    Workers Planned: 1
104    ->  Append
105          ->  Parallel Seq Scan on p1
106          ->  Parallel Seq Scan on p1_c1
107          ->  Parallel Seq Scan on p1_c2
108          ->  Parallel Seq Scan on p1_c3
109          ->  Parallel Seq Scan on p1_c4
110          ->  Parallel Seq Scan on p1_c1_c1
111          ->  Parallel Seq Scan on p1_c1_c2
112          ->  Parallel Seq Scan on p1_c3_c1
113          ->  Parallel Seq Scan on p1_c3_c2
114 (12 rows)
115
116 SET enable_parallel_append to true;
117 /*+Parallel(p1 8)*/
118 EXPLAIN (COSTS false) SELECT * FROM p1;
119 LOG:  pg_hint_plan:
120 used hint:
121 Parallel(p1 8 soft)
122 not used hint:
123 duplication hint:
124 error hint:
125
126                 QUERY PLAN                 
127 -------------------------------------------
128  Gather
129    Workers Planned: 2
130    ->  Parallel Append
131          ->  Seq Scan on p1
132          ->  Seq Scan on p1_c1
133          ->  Seq Scan on p1_c3
134          ->  Parallel Seq Scan on p1_c2
135          ->  Parallel Seq Scan on p1_c4
136          ->  Parallel Seq Scan on p1_c1_c1
137          ->  Parallel Seq Scan on p1_c1_c2
138          ->  Parallel Seq Scan on p1_c3_c1
139          ->  Parallel Seq Scan on p1_c3_c2
140 (12 rows)
141
142 SET parallel_setup_cost to DEFAULT;
143 SET parallel_tuple_cost to DEFAULT;
144 SET min_parallel_table_scan_size to DEFAULT;
145 SET min_parallel_index_scan_size to DEFAULT;
146 SET enable_parallel_append to false;
147 /*+Parallel(p1 8 hard)*/
148 EXPLAIN (COSTS false) SELECT * FROM p1;
149 LOG:  pg_hint_plan:
150 used hint:
151 Parallel(p1 8 hard)
152 not used hint:
153 duplication hint:
154 error hint:
155
156                 QUERY PLAN                 
157 -------------------------------------------
158  Gather
159    Workers Planned: 8
160    ->  Append
161          ->  Parallel Seq Scan on p1
162          ->  Parallel Seq Scan on p1_c1
163          ->  Parallel Seq Scan on p1_c2
164          ->  Parallel Seq Scan on p1_c3
165          ->  Parallel Seq Scan on p1_c4
166          ->  Parallel Seq Scan on p1_c1_c1
167          ->  Parallel Seq Scan on p1_c1_c2
168          ->  Parallel Seq Scan on p1_c3_c1
169          ->  Parallel Seq Scan on p1_c3_c2
170 (12 rows)
171
172 SET enable_parallel_append to true;
173 /*+Parallel(p1 8 hard)*/
174 EXPLAIN (COSTS false) SELECT * FROM p1;
175 LOG:  pg_hint_plan:
176 used hint:
177 Parallel(p1 8 hard)
178 not used hint:
179 duplication hint:
180 error hint:
181
182                 QUERY PLAN                 
183 -------------------------------------------
184  Gather
185    Workers Planned: 8
186    ->  Parallel Append
187          ->  Seq Scan on p1
188          ->  Seq Scan on p1_c1
189          ->  Seq Scan on p1_c3
190          ->  Parallel Seq Scan on p1_c2
191          ->  Parallel Seq Scan on p1_c4
192          ->  Parallel Seq Scan on p1_c1_c1
193          ->  Parallel Seq Scan on p1_c1_c2
194          ->  Parallel Seq Scan on p1_c3_c1
195          ->  Parallel Seq Scan on p1_c3_c2
196 (12 rows)
197
198 -- hinting on children doesn't work (changed as of pg_hint_plan 10)
199 SET enable_parallel_append to false;
200 /*+Parallel(p1_c1 8 hard)*/
201 EXPLAIN (COSTS false) SELECT * FROM p1;
202 LOG:  pg_hint_plan:
203 used hint:
204 Parallel(p1_c1 8 hard)
205 not used hint:
206 duplication hint:
207 error hint:
208
209          QUERY PLAN         
210 ----------------------------
211  Append
212    ->  Seq Scan on p1
213    ->  Seq Scan on p1_c1
214    ->  Seq Scan on p1_c2
215    ->  Seq Scan on p1_c3
216    ->  Seq Scan on p1_c4
217    ->  Seq Scan on p1_c1_c1
218    ->  Seq Scan on p1_c1_c2
219    ->  Seq Scan on p1_c3_c1
220    ->  Seq Scan on p1_c3_c2
221 (10 rows)
222
223 SET enable_parallel_append to true;
224 /*+Parallel(p1_c1 8 hard)*/
225 EXPLAIN (COSTS false) SELECT * FROM p1;
226 LOG:  pg_hint_plan:
227 used hint:
228 Parallel(p1_c1 8 hard)
229 not used hint:
230 duplication hint:
231 error hint:
232
233          QUERY PLAN         
234 ----------------------------
235  Append
236    ->  Seq Scan on p1
237    ->  Seq Scan on p1_c1
238    ->  Seq Scan on p1_c2
239    ->  Seq Scan on p1_c3
240    ->  Seq Scan on p1_c4
241    ->  Seq Scan on p1_c1_c1
242    ->  Seq Scan on p1_c1_c2
243    ->  Seq Scan on p1_c3_c1
244    ->  Seq Scan on p1_c3_c2
245 (10 rows)
246
247 -- Joins
248 EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
249                 QUERY PLAN                
250 ------------------------------------------
251  Hash Join
252    Hash Cond: (p1_c1_c1.id = p2_c1_c1.id)
253    ->  Seq Scan on p1_c1_c1
254    ->  Hash
255          ->  Seq Scan on p2_c1_c1
256 (5 rows)
257
258 /*+Parallel(p1_c1_c1 8 hard)*/
259 EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
260 LOG:  pg_hint_plan:
261 used hint:
262 Parallel(p1_c1_c1 8 hard)
263 not used hint:
264 duplication hint:
265 error hint:
266
267                    QUERY PLAN                    
268 -------------------------------------------------
269  Hash Join
270    Hash Cond: (p2_c1_c1.id = p1_c1_c1.id)
271    ->  Seq Scan on p2_c1_c1
272    ->  Hash
273          ->  Gather
274                Workers Planned: 8
275                ->  Parallel Seq Scan on p1_c1_c1
276 (7 rows)
277
278 SET parallel_setup_cost to 0;
279 SET parallel_tuple_cost to 0;
280 SET min_parallel_table_scan_size to 0;
281 SET min_parallel_index_scan_size to 0;
282 /*+Parallel(p1_c1_c1 8 soft) Parallel(p2_c1_c1 0)*/
283 EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
284 LOG:  pg_hint_plan:
285 used hint:
286 Parallel(p1_c1_c1 8 soft)
287 Parallel(p2_c1_c1 0 soft)
288 not used hint:
289 duplication hint:
290 error hint:
291
292                    QUERY PLAN                   
293 ------------------------------------------------
294  Gather
295    Workers Planned: 1
296    ->  Hash Join
297          Hash Cond: (p1_c1_c1.id = p2_c1_c1.id)
298          ->  Parallel Seq Scan on p1_c1_c1
299          ->  Hash
300                ->  Seq Scan on p2_c1_c1
301 (7 rows)
302
303 /*+Parallel(p1_c1_c1 8 hard) Parallel(p2_c1_c1 0)*/
304 EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
305 LOG:  pg_hint_plan:
306 used hint:
307 Parallel(p1_c1_c1 8 hard)
308 Parallel(p2_c1_c1 0 soft)
309 not used hint:
310 duplication hint:
311 error hint:
312
313                    QUERY PLAN                   
314 ------------------------------------------------
315  Gather
316    Workers Planned: 8
317    ->  Hash Join
318          Hash Cond: (p1_c1_c1.id = p2_c1_c1.id)
319          ->  Parallel Seq Scan on p1_c1_c1
320          ->  Hash
321                ->  Seq Scan on p2_c1_c1
322 (7 rows)
323
324 /*+Parallel(p1_c1_c1 8 hard) Parallel(p2_c1_c1 8 hard)*/
325 EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
326 LOG:  pg_hint_plan:
327 used hint:
328 Parallel(p1_c1_c1 8 hard)
329 Parallel(p2_c1_c1 8 hard)
330 not used hint:
331 duplication hint:
332 error hint:
333
334                    QUERY PLAN                    
335 -------------------------------------------------
336  Gather
337    Workers Planned: 8
338    ->  Parallel Hash Join
339          Hash Cond: (p1_c1_c1.id = p2_c1_c1.id)
340          ->  Parallel Seq Scan on p1_c1_c1
341          ->  Parallel Hash
342                ->  Parallel Seq Scan on p2_c1_c1
343 (7 rows)
344
345 -- Joins on inheritance tables
346 SET parallel_setup_cost to 0;
347 SET parallel_tuple_cost to 0;
348 SET min_parallel_table_scan_size to 0;
349 SET min_parallel_index_scan_size to 0;
350 SET enable_parallel_append to false;
351 /*+Parallel(p1 8)*/
352 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
353 LOG:  pg_hint_plan:
354 used hint:
355 Parallel(p1 8 soft)
356 not used hint:
357 duplication hint:
358 error hint:
359
360                       QUERY PLAN                       
361 -------------------------------------------------------
362  Gather
363    Workers Planned: 1
364    ->  Parallel Hash Join
365          Hash Cond: (p1.id = p2.id)
366          ->  Append
367                ->  Parallel Seq Scan on p1
368                ->  Parallel Seq Scan on p1_c1
369                ->  Parallel Seq Scan on p1_c2
370                ->  Parallel Seq Scan on p1_c3
371                ->  Parallel Seq Scan on p1_c4
372                ->  Parallel Seq Scan on p1_c1_c1
373                ->  Parallel Seq Scan on p1_c1_c2
374                ->  Parallel Seq Scan on p1_c3_c1
375                ->  Parallel Seq Scan on p1_c3_c2
376          ->  Parallel Hash
377                ->  Append
378                      ->  Parallel Seq Scan on p2
379                      ->  Parallel Seq Scan on p2_c1
380                      ->  Parallel Seq Scan on p2_c2
381                      ->  Parallel Seq Scan on p2_c3
382                      ->  Parallel Seq Scan on p2_c4
383                      ->  Parallel Seq Scan on p2_c1_c1
384                      ->  Parallel Seq Scan on p2_c1_c2
385                      ->  Parallel Seq Scan on p2_c3_c1
386                      ->  Parallel Seq Scan on p2_c3_c2
387 (25 rows)
388
389 SET enable_parallel_append to true;
390 /*+Parallel(p1 8)*/
391 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
392 LOG:  pg_hint_plan:
393 used hint:
394 Parallel(p1 8 soft)
395 not used hint:
396 duplication hint:
397 error hint:
398
399                       QUERY PLAN                       
400 -------------------------------------------------------
401  Gather
402    Workers Planned: 2
403    ->  Parallel Hash Join
404          Hash Cond: (p1.id = p2.id)
405          ->  Parallel Append
406                ->  Seq Scan on p1
407                ->  Seq Scan on p1_c1
408                ->  Seq Scan on p1_c3
409                ->  Parallel Seq Scan on p1_c2
410                ->  Parallel Seq Scan on p1_c4
411                ->  Parallel Seq Scan on p1_c1_c1
412                ->  Parallel Seq Scan on p1_c1_c2
413                ->  Parallel Seq Scan on p1_c3_c1
414                ->  Parallel Seq Scan on p1_c3_c2
415          ->  Parallel Hash
416                ->  Parallel Append
417                      ->  Seq Scan on p2
418                      ->  Seq Scan on p2_c1
419                      ->  Seq Scan on p2_c3
420                      ->  Parallel Seq Scan on p2_c2
421                      ->  Parallel Seq Scan on p2_c4
422                      ->  Parallel Seq Scan on p2_c1_c1
423                      ->  Parallel Seq Scan on p2_c1_c2
424                      ->  Parallel Seq Scan on p2_c3_c1
425                      ->  Parallel Seq Scan on p2_c3_c2
426 (25 rows)
427
428 SET enable_parallel_append to false;
429 /*+Parallel(p1 8)Parallel(p2 0)*/
430 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
431 LOG:  pg_hint_plan:
432 used hint:
433 Parallel(p1 8 soft)
434 Parallel(p2 0 soft)
435 not used hint:
436 duplication hint:
437 error hint:
438
439                    QUERY PLAN                    
440 -------------------------------------------------
441  Gather
442    Workers Planned: 1
443    ->  Hash Join
444          Hash Cond: (p1.id = p2.id)
445          ->  Append
446                ->  Parallel Seq Scan on p1
447                ->  Parallel Seq Scan on p1_c1
448                ->  Parallel Seq Scan on p1_c2
449                ->  Parallel Seq Scan on p1_c3
450                ->  Parallel Seq Scan on p1_c4
451                ->  Parallel Seq Scan on p1_c1_c1
452                ->  Parallel Seq Scan on p1_c1_c2
453                ->  Parallel Seq Scan on p1_c3_c1
454                ->  Parallel Seq Scan on p1_c3_c2
455          ->  Hash
456                ->  Append
457                      ->  Seq Scan on p2
458                      ->  Seq Scan on p2_c1
459                      ->  Seq Scan on p2_c2
460                      ->  Seq Scan on p2_c3
461                      ->  Seq Scan on p2_c4
462                      ->  Seq Scan on p2_c1_c1
463                      ->  Seq Scan on p2_c1_c2
464                      ->  Seq Scan on p2_c3_c1
465                      ->  Seq Scan on p2_c3_c2
466 (25 rows)
467
468 SET enable_parallel_append to true;
469 /*+Parallel(p1 8)Parallel(p2 0)*/
470 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
471 LOG:  pg_hint_plan:
472 used hint:
473 Parallel(p1 8 soft)
474 Parallel(p2 0 soft)
475 not used hint:
476 duplication hint:
477 error hint:
478
479                    QUERY PLAN                    
480 -------------------------------------------------
481  Gather
482    Workers Planned: 2
483    ->  Parallel Hash Join
484          Hash Cond: (p1.id = p2_c2.id)
485          ->  Parallel Append
486                ->  Seq Scan on p1
487                ->  Seq Scan on p1_c1
488                ->  Seq Scan on p1_c3
489                ->  Parallel Seq Scan on p1_c2
490                ->  Parallel Seq Scan on p1_c4
491                ->  Parallel Seq Scan on p1_c1_c1
492                ->  Parallel Seq Scan on p1_c1_c2
493                ->  Parallel Seq Scan on p1_c3_c1
494                ->  Parallel Seq Scan on p1_c3_c2
495          ->  Parallel Hash
496                ->  Parallel Append
497                      ->  Seq Scan on p2_c2
498                      ->  Seq Scan on p2_c4
499                      ->  Seq Scan on p2_c1_c1
500                      ->  Seq Scan on p2_c1_c2
501                      ->  Seq Scan on p2_c3_c1
502                      ->  Seq Scan on p2_c3_c2
503                      ->  Seq Scan on p2
504                      ->  Seq Scan on p2_c1
505                      ->  Seq Scan on p2_c3
506 (25 rows)
507
508 SET parallel_setup_cost to DEFAULT;
509 SET parallel_tuple_cost to DEFAULT;
510 SET min_parallel_table_scan_size to DEFAULT;
511 SET min_parallel_index_scan_size to DEFAULT;
512 /*+Parallel(p2 8 soft)*/
513 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
514 LOG:  pg_hint_plan:
515 used hint:
516 Parallel(p2 8 soft)
517 not used hint:
518 duplication hint:
519 error hint:
520
521                QUERY PLAN               
522 ----------------------------------------
523  Hash Join
524    Hash Cond: (p1.id = p2.id)
525    ->  Append
526          ->  Seq Scan on p1
527          ->  Seq Scan on p1_c1
528          ->  Seq Scan on p1_c2
529          ->  Seq Scan on p1_c3
530          ->  Seq Scan on p1_c4
531          ->  Seq Scan on p1_c1_c1
532          ->  Seq Scan on p1_c1_c2
533          ->  Seq Scan on p1_c3_c1
534          ->  Seq Scan on p1_c3_c2
535    ->  Hash
536          ->  Append
537                ->  Seq Scan on p2
538                ->  Seq Scan on p2_c1
539                ->  Seq Scan on p2_c2
540                ->  Seq Scan on p2_c3
541                ->  Seq Scan on p2_c4
542                ->  Seq Scan on p2_c1_c1
543                ->  Seq Scan on p2_c1_c2
544                ->  Seq Scan on p2_c3_c1
545                ->  Seq Scan on p2_c3_c2
546 (23 rows)
547
548 /*+Parallel(p2 8 hard)*/
549 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
550 LOG:  pg_hint_plan:
551 used hint:
552 Parallel(p2 8 hard)
553 not used hint:
554 duplication hint:
555 error hint:
556
557                       QUERY PLAN                       
558 -------------------------------------------------------
559  Gather
560    Workers Planned: 8
561    ->  Parallel Hash Join
562          Hash Cond: (p2.id = p1.id)
563          ->  Parallel Append
564                ->  Seq Scan on p2
565                ->  Seq Scan on p2_c1
566                ->  Seq Scan on p2_c3
567                ->  Parallel Seq Scan on p2_c2
568                ->  Parallel Seq Scan on p2_c4
569                ->  Parallel Seq Scan on p2_c1_c1
570                ->  Parallel Seq Scan on p2_c1_c2
571                ->  Parallel Seq Scan on p2_c3_c1
572                ->  Parallel Seq Scan on p2_c3_c2
573          ->  Parallel Hash
574                ->  Parallel Append
575                      ->  Seq Scan on p1
576                      ->  Seq Scan on p1_c1
577                      ->  Seq Scan on p1_c3
578                      ->  Parallel Seq Scan on p1_c2
579                      ->  Parallel Seq Scan on p1_c4
580                      ->  Parallel Seq Scan on p1_c1_c1
581                      ->  Parallel Seq Scan on p1_c1_c2
582                      ->  Parallel Seq Scan on p1_c3_c1
583                      ->  Parallel Seq Scan on p1_c3_c2
584 (25 rows)
585
586 -- Number of workers results to the largest number
587 SET enable_parallel_append to false;
588 /*+Parallel(p2 8 hard) Parallel(p1 5 hard) */
589 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
590 LOG:  pg_hint_plan:
591 used hint:
592 Parallel(p1 5 hard)
593 Parallel(p2 8 hard)
594 not used hint:
595 duplication hint:
596 error hint:
597
598                       QUERY PLAN                       
599 -------------------------------------------------------
600  Gather
601    Workers Planned: 8
602    ->  Parallel Hash Join
603          Hash Cond: (p1.id = p2.id)
604          ->  Append
605                ->  Parallel Seq Scan on p1
606                ->  Parallel Seq Scan on p1_c1
607                ->  Parallel Seq Scan on p1_c2
608                ->  Parallel Seq Scan on p1_c3
609                ->  Parallel Seq Scan on p1_c4
610                ->  Parallel Seq Scan on p1_c1_c1
611                ->  Parallel Seq Scan on p1_c1_c2
612                ->  Parallel Seq Scan on p1_c3_c1
613                ->  Parallel Seq Scan on p1_c3_c2
614          ->  Parallel Hash
615                ->  Append
616                      ->  Parallel Seq Scan on p2
617                      ->  Parallel Seq Scan on p2_c1
618                      ->  Parallel Seq Scan on p2_c2
619                      ->  Parallel Seq Scan on p2_c3
620                      ->  Parallel Seq Scan on p2_c4
621                      ->  Parallel Seq Scan on p2_c1_c1
622                      ->  Parallel Seq Scan on p2_c1_c2
623                      ->  Parallel Seq Scan on p2_c3_c1
624                      ->  Parallel Seq Scan on p2_c3_c2
625 (25 rows)
626
627 SET enable_parallel_append to true;
628 /*+Parallel(p2 8 hard) Parallel(p1 5 hard) */
629 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
630 LOG:  pg_hint_plan:
631 used hint:
632 Parallel(p1 5 hard)
633 Parallel(p2 8 hard)
634 not used hint:
635 duplication hint:
636 error hint:
637
638                       QUERY PLAN                       
639 -------------------------------------------------------
640  Gather
641    Workers Planned: 8
642    ->  Parallel Hash Join
643          Hash Cond: (p2.id = p1.id)
644          ->  Parallel Append
645                ->  Seq Scan on p2
646                ->  Seq Scan on p2_c1
647                ->  Seq Scan on p2_c3
648                ->  Parallel Seq Scan on p2_c2
649                ->  Parallel Seq Scan on p2_c4
650                ->  Parallel Seq Scan on p2_c1_c1
651                ->  Parallel Seq Scan on p2_c1_c2
652                ->  Parallel Seq Scan on p2_c3_c1
653                ->  Parallel Seq Scan on p2_c3_c2
654          ->  Parallel Hash
655                ->  Parallel Append
656                      ->  Seq Scan on p1
657                      ->  Seq Scan on p1_c1
658                      ->  Seq Scan on p1_c3
659                      ->  Parallel Seq Scan on p1_c2
660                      ->  Parallel Seq Scan on p1_c4
661                      ->  Parallel Seq Scan on p1_c1_c1
662                      ->  Parallel Seq Scan on p1_c1_c2
663                      ->  Parallel Seq Scan on p1_c3_c1
664                      ->  Parallel Seq Scan on p1_c3_c2
665 (25 rows)
666
667 -- Mixture with scan hints
668 -- p1 can be parallel
669 SET enable_parallel_append to false;
670 /*+Parallel(p1 8 hard) IndexScan(p2) */
671 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
672 LOG:  pg_hint_plan:
673 used hint:
674 IndexScan(p2)
675 Parallel(p1 8 hard)
676 not used hint:
677 duplication hint:
678 error hint:
679
680                                     QUERY PLAN                                     
681 -----------------------------------------------------------------------------------
682  Gather
683    Workers Planned: 8
684    ->  Parallel Hash Join
685          Hash Cond: (p1.id = p2.id)
686          ->  Append
687                ->  Parallel Seq Scan on p1
688                ->  Parallel Seq Scan on p1_c1
689                ->  Parallel Seq Scan on p1_c2
690                ->  Parallel Seq Scan on p1_c3
691                ->  Parallel Seq Scan on p1_c4
692                ->  Parallel Seq Scan on p1_c1_c1
693                ->  Parallel Seq Scan on p1_c1_c2
694                ->  Parallel Seq Scan on p1_c3_c1
695                ->  Parallel Seq Scan on p1_c3_c2
696          ->  Parallel Hash
697                ->  Append
698                      ->  Parallel Index Scan using p2_id2_val on p2
699                      ->  Parallel Index Scan using p2_c1_id2_val on p2_c1
700                      ->  Parallel Index Scan using p2_c2_id2_val on p2_c2
701                      ->  Parallel Index Scan using p2_c3_id_val_idx on p2_c3
702                      ->  Parallel Index Scan using p2_c4_id_val_idx on p2_c4
703                      ->  Parallel Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
704                      ->  Parallel Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
705                      ->  Parallel Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1
706                      ->  Parallel Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2
707 (25 rows)
708
709 SET enable_parallel_append to true;
710 /*+Parallel(p1 8 hard) IndexScan(p2) */
711 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
712 LOG:  pg_hint_plan:
713 used hint:
714 IndexScan(p2)
715 Parallel(p1 8 hard)
716 not used hint:
717 duplication hint:
718 error hint:
719
720                                     QUERY PLAN                                     
721 -----------------------------------------------------------------------------------
722  Gather
723    Workers Planned: 8
724    ->  Parallel Hash Join
725          Hash Cond: (p1.id = p2_c2.id)
726          ->  Parallel Append
727                ->  Seq Scan on p1
728                ->  Seq Scan on p1_c1
729                ->  Seq Scan on p1_c3
730                ->  Parallel Seq Scan on p1_c2
731                ->  Parallel Seq Scan on p1_c4
732                ->  Parallel Seq Scan on p1_c1_c1
733                ->  Parallel Seq Scan on p1_c1_c2
734                ->  Parallel Seq Scan on p1_c3_c1
735                ->  Parallel Seq Scan on p1_c3_c2
736          ->  Parallel Hash
737                ->  Parallel Append
738                      ->  Parallel Index Scan using p2_c2_id2_val on p2_c2
739                      ->  Parallel Index Scan using p2_c4_id_val_idx on p2_c4
740                      ->  Parallel Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
741                      ->  Parallel Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
742                      ->  Parallel Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1
743                      ->  Parallel Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2
744                      ->  Parallel Index Scan using p2_id2_val on p2
745                      ->  Parallel Index Scan using p2_c1_id2_val on p2_c1
746                      ->  Parallel Index Scan using p2_c3_id_val_idx on p2_c3
747 (25 rows)
748
749 -- Parallel sequential scan
750 SET enable_parallel_append to false;
751 /*+Parallel(p1 8 hard) SeqScan(p1) */
752 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
753 LOG:  pg_hint_plan:
754 used hint:
755 SeqScan(p1)
756 Parallel(p1 8 hard)
757 not used hint:
758 duplication hint:
759 error hint:
760
761                       QUERY PLAN                       
762 -------------------------------------------------------
763  Gather
764    Workers Planned: 8
765    ->  Parallel Hash Join
766          Hash Cond: (p1.id = p2.id)
767          ->  Append
768                ->  Parallel Seq Scan on p1
769                ->  Parallel Seq Scan on p1_c1
770                ->  Parallel Seq Scan on p1_c2
771                ->  Parallel Seq Scan on p1_c3
772                ->  Parallel Seq Scan on p1_c4
773                ->  Parallel Seq Scan on p1_c1_c1
774                ->  Parallel Seq Scan on p1_c1_c2
775                ->  Parallel Seq Scan on p1_c3_c1
776                ->  Parallel Seq Scan on p1_c3_c2
777          ->  Parallel Hash
778                ->  Append
779                      ->  Parallel Seq Scan on p2
780                      ->  Parallel Seq Scan on p2_c1
781                      ->  Parallel Seq Scan on p2_c2
782                      ->  Parallel Seq Scan on p2_c3
783                      ->  Parallel Seq Scan on p2_c4
784                      ->  Parallel Seq Scan on p2_c1_c1
785                      ->  Parallel Seq Scan on p2_c1_c2
786                      ->  Parallel Seq Scan on p2_c3_c1
787                      ->  Parallel Seq Scan on p2_c3_c2
788 (25 rows)
789
790 SET enable_parallel_append to true;
791 /*+Parallel(p1 8 hard) SeqScan(p1) */
792 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
793 LOG:  pg_hint_plan:
794 used hint:
795 SeqScan(p1)
796 Parallel(p1 8 hard)
797 not used hint:
798 duplication hint:
799 error hint:
800
801                       QUERY PLAN                       
802 -------------------------------------------------------
803  Gather
804    Workers Planned: 8
805    ->  Parallel Hash Join
806          Hash Cond: (p1.id = p2.id)
807          ->  Parallel Append
808                ->  Seq Scan on p1
809                ->  Seq Scan on p1_c1
810                ->  Seq Scan on p1_c3
811                ->  Parallel Seq Scan on p1_c2
812                ->  Parallel Seq Scan on p1_c4
813                ->  Parallel Seq Scan on p1_c1_c1
814                ->  Parallel Seq Scan on p1_c1_c2
815                ->  Parallel Seq Scan on p1_c3_c1
816                ->  Parallel Seq Scan on p1_c3_c2
817          ->  Parallel Hash
818                ->  Parallel Append
819                      ->  Seq Scan on p2
820                      ->  Seq Scan on p2_c1
821                      ->  Seq Scan on p2_c3
822                      ->  Parallel Seq Scan on p2_c2
823                      ->  Parallel Seq Scan on p2_c4
824                      ->  Parallel Seq Scan on p2_c1_c1
825                      ->  Parallel Seq Scan on p2_c1_c2
826                      ->  Parallel Seq Scan on p2_c3_c1
827                      ->  Parallel Seq Scan on p2_c3_c2
828 (25 rows)
829
830 -- Parallel index scan
831 SET enable_parallel_append to false;
832 /*+Parallel(p1 8 hard) IndexScan(p1) */
833 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
834 LOG:  pg_hint_plan:
835 used hint:
836 IndexScan(p1)
837 Parallel(p1 8 hard)
838 not used hint:
839 duplication hint:
840 error hint:
841
842                               QUERY PLAN                               
843 -----------------------------------------------------------------------
844  Gather
845    Workers Planned: 8
846    ->  Parallel Hash Join
847          Hash Cond: (p1.id = p2.id)
848          ->  Append
849                ->  Parallel Index Scan using p1_pkey on p1
850                ->  Parallel Index Scan using p1_c1_pkey on p1_c1
851                ->  Parallel Index Scan using p1_c2_pkey on p1_c2
852                ->  Parallel Index Scan using p1_c3_pkey on p1_c3
853                ->  Parallel Index Scan using p1_c4_pkey on p1_c4
854                ->  Parallel Index Scan using p1_c1_c1_pkey on p1_c1_c1
855                ->  Parallel Index Scan using p1_c1_c2_pkey on p1_c1_c2
856                ->  Parallel Index Scan using p1_c3_c1_pkey on p1_c3_c1
857                ->  Parallel Index Scan using p1_c3_c2_pkey on p1_c3_c2
858          ->  Parallel Hash
859                ->  Append
860                      ->  Parallel Seq Scan on p2
861                      ->  Parallel Seq Scan on p2_c1
862                      ->  Parallel Seq Scan on p2_c2
863                      ->  Parallel Seq Scan on p2_c3
864                      ->  Parallel Seq Scan on p2_c4
865                      ->  Parallel Seq Scan on p2_c1_c1
866                      ->  Parallel Seq Scan on p2_c1_c2
867                      ->  Parallel Seq Scan on p2_c3_c1
868                      ->  Parallel Seq Scan on p2_c3_c2
869 (25 rows)
870
871 SET enable_parallel_append to true;
872 /*+Parallel(p1 8 hard) IndexScan(p1) */
873 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
874 LOG:  pg_hint_plan:
875 used hint:
876 IndexScan(p1)
877 Parallel(p1 8 hard)
878 not used hint:
879 duplication hint:
880 error hint:
881
882                               QUERY PLAN                               
883 -----------------------------------------------------------------------
884  Gather
885    Workers Planned: 8
886    ->  Parallel Hash Join
887          Hash Cond: (p1.id = p2.id)
888          ->  Parallel Append
889                ->  Parallel Index Scan using p1_pkey on p1
890                ->  Parallel Index Scan using p1_c1_pkey on p1_c1
891                ->  Parallel Index Scan using p1_c2_pkey on p1_c2
892                ->  Parallel Index Scan using p1_c3_pkey on p1_c3
893                ->  Parallel Index Scan using p1_c4_pkey on p1_c4
894                ->  Parallel Index Scan using p1_c1_c1_pkey on p1_c1_c1
895                ->  Parallel Index Scan using p1_c1_c2_pkey on p1_c1_c2
896                ->  Parallel Index Scan using p1_c3_c1_pkey on p1_c3_c1
897                ->  Parallel Index Scan using p1_c3_c2_pkey on p1_c3_c2
898          ->  Parallel Hash
899                ->  Parallel Append
900                      ->  Seq Scan on p2
901                      ->  Seq Scan on p2_c1
902                      ->  Seq Scan on p2_c3
903                      ->  Parallel Seq Scan on p2_c2
904                      ->  Parallel Seq Scan on p2_c4
905                      ->  Parallel Seq Scan on p2_c1_c1
906                      ->  Parallel Seq Scan on p2_c1_c2
907                      ->  Parallel Seq Scan on p2_c3_c1
908                      ->  Parallel Seq Scan on p2_c3_c2
909 (25 rows)
910
911 -- This hint doesn't turn on parallel, so the Parallel hint is ignored
912 set max_parallel_workers_per_gather TO 0;
913 /*+Parallel(p1 0 hard) IndexScan(p1) */
914 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
915 LOG:  pg_hint_plan:
916 used hint:
917 IndexScan(p1)
918 not used hint:
919 Parallel(p1 0 hard)
920 duplication hint:
921 error hint:
922
923                        QUERY PLAN                       
924 --------------------------------------------------------
925  Hash Join
926    Hash Cond: (p1.id = p2.id)
927    ->  Append
928          ->  Index Scan using p1_pkey on p1
929          ->  Index Scan using p1_c1_pkey on p1_c1
930          ->  Index Scan using p1_c2_pkey on p1_c2
931          ->  Index Scan using p1_c3_pkey on p1_c3
932          ->  Index Scan using p1_c4_pkey on p1_c4
933          ->  Index Scan using p1_c1_c1_pkey on p1_c1_c1
934          ->  Index Scan using p1_c1_c2_pkey on p1_c1_c2
935          ->  Index Scan using p1_c3_c1_pkey on p1_c3_c1
936          ->  Index Scan using p1_c3_c2_pkey on p1_c3_c2
937    ->  Hash
938          ->  Append
939                ->  Seq Scan on p2
940                ->  Seq Scan on p2_c1
941                ->  Seq Scan on p2_c2
942                ->  Seq Scan on p2_c3
943                ->  Seq Scan on p2_c4
944                ->  Seq Scan on p2_c1_c1
945                ->  Seq Scan on p2_c1_c2
946                ->  Seq Scan on p2_c3_c1
947                ->  Seq Scan on p2_c3_c2
948 (23 rows)
949
950 -- Parallel on UNION
951 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
952          QUERY PLAN         
953 ----------------------------
954  Append
955    ->  Seq Scan on p1
956    ->  Seq Scan on p1_c1
957    ->  Seq Scan on p1_c2
958    ->  Seq Scan on p1_c3
959    ->  Seq Scan on p1_c4
960    ->  Seq Scan on p1_c1_c1
961    ->  Seq Scan on p1_c1_c2
962    ->  Seq Scan on p1_c3_c1
963    ->  Seq Scan on p1_c3_c2
964    ->  Seq Scan on p2
965    ->  Seq Scan on p2_c1
966    ->  Seq Scan on p2_c2
967    ->  Seq Scan on p2_c3
968    ->  Seq Scan on p2_c4
969    ->  Seq Scan on p2_c1_c1
970    ->  Seq Scan on p2_c1_c2
971    ->  Seq Scan on p2_c3_c1
972    ->  Seq Scan on p2_c3_c2
973 (19 rows)
974
975 -- parallel hinting on any relation enables parallel
976 SET parallel_setup_cost to 0;
977 SET parallel_tuple_cost to 0;
978 SET min_parallel_table_scan_size to 0;
979 SET min_parallel_index_scan_size to 0;
980 SET max_parallel_workers_per_gather to 0;
981 /*+Parallel(p1 8) */
982 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
983 LOG:  pg_hint_plan:
984 used hint:
985 Parallel(p1 8 soft)
986 not used hint:
987 duplication hint:
988 error hint:
989
990                 QUERY PLAN                 
991 -------------------------------------------
992  Gather
993    Workers Planned: 1
994    ->  Parallel Append
995          ->  Parallel Seq Scan on p2_c2
996          ->  Parallel Seq Scan on p2_c4
997          ->  Parallel Seq Scan on p2_c1_c1
998          ->  Parallel Seq Scan on p2_c1_c2
999          ->  Parallel Seq Scan on p2_c3_c1
1000          ->  Parallel Seq Scan on p2_c3_c2
1001          ->  Parallel Seq Scan on p1
1002          ->  Parallel Seq Scan on p1_c1
1003          ->  Parallel Seq Scan on p1_c2
1004          ->  Parallel Seq Scan on p1_c3
1005          ->  Parallel Seq Scan on p1_c4
1006          ->  Parallel Seq Scan on p1_c1_c1
1007          ->  Parallel Seq Scan on p1_c1_c2
1008          ->  Parallel Seq Scan on p1_c3_c1
1009          ->  Parallel Seq Scan on p1_c3_c2
1010          ->  Parallel Seq Scan on p2
1011          ->  Parallel Seq Scan on p2_c1
1012          ->  Parallel Seq Scan on p2_c3
1013 (21 rows)
1014
1015 -- set hint has the same effect
1016 /*+Set(max_parallel_workers_per_gather 1)*/
1017 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
1018 LOG:  pg_hint_plan:
1019 used hint:
1020 Set(max_parallel_workers_per_gather 1)
1021 not used hint:
1022 duplication hint:
1023 error hint:
1024
1025                 QUERY PLAN                 
1026 -------------------------------------------
1027  Gather
1028    Workers Planned: 1
1029    ->  Parallel Append
1030          ->  Parallel Seq Scan on p1_c2
1031          ->  Parallel Seq Scan on p1_c4
1032          ->  Parallel Seq Scan on p2_c2
1033          ->  Parallel Seq Scan on p2_c4
1034          ->  Parallel Seq Scan on p1_c1_c1
1035          ->  Parallel Seq Scan on p1_c1_c2
1036          ->  Parallel Seq Scan on p1_c3_c1
1037          ->  Parallel Seq Scan on p1_c3_c2
1038          ->  Parallel Seq Scan on p2_c1_c1
1039          ->  Parallel Seq Scan on p2_c1_c2
1040          ->  Parallel Seq Scan on p2_c3_c1
1041          ->  Parallel Seq Scan on p2_c3_c2
1042          ->  Parallel Seq Scan on p1
1043          ->  Parallel Seq Scan on p1_c1
1044          ->  Parallel Seq Scan on p1_c3
1045          ->  Parallel Seq Scan on p2
1046          ->  Parallel Seq Scan on p2_c1
1047          ->  Parallel Seq Scan on p2_c3
1048 (21 rows)
1049
1050 -- applies largest number of workers on merged parallel paths
1051 SET parallel_setup_cost to DEFAULT;
1052 SET parallel_tuple_cost to DEFAULT;
1053 SET min_parallel_table_scan_size to DEFAULT;
1054 SET min_parallel_index_scan_size to DEFAULT;
1055 SET max_parallel_workers_per_gather to 8;
1056 /*+Parallel(p1 5 hard)Parallel(p2 6 hard) */
1057 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
1058 LOG:  pg_hint_plan:
1059 used hint:
1060 Parallel(p1 5 hard)
1061 Parallel(p2 6 hard)
1062 not used hint:
1063 duplication hint:
1064 error hint:
1065
1066                 QUERY PLAN                 
1067 -------------------------------------------
1068  Gather
1069    Workers Planned: 6
1070    ->  Parallel Append
1071          ->  Seq Scan on p1
1072          ->  Seq Scan on p1_c1
1073          ->  Seq Scan on p1_c3
1074          ->  Seq Scan on p2
1075          ->  Seq Scan on p2_c1
1076          ->  Seq Scan on p2_c3
1077          ->  Parallel Seq Scan on p1_c2
1078          ->  Parallel Seq Scan on p1_c4
1079          ->  Parallel Seq Scan on p1_c1_c1
1080          ->  Parallel Seq Scan on p1_c1_c2
1081          ->  Parallel Seq Scan on p1_c3_c1
1082          ->  Parallel Seq Scan on p1_c3_c2
1083          ->  Parallel Seq Scan on p2_c2
1084          ->  Parallel Seq Scan on p2_c4
1085          ->  Parallel Seq Scan on p2_c1_c1
1086          ->  Parallel Seq Scan on p2_c1_c2
1087          ->  Parallel Seq Scan on p2_c3_c1
1088          ->  Parallel Seq Scan on p2_c3_c2
1089 (21 rows)
1090
1091 -- Negative hints
1092 SET enable_indexscan to DEFAULT;
1093 SET parallel_setup_cost to 0;
1094 SET parallel_tuple_cost to 0;
1095 SET min_parallel_table_scan_size to 0;
1096 SET min_parallel_index_scan_size to 0;
1097 SET max_parallel_workers_per_gather to 5;
1098 EXPLAIN (COSTS false) SELECT * FROM p1;
1099                 QUERY PLAN                 
1100 -------------------------------------------
1101  Gather
1102    Workers Planned: 4
1103    ->  Parallel Append
1104          ->  Parallel Seq Scan on p1_c2
1105          ->  Parallel Seq Scan on p1_c4
1106          ->  Parallel Seq Scan on p1_c1_c1
1107          ->  Parallel Seq Scan on p1_c1_c2
1108          ->  Parallel Seq Scan on p1_c3_c1
1109          ->  Parallel Seq Scan on p1_c3_c2
1110          ->  Parallel Seq Scan on p1
1111          ->  Parallel Seq Scan on p1_c1
1112          ->  Parallel Seq Scan on p1_c3
1113 (12 rows)
1114
1115 SET enable_parallel_append to false;
1116 /*+Parallel(p1 0 hard)*/
1117 EXPLAIN (COSTS false) SELECT * FROM p1;
1118 LOG:  pg_hint_plan:
1119 used hint:
1120 Parallel(p1 0 hard)
1121 not used hint:
1122 duplication hint:
1123 error hint:
1124
1125          QUERY PLAN         
1126 ----------------------------
1127  Append
1128    ->  Seq Scan on p1
1129    ->  Seq Scan on p1_c1
1130    ->  Seq Scan on p1_c2
1131    ->  Seq Scan on p1_c3
1132    ->  Seq Scan on p1_c4
1133    ->  Seq Scan on p1_c1_c1
1134    ->  Seq Scan on p1_c1_c2
1135    ->  Seq Scan on p1_c3_c1
1136    ->  Seq Scan on p1_c3_c2
1137 (10 rows)
1138
1139 SET enable_parallel_append to true;
1140 /*+Parallel(p1 0 hard)*/
1141 EXPLAIN (COSTS false) SELECT * FROM p1;
1142 LOG:  pg_hint_plan:
1143 used hint:
1144 Parallel(p1 0 hard)
1145 not used hint:
1146 duplication hint:
1147 error hint:
1148
1149          QUERY PLAN         
1150 ----------------------------
1151  Append
1152    ->  Seq Scan on p1
1153    ->  Seq Scan on p1_c1
1154    ->  Seq Scan on p1_c2
1155    ->  Seq Scan on p1_c3
1156    ->  Seq Scan on p1_c4
1157    ->  Seq Scan on p1_c1_c1
1158    ->  Seq Scan on p1_c1_c2
1159    ->  Seq Scan on p1_c3_c1
1160    ->  Seq Scan on p1_c3_c2
1161 (10 rows)
1162
1163 -- Errors
1164 /*+Parallel(p1 100x hard)Parallel(p1 -1000 hard)Parallel(p1 1000000 hard)
1165    Parallel(p1 8 hoge)Parallel(p1)Parallel(p1 100 soft x)*/
1166 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
1167 INFO:  pg_hint_plan: hint syntax error at or near "100x"
1168 DETAIL:  number of workers must be a number: Parallel
1169 INFO:  pg_hint_plan: hint syntax error at or near "-1000"
1170 DETAIL:  number of workers must be positive: Parallel
1171 INFO:  pg_hint_plan: hint syntax error at or near "1000000"
1172 DETAIL:  number of workers = 1000000 is larger than max_worker_processes(8): Parallel
1173 INFO:  pg_hint_plan: hint syntax error at or near "hoge"
1174 DETAIL:  enforcement must be soft or hard: Parallel
1175 INFO:  pg_hint_plan: hint syntax error at or near ")"
1176 DETAIL:  wrong number of arguments (1): Parallel
1177 INFO:  pg_hint_plan: hint syntax error at or near ")"
1178 DETAIL:  wrong number of arguments (4): Parallel
1179 LOG:  pg_hint_plan:
1180 used hint:
1181 not used hint:
1182 duplication hint:
1183 error hint:
1184 Parallel(p1 100x hard)
1185 Parallel(p1 -1000 hard)
1186 Parallel(p1 1000000 hard)
1187 Parallel(p1 8 soft)
1188 Parallel()
1189 Parallel()
1190
1191                 QUERY PLAN                 
1192 -------------------------------------------
1193  Gather
1194    Workers Planned: 1
1195    ->  Parallel Append
1196          ->  Parallel Seq Scan on p1_c2
1197          ->  Parallel Seq Scan on p1_c4
1198          ->  Parallel Seq Scan on p2_c2
1199          ->  Parallel Seq Scan on p2_c4
1200          ->  Parallel Seq Scan on p1_c1_c1
1201          ->  Parallel Seq Scan on p1_c1_c2
1202          ->  Parallel Seq Scan on p1_c3_c1
1203          ->  Parallel Seq Scan on p1_c3_c2
1204          ->  Parallel Seq Scan on p2_c1_c1
1205          ->  Parallel Seq Scan on p2_c1_c2
1206          ->  Parallel Seq Scan on p2_c3_c1
1207          ->  Parallel Seq Scan on p2_c3_c2
1208          ->  Parallel Seq Scan on p1
1209          ->  Parallel Seq Scan on p1_c1
1210          ->  Parallel Seq Scan on p1_c3
1211          ->  Parallel Seq Scan on p2
1212          ->  Parallel Seq Scan on p2_c1
1213          ->  Parallel Seq Scan on p2_c3
1214 (21 rows)
1215
1216 -- Hints on unhintable relations are just ignored
1217 /*+Parallel(p1 5 hard) Parallel(s1 3 hard) IndexScan(ft1) SeqScan(cte1)
1218   TidScan(fs1) IndexScan(t) IndexScan(*VALUES*) */
1219 EXPLAIN (COSTS false) SELECT id FROM p1_c1_c1 as s1 TABLESAMPLE SYSTEM(10)
1220  UNION ALL
1221 SELECT id FROM ft1
1222  UNION ALL
1223 (WITH cte1 AS (SELECT id FROM p1 WHERE id % 2 = 0) SELECT id FROM cte1)
1224  UNION ALL
1225 SELECT userid FROM pg_stat_statements fs1
1226  UNION ALL
1227 SELECT x FROM (VALUES (1), (2), (3)) t(x);
1228 LOG:  pg_hint_plan:
1229 used hint:
1230 Parallel(p1 5 hard)
1231 not used hint:
1232 IndexScan(*VALUES*)
1233 SeqScan(cte1)
1234 TidScan(fs1)
1235 IndexScan(ft1)
1236 IndexScan(t)
1237 Parallel(s1 3 hard)
1238 duplication hint:
1239 error hint:
1240
1241                                           QUERY PLAN                                           
1242 -----------------------------------------------------------------------------------------------
1243  Append
1244    ->  Result
1245          ->  Append
1246                ->  Sample Scan on p1_c1_c1 s1
1247                      Sampling: system ('10'::real)
1248                ->  Foreign Scan on ft1
1249                      Foreign File: @abs_srcdir@/data/data.csv
1250                ->  CTE Scan on cte1
1251                      CTE cte1
1252                        ->  Gather
1253                              Workers Planned: 5
1254                              ->  Parallel Append
1255                                    ->  Seq Scan on p1
1256                                          Filter: ((id % 2) = 0)
1257                                    ->  Seq Scan on p1_c1
1258                                          Filter: ((id % 2) = 0)
1259                                    ->  Seq Scan on p1_c3
1260                                          Filter: ((id % 2) = 0)
1261                                    ->  Parallel Seq Scan on p1_c2
1262                                          Filter: ((id % 2) = 0)
1263                                    ->  Parallel Seq Scan on p1_c4
1264                                          Filter: ((id % 2) = 0)
1265                                    ->  Parallel Seq Scan on p1_c1_c1
1266                                          Filter: ((id % 2) = 0)
1267                                    ->  Parallel Seq Scan on p1_c1_c2
1268                                          Filter: ((id % 2) = 0)
1269                                    ->  Parallel Seq Scan on p1_c3_c1
1270                                          Filter: ((id % 2) = 0)
1271                                    ->  Parallel Seq Scan on p1_c3_c2
1272                                          Filter: ((id % 2) = 0)
1273    ->  Function Scan on pg_stat_statements
1274    ->  Subquery Scan on "*SELECT* 5"
1275          ->  Values Scan on "*VALUES*"
1276 (33 rows)
1277
1278 ALTER SYSTEM SET session_preload_libraries TO DEFAULT;
1279 SELECT pg_reload_conf();
1280  pg_reload_conf 
1281 ----------------
1282  t
1283 (1 row)
1284