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;
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;
21 EXPLAIN (COSTS false) SELECT * FROM s1.t1;
30 -------------------------------
33 -> Parallel Seq Scan on t1
36 /*+Parallel(t1 8 soft)*/
37 EXPLAIN (COSTS false) SELECT * FROM s1.t1;
46 -------------------------------
49 -> Parallel Seq Scan on t1
52 /*+Parallel(t1 8 hard)*/
53 EXPLAIN (COSTS false) SELECT * FROM s1.t1;
62 -------------------------------
65 -> Parallel Seq Scan on t1
68 /*+Parallel(t1 4 hard) */ /* to be gather merge*/
69 EXPLAIN (COSTS false) SELECT * FROM s1.t1 ORDER BY s1.t1.c1 LIMIT 4;
78 ---------------------------------------------------
82 -> Parallel Index Scan using t1_i1 on t1
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;
91 EXPLAIN (COSTS false) SELECT * FROM p1;
100 -------------------------------------------
104 -> Parallel Seq Scan on p1
105 -> Parallel Seq Scan on p1_c1
106 -> Parallel Seq Scan on p1_c2
107 -> Parallel Seq Scan on p1_c3
108 -> Parallel Seq Scan on p1_c4
109 -> Parallel Seq Scan on p1_c1_c1
110 -> Parallel Seq Scan on p1_c1_c2
111 -> Parallel Seq Scan on p1_c3_c1
112 -> Parallel Seq Scan on p1_c3_c2
115 SET parallel_setup_cost to DEFAULT;
116 SET parallel_tuple_cost to DEFAULT;
117 SET min_parallel_table_scan_size to DEFAULT;
118 SET min_parallel_index_scan_size to DEFAULT;
119 /*+Parallel(p1 8 hard)*/
120 EXPLAIN (COSTS false) SELECT * FROM p1;
129 -------------------------------------------
133 -> Parallel Seq Scan on p1
134 -> Parallel Seq Scan on p1_c1
135 -> Parallel Seq Scan on p1_c2
136 -> Parallel Seq Scan on p1_c3
137 -> Parallel Seq Scan on p1_c4
138 -> Parallel Seq Scan on p1_c1_c1
139 -> Parallel Seq Scan on p1_c1_c2
140 -> Parallel Seq Scan on p1_c3_c1
141 -> Parallel Seq Scan on p1_c3_c2
144 -- hinting on children makes the whole inheritance parallel
145 /*+Parallel(p1_c1 8 hard)*/
146 EXPLAIN (COSTS false) SELECT * FROM p1;
149 Parallel(p1_c1 8 hard)
155 -------------------------------------------
159 -> Parallel Seq Scan on p1
160 -> Parallel Seq Scan on p1_c1
161 -> Parallel Seq Scan on p1_c2
162 -> Parallel Seq Scan on p1_c3
163 -> Parallel Seq Scan on p1_c4
164 -> Parallel Seq Scan on p1_c1_c1
165 -> Parallel Seq Scan on p1_c1_c2
166 -> Parallel Seq Scan on p1_c3_c1
167 -> Parallel Seq Scan on p1_c3_c2
171 EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
173 ------------------------------------------
175 Hash Cond: (p1_c1_c1.id = p2_c1_c1.id)
176 -> Seq Scan on p1_c1_c1
178 -> Seq Scan on p2_c1_c1
181 /*+Parallel(p1_c1_c1 8 hard)*/
182 EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
185 Parallel(p1_c1_c1 8 hard)
191 -------------------------------------------------
193 Hash Cond: (p2_c1_c1.id = p1_c1_c1.id)
194 -> Seq Scan on p2_c1_c1
198 -> Parallel Seq Scan on p1_c1_c1
201 SET parallel_setup_cost to 0;
202 SET parallel_tuple_cost to 0;
203 SET min_parallel_table_scan_size to 0;
204 SET min_parallel_index_scan_size to 0;
205 /*+Parallel(p1_c1_c1 8 soft) Parallel(p2_c1_c1 0)*/
206 EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
209 Parallel(p1_c1_c1 8 soft)
210 Parallel(p2_c1_c1 0 soft)
216 ------------------------------------------------
220 Hash Cond: (p1_c1_c1.id = p2_c1_c1.id)
221 -> Parallel Seq Scan on p1_c1_c1
223 -> Seq Scan on p2_c1_c1
226 /*+Parallel(p1_c1_c1 8 hard) Parallel(p2_c1_c1 0)*/
227 EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
230 Parallel(p1_c1_c1 8 hard)
231 Parallel(p2_c1_c1 0 soft)
237 ------------------------------------------------
241 Hash Cond: (p1_c1_c1.id = p2_c1_c1.id)
242 -> Parallel Seq Scan on p1_c1_c1
244 -> Seq Scan on p2_c1_c1
247 /*+Parallel(p1_c1_c1 8 hard) Parallel(p2_c1_c1 8 hard)*/
248 EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
251 Parallel(p1_c1_c1 8 hard)
252 Parallel(p2_c1_c1 8 hard)
258 -------------------------------------------------
260 Hash Cond: (p1_c1_c1.id = p2_c1_c1.id)
263 -> Parallel Seq Scan on p1_c1_c1
267 -> Parallel Seq Scan on p2_c1_c1
270 -- Joins on inheritance tables
271 SET parallel_setup_cost to 0;
272 SET parallel_tuple_cost to 0;
273 SET min_parallel_table_scan_size to 0;
274 SET min_parallel_index_scan_size to 0;
276 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
285 -------------------------------------------------
289 Hash Cond: (p1.id = p2.id)
291 -> Parallel Seq Scan on p1
292 -> Parallel Seq Scan on p1_c1
293 -> Parallel Seq Scan on p1_c2
294 -> Parallel Seq Scan on p1_c3
295 -> Parallel Seq Scan on p1_c4
296 -> Parallel Seq Scan on p1_c1_c1
297 -> Parallel Seq Scan on p1_c1_c2
298 -> Parallel Seq Scan on p1_c3_c1
299 -> Parallel Seq Scan on p1_c3_c2
307 -> Seq Scan on p2_c1_c1
308 -> Seq Scan on p2_c1_c2
309 -> Seq Scan on p2_c3_c1
310 -> Seq Scan on p2_c3_c2
313 /*+Parallel(p1 8)Parallel(p2 0)*/
314 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
324 -------------------------------------------------
328 Hash Cond: (p1.id = p2.id)
330 -> Parallel Seq Scan on p1
331 -> Parallel Seq Scan on p1_c1
332 -> Parallel Seq Scan on p1_c2
333 -> Parallel Seq Scan on p1_c3
334 -> Parallel Seq Scan on p1_c4
335 -> Parallel Seq Scan on p1_c1_c1
336 -> Parallel Seq Scan on p1_c1_c2
337 -> Parallel Seq Scan on p1_c3_c1
338 -> Parallel Seq Scan on p1_c3_c2
346 -> Seq Scan on p2_c1_c1
347 -> Seq Scan on p2_c1_c2
348 -> Seq Scan on p2_c3_c1
349 -> Seq Scan on p2_c3_c2
352 SET parallel_setup_cost to DEFAULT;
353 SET parallel_tuple_cost to DEFAULT;
354 SET min_parallel_table_scan_size to DEFAULT;
355 SET min_parallel_index_scan_size to DEFAULT;
356 /*+Parallel(p2 8 soft)*/
357 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
366 -------------------------------------------------
370 Hash Cond: (p2.id = p1.id)
372 -> Parallel Seq Scan on p2
373 -> Parallel Seq Scan on p2_c1
374 -> Parallel Seq Scan on p2_c2
375 -> Parallel Seq Scan on p2_c3
376 -> Parallel Seq Scan on p2_c4
377 -> Parallel Seq Scan on p2_c1_c1
378 -> Parallel Seq Scan on p2_c1_c2
379 -> Parallel Seq Scan on p2_c3_c1
380 -> Parallel Seq Scan on p2_c3_c2
388 -> Seq Scan on p1_c1_c1
389 -> Seq Scan on p1_c1_c2
390 -> Seq Scan on p1_c3_c1
391 -> Seq Scan on p1_c3_c2
394 /*+Parallel(p2 8 hard)*/
395 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
404 -------------------------------------------------
408 Hash Cond: (p2.id = p1.id)
410 -> Parallel Seq Scan on p2
411 -> Parallel Seq Scan on p2_c1
412 -> Parallel Seq Scan on p2_c2
413 -> Parallel Seq Scan on p2_c3
414 -> Parallel Seq Scan on p2_c4
415 -> Parallel Seq Scan on p2_c1_c1
416 -> Parallel Seq Scan on p2_c1_c2
417 -> Parallel Seq Scan on p2_c3_c1
418 -> Parallel Seq Scan on p2_c3_c2
426 -> Seq Scan on p1_c1_c1
427 -> Seq Scan on p1_c1_c2
428 -> Seq Scan on p1_c3_c1
429 -> Seq Scan on p1_c3_c2
432 /*+Parallel(p2 8 hard) Parallel(p1 5 hard) */
433 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
443 -------------------------------------------------------
445 Hash Cond: (p1.id = p2.id)
449 -> Parallel Seq Scan on p1
450 -> Parallel Seq Scan on p1_c1
451 -> Parallel Seq Scan on p1_c2
452 -> Parallel Seq Scan on p1_c3
453 -> Parallel Seq Scan on p1_c4
454 -> Parallel Seq Scan on p1_c1_c1
455 -> Parallel Seq Scan on p1_c1_c2
456 -> Parallel Seq Scan on p1_c3_c1
457 -> Parallel Seq Scan on p1_c3_c2
462 -> Parallel Seq Scan on p2
463 -> Parallel Seq Scan on p2_c1
464 -> Parallel Seq Scan on p2_c2
465 -> Parallel Seq Scan on p2_c3
466 -> Parallel Seq Scan on p2_c4
467 -> Parallel Seq Scan on p2_c1_c1
468 -> Parallel Seq Scan on p2_c1_c2
469 -> Parallel Seq Scan on p2_c3_c1
470 -> Parallel Seq Scan on p2_c3_c2
473 -- Mixture with a scan hint
474 -- p1 can be parallel
475 /*+Parallel(p1 8 hard) IndexScan(p2) */
476 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
486 --------------------------------------------------------------
488 Hash Cond: (p2.id = p1.id)
490 -> Index Scan using p2_id2_val on p2
491 -> Index Scan using p2_c1_id2_val on p2_c1
492 -> Index Scan using p2_c2_id2_val on p2_c2
493 -> Index Scan using p2_c3_id_val_idx on p2_c3
494 -> Index Scan using p2_c4_id_val_idx on p2_c4
495 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
496 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
497 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1
498 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2
503 -> Parallel Seq Scan on p1
504 -> Parallel Seq Scan on p1_c1
505 -> Parallel Seq Scan on p1_c2
506 -> Parallel Seq Scan on p1_c3
507 -> Parallel Seq Scan on p1_c4
508 -> Parallel Seq Scan on p1_c1_c1
509 -> Parallel Seq Scan on p1_c1_c2
510 -> Parallel Seq Scan on p1_c3_c1
511 -> Parallel Seq Scan on p1_c3_c2
514 -- Parallel sequential scan
515 /*+Parallel(p1 8 hard) SeqScan(p1) */
516 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
526 -------------------------------------------------
530 Hash Cond: (p1.id = p2.id)
532 -> Parallel Seq Scan on p1
533 -> Parallel Seq Scan on p1_c1
534 -> Parallel Seq Scan on p1_c2
535 -> Parallel Seq Scan on p1_c3
536 -> Parallel Seq Scan on p1_c4
537 -> Parallel Seq Scan on p1_c1_c1
538 -> Parallel Seq Scan on p1_c1_c2
539 -> Parallel Seq Scan on p1_c3_c1
540 -> Parallel Seq Scan on p1_c3_c2
548 -> Seq Scan on p2_c1_c1
549 -> Seq Scan on p2_c1_c2
550 -> Seq Scan on p2_c3_c1
551 -> Seq Scan on p2_c3_c2
554 -- Parallel index scan
555 /*+Parallel(p1 8 hard) IndexScan(p1) */
556 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
566 -----------------------------------------------------------------------
570 Hash Cond: (p1.id = p2.id)
572 -> Parallel Index Scan using p1_pkey on p1
573 -> Parallel Index Scan using p1_c1_pkey on p1_c1
574 -> Parallel Index Scan using p1_c2_pkey on p1_c2
575 -> Parallel Index Scan using p1_c3_pkey on p1_c3
576 -> Parallel Index Scan using p1_c4_pkey on p1_c4
577 -> Parallel Index Scan using p1_c1_c1_pkey on p1_c1_c1
578 -> Parallel Index Scan using p1_c1_c2_pkey on p1_c1_c2
579 -> Parallel Index Scan using p1_c3_c1_pkey on p1_c3_c1
580 -> Parallel Index Scan using p1_c3_c2_pkey on p1_c3_c2
588 -> Seq Scan on p2_c1_c1
589 -> Seq Scan on p2_c1_c2
590 -> Seq Scan on p2_c3_c1
591 -> Seq Scan on p2_c3_c2
594 -- This hint doesn't turn on parallel, so the Parallel hint is ignored
595 set max_parallel_workers_per_gather TO 0;
596 /*+Parallel(p1 0 hard) IndexScan(p1) */
597 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
607 --------------------------------------------------------
609 Hash Cond: (p1.id = p2.id)
611 -> Index Scan using p1_pkey on p1
612 -> Index Scan using p1_c1_pkey on p1_c1
613 -> Index Scan using p1_c2_pkey on p1_c2
614 -> Index Scan using p1_c3_pkey on p1_c3
615 -> Index Scan using p1_c4_pkey on p1_c4
616 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
617 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
618 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
619 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
627 -> Seq Scan on p2_c1_c1
628 -> Seq Scan on p2_c1_c2
629 -> Seq Scan on p2_c3_c1
630 -> Seq Scan on p2_c3_c2
634 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
636 ----------------------------
643 -> Seq Scan on p1_c1_c1
644 -> Seq Scan on p1_c1_c2
645 -> Seq Scan on p1_c3_c1
646 -> Seq Scan on p1_c3_c2
652 -> Seq Scan on p2_c1_c1
653 -> Seq Scan on p2_c1_c2
654 -> Seq Scan on p2_c3_c1
655 -> Seq Scan on p2_c3_c2
658 -- parallel hinting on any relation enables parallel
659 SET parallel_setup_cost to 0;
660 SET parallel_tuple_cost to 0;
661 SET min_parallel_table_scan_size to 0;
662 SET min_parallel_index_scan_size to 0;
663 SET max_parallel_workers_per_gather to 0;
665 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
674 -------------------------------------------
678 -> Parallel Seq Scan on p1
679 -> Parallel Seq Scan on p1_c1
680 -> Parallel Seq Scan on p1_c2
681 -> Parallel Seq Scan on p1_c3
682 -> Parallel Seq Scan on p1_c4
683 -> Parallel Seq Scan on p1_c1_c1
684 -> Parallel Seq Scan on p1_c1_c2
685 -> Parallel Seq Scan on p1_c3_c1
686 -> Parallel Seq Scan on p1_c3_c2
687 -> Parallel Seq Scan on p2
688 -> Parallel Seq Scan on p2_c1
689 -> Parallel Seq Scan on p2_c2
690 -> Parallel Seq Scan on p2_c3
691 -> Parallel Seq Scan on p2_c4
692 -> Parallel Seq Scan on p2_c1_c1
693 -> Parallel Seq Scan on p2_c1_c2
694 -> Parallel Seq Scan on p2_c3_c1
695 -> Parallel Seq Scan on p2_c3_c2
698 -- set hint does the same thing
699 /*+Set(max_parallel_workers_per_gather 1)*/
700 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
703 Set(max_parallel_workers_per_gather 1)
709 -------------------------------------------
713 -> Parallel Seq Scan on p1
714 -> Parallel Seq Scan on p1_c1
715 -> Parallel Seq Scan on p1_c2
716 -> Parallel Seq Scan on p1_c3
717 -> Parallel Seq Scan on p1_c4
718 -> Parallel Seq Scan on p1_c1_c1
719 -> Parallel Seq Scan on p1_c1_c2
720 -> Parallel Seq Scan on p1_c3_c1
721 -> Parallel Seq Scan on p1_c3_c2
722 -> Parallel Seq Scan on p2
723 -> Parallel Seq Scan on p2_c1
724 -> Parallel Seq Scan on p2_c2
725 -> Parallel Seq Scan on p2_c3
726 -> Parallel Seq Scan on p2_c4
727 -> Parallel Seq Scan on p2_c1_c1
728 -> Parallel Seq Scan on p2_c1_c2
729 -> Parallel Seq Scan on p2_c3_c1
730 -> Parallel Seq Scan on p2_c3_c2
733 -- applies largest number of workers on merged parallel paths
734 SET parallel_setup_cost to DEFAULT;
735 SET parallel_tuple_cost to DEFAULT;
736 SET min_parallel_table_scan_size to DEFAULT;
737 SET min_parallel_index_scan_size to DEFAULT;
738 SET max_parallel_workers_per_gather to 8;
739 /*+Parallel(p1 5 hard)Parallel(p2 6 hard) */
740 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
750 -------------------------------------------
754 -> Parallel Seq Scan on p1
755 -> Parallel Seq Scan on p1_c1
756 -> Parallel Seq Scan on p1_c2
757 -> Parallel Seq Scan on p1_c3
758 -> Parallel Seq Scan on p1_c4
759 -> Parallel Seq Scan on p1_c1_c1
760 -> Parallel Seq Scan on p1_c1_c2
761 -> Parallel Seq Scan on p1_c3_c1
762 -> Parallel Seq Scan on p1_c3_c2
763 -> Parallel Seq Scan on p2
764 -> Parallel Seq Scan on p2_c1
765 -> Parallel Seq Scan on p2_c2
766 -> Parallel Seq Scan on p2_c3
767 -> Parallel Seq Scan on p2_c4
768 -> Parallel Seq Scan on p2_c1_c1
769 -> Parallel Seq Scan on p2_c1_c2
770 -> Parallel Seq Scan on p2_c3_c1
771 -> Parallel Seq Scan on p2_c3_c2
774 -- num of workers of non-hinted relations should be default value
775 SET parallel_setup_cost to 0;
776 SET parallel_tuple_cost to 0;
777 SET min_parallel_table_scan_size to 0;
778 SET min_parallel_index_scan_size to 0;
779 SET max_parallel_workers_per_gather to 3;
780 SET enable_indexscan to false;
781 /*+Parallel(p1 8 hard) */
782 EXPLAIN (COSTS false) SELECT * FROM p1 join t1 on p1.id = t1.id;
791 -------------------------------------------------------
793 Hash Cond: (t1.id = p1.id)
796 -> Parallel Seq Scan on t1
801 -> Parallel Seq Scan on p1
802 -> Parallel Seq Scan on p1_c1
803 -> Parallel Seq Scan on p1_c2
804 -> Parallel Seq Scan on p1_c3
805 -> Parallel Seq Scan on p1_c4
806 -> Parallel Seq Scan on p1_c1_c1
807 -> Parallel Seq Scan on p1_c1_c2
808 -> Parallel Seq Scan on p1_c3_c1
809 -> Parallel Seq Scan on p1_c3_c2
813 SET enable_indexscan to DEFAULT;
814 SET parallel_setup_cost to 0;
815 SET parallel_tuple_cost to 0;
816 SET min_parallel_table_scan_size to 0;
817 SET min_parallel_index_scan_size to 0;
818 SET max_parallel_workers_per_gather to 5;
819 EXPLAIN (COSTS false) SELECT * FROM p1;
821 -------------------------------------------
825 -> Parallel Seq Scan on p1
826 -> Parallel Seq Scan on p1_c1
827 -> Parallel Seq Scan on p1_c2
828 -> Parallel Seq Scan on p1_c3
829 -> Parallel Seq Scan on p1_c4
830 -> Parallel Seq Scan on p1_c1_c1
831 -> Parallel Seq Scan on p1_c1_c2
832 -> Parallel Seq Scan on p1_c3_c1
833 -> Parallel Seq Scan on p1_c3_c2
836 /*+Parallel(p1 0 hard)*/
837 EXPLAIN (COSTS false) SELECT * FROM p1;
846 ----------------------------
853 -> Seq Scan on p1_c1_c1
854 -> Seq Scan on p1_c1_c2
855 -> Seq Scan on p1_c3_c1
856 -> Seq Scan on p1_c3_c2
860 /*+Parallel(p1 100x hard)Parallel(p1 -1000 hard)Parallel(p1 1000000 hard)
861 Parallel(p1 8 hoge)Parallel(p1)Parallel(p1 100 soft x)*/
862 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
863 INFO: pg_hint_plan: hint syntax error at or near "100x"
864 DETAIL: number of workers must be a number: Parallel
865 INFO: pg_hint_plan: hint syntax error at or near "-1000"
866 DETAIL: number of workers must be positive: Parallel
867 INFO: pg_hint_plan: hint syntax error at or near "1000000"
868 DETAIL: number of workers = 1000000 is larger than max_worker_processes(8): Parallel
869 INFO: pg_hint_plan: hint syntax error at or near "hoge"
870 DETAIL: enforcement must be soft or hard: Parallel
871 INFO: pg_hint_plan: hint syntax error at or near ")"
872 DETAIL: wrong number of arguments (1): Parallel
873 INFO: pg_hint_plan: hint syntax error at or near ")"
874 DETAIL: wrong number of arguments (4): Parallel
880 Parallel(p1 100x hard)
881 Parallel(p1 -1000 hard)
882 Parallel(p1 1000000 hard)
888 -------------------------------------------
892 -> Parallel Seq Scan on p1
893 -> Parallel Seq Scan on p1_c1
894 -> Parallel Seq Scan on p1_c2
895 -> Parallel Seq Scan on p1_c3
896 -> Parallel Seq Scan on p1_c4
897 -> Parallel Seq Scan on p1_c1_c1
898 -> Parallel Seq Scan on p1_c1_c2
899 -> Parallel Seq Scan on p1_c3_c1
900 -> Parallel Seq Scan on p1_c3_c2
901 -> Parallel Seq Scan on p2
902 -> Parallel Seq Scan on p2_c1
903 -> Parallel Seq Scan on p2_c2
904 -> Parallel Seq Scan on p2_c3
905 -> Parallel Seq Scan on p2_c4
906 -> Parallel Seq Scan on p2_c1_c1
907 -> Parallel Seq Scan on p2_c1_c2
908 -> Parallel Seq Scan on p2_c3_c1
909 -> Parallel Seq Scan on p2_c3_c2
912 -- Hints on unhintable relations are just ignored
913 /*+Parallel(p1 5 hard) Parallel(s1 3 hard) IndexScan(ft1) SeqScan(cte1)
914 TidScan(fs1) IndexScan(t) IndexScan(*VALUES*) */
915 EXPLAIN (COSTS false) SELECT id FROM p1_c1_c1 as s1 TABLESAMPLE SYSTEM(10)
919 (WITH cte1 AS (SELECT id FROM p1 WHERE id % 2 = 0) SELECT id FROM cte1)
921 SELECT userid FROM pg_stat_statements fs1
923 SELECT x FROM (VALUES (1), (2), (3)) t(x);
938 -----------------------------------------------------------------------------------------------
942 -> Sample Scan on p1_c1_c1 s1
943 Sampling: system ('10'::real)
944 -> Foreign Scan on ft1
945 Foreign File: /home/horiguti/work/pg_hint_plan/pg_hint_plan/data/data.csv
951 -> Parallel Seq Scan on p1
952 Filter: ((id % 2) = 0)
953 -> Parallel Seq Scan on p1_c1
954 Filter: ((id % 2) = 0)
955 -> Parallel Seq Scan on p1_c2
956 Filter: ((id % 2) = 0)
957 -> Parallel Seq Scan on p1_c3
958 Filter: ((id % 2) = 0)
959 -> Parallel Seq Scan on p1_c4
960 Filter: ((id % 2) = 0)
961 -> Parallel Seq Scan on p1_c1_c1
962 Filter: ((id % 2) = 0)
963 -> Parallel Seq Scan on p1_c1_c2
964 Filter: ((id % 2) = 0)
965 -> Parallel Seq Scan on p1_c3_c1
966 Filter: ((id % 2) = 0)
967 -> Parallel Seq Scan on p1_c3_c2
968 Filter: ((id % 2) = 0)
969 -> Function Scan on pg_stat_statements
970 -> Subquery Scan on "*SELECT* 5"
971 -> Values Scan on "*VALUES*"
974 ALTER SYSTEM SET session_preload_libraries TO DEFAULT;
975 SELECT pg_reload_conf();