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_relation_size to 0;
18 SET max_parallel_workers_per_gather to DEFAULT;
20 EXPLAIN (COSTS false) SELECT * FROM s1.t1;
29 -------------------------------
32 -> Parallel Seq Scan on t1
35 /*+Parallel(t1 8 soft)*/
36 EXPLAIN (COSTS false) SELECT * FROM s1.t1;
45 -------------------------------
48 -> Parallel Seq Scan on t1
51 /*+Parallel(t1 8 hard)*/
52 EXPLAIN (COSTS false) SELECT * FROM s1.t1;
61 -------------------------------
64 -> Parallel Seq Scan on t1
67 -- Queries on inheritance tables
68 SET parallel_setup_cost to 0;
69 SET parallel_tuple_cost to 0;
70 SET min_parallel_relation_size to 0;
72 EXPLAIN (COSTS false) SELECT * FROM p1;
81 -------------------------------------------
85 -> Parallel Seq Scan on p1
86 -> Parallel Seq Scan on p1_c1
87 -> Parallel Seq Scan on p1_c2
88 -> Parallel Seq Scan on p1_c3
89 -> Parallel Seq Scan on p1_c4
90 -> Parallel Seq Scan on p1_c1_c1
91 -> Parallel Seq Scan on p1_c1_c2
92 -> Parallel Seq Scan on p1_c3_c1
93 -> Parallel Seq Scan on p1_c3_c2
96 SET parallel_setup_cost to DEFAULT;
97 SET parallel_tuple_cost to DEFAULT;
98 SET min_parallel_relation_size to DEFAULT;
99 /*+Parallel(p1 8 hard)*/
100 EXPLAIN (COSTS false) SELECT * FROM p1;
109 -------------------------------------------
113 -> Parallel Seq Scan on p1
114 -> Parallel Seq Scan on p1_c1
115 -> Parallel Seq Scan on p1_c2
116 -> Parallel Seq Scan on p1_c3
117 -> Parallel Seq Scan on p1_c4
118 -> Parallel Seq Scan on p1_c1_c1
119 -> Parallel Seq Scan on p1_c1_c2
120 -> Parallel Seq Scan on p1_c3_c1
121 -> Parallel Seq Scan on p1_c3_c2
124 -- hinting on children makes the whole inheritance parallel
125 /*+Parallel(p1_c1 8 hard)*/
126 EXPLAIN (COSTS false) SELECT * FROM p1;
129 Parallel(p1_c1 8 hard)
135 -------------------------------------------
139 -> Parallel Seq Scan on p1
140 -> Parallel Seq Scan on p1_c1
141 -> Parallel Seq Scan on p1_c2
142 -> Parallel Seq Scan on p1_c3
143 -> Parallel Seq Scan on p1_c4
144 -> Parallel Seq Scan on p1_c1_c1
145 -> Parallel Seq Scan on p1_c1_c2
146 -> Parallel Seq Scan on p1_c3_c1
147 -> Parallel Seq Scan on p1_c3_c2
151 EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
153 ------------------------------------------
155 Hash Cond: (p1_c1_c1.id = p2_c1_c1.id)
156 -> Seq Scan on p1_c1_c1
158 -> Seq Scan on p2_c1_c1
161 /*+Parallel(p1_c1_c1 8 hard)*/
162 EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
165 Parallel(p1_c1_c1 8 hard)
171 -------------------------------------------------
173 Hash Cond: (p2_c1_c1.id = p1_c1_c1.id)
174 -> Seq Scan on p2_c1_c1
178 -> Parallel Seq Scan on p1_c1_c1
181 SET parallel_setup_cost to 0;
182 SET parallel_tuple_cost to 0;
183 SET min_parallel_relation_size to 0;
184 /*+Parallel(p1_c1_c1 8 soft) Parallel(p2_c1_c1 0)*/
185 EXPLAIN (COSTS false) SELECT * FROM p1_c1_c1 join p2_c1_c1 on p1_c1_c1.id = p2_c1_c1.id;
188 Parallel(p1_c1_c1 8 soft)
189 Parallel(p2_c1_c1 0 soft)
195 ------------------------------------------------
199 Hash Cond: (p1_c1_c1.id = p2_c1_c1.id)
200 -> Parallel Seq Scan on p1_c1_c1
202 -> Seq Scan on p2_c1_c1
205 /*+Parallel(p1_c1_c1 8 hard) 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 hard)
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 8 hard)*/
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 8 hard)
237 -------------------------------------------------
239 Hash Cond: (p1_c1_c1.id = p2_c1_c1.id)
242 -> Parallel Seq Scan on p1_c1_c1
246 -> Parallel Seq Scan on p2_c1_c1
249 -- Joins on inheritance tables
250 SET parallel_setup_cost to 0;
251 SET parallel_tuple_cost to 0;
252 SET min_parallel_relation_size to 0;
254 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
263 -------------------------------------------------------
265 Hash Cond: (p1.id = p2.id)
269 -> Parallel Seq Scan on p1
270 -> Parallel Seq Scan on p1_c1
271 -> Parallel Seq Scan on p1_c2
272 -> Parallel Seq Scan on p1_c3
273 -> Parallel Seq Scan on p1_c4
274 -> Parallel Seq Scan on p1_c1_c1
275 -> Parallel Seq Scan on p1_c1_c2
276 -> Parallel Seq Scan on p1_c3_c1
277 -> Parallel Seq Scan on p1_c3_c2
282 -> Parallel Seq Scan on p2
283 -> Parallel Seq Scan on p2_c1
284 -> Parallel Seq Scan on p2_c2
285 -> Parallel Seq Scan on p2_c3
286 -> Parallel Seq Scan on p2_c4
287 -> Parallel Seq Scan on p2_c1_c1
288 -> Parallel Seq Scan on p2_c1_c2
289 -> Parallel Seq Scan on p2_c3_c1
290 -> Parallel Seq Scan on p2_c3_c2
293 /*+Parallel(p1 8)Parallel(p2 0)*/
294 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
304 -------------------------------------------------
308 Hash Cond: (p1.id = p2.id)
310 -> Parallel Seq Scan on p1
311 -> Parallel Seq Scan on p1_c1
312 -> Parallel Seq Scan on p1_c2
313 -> Parallel Seq Scan on p1_c3
314 -> Parallel Seq Scan on p1_c4
315 -> Parallel Seq Scan on p1_c1_c1
316 -> Parallel Seq Scan on p1_c1_c2
317 -> Parallel Seq Scan on p1_c3_c1
318 -> Parallel Seq Scan on p1_c3_c2
326 -> Seq Scan on p2_c1_c1
327 -> Seq Scan on p2_c1_c2
328 -> Seq Scan on p2_c3_c1
329 -> Seq Scan on p2_c3_c2
332 SET parallel_setup_cost to DEFAULT;
333 SET parallel_tuple_cost to DEFAULT;
334 SET min_parallel_relation_size to DEFAULT;
335 /*+Parallel(p2 8 soft)*/
336 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
345 -------------------------------------------------
349 Hash Cond: (p2.id = p1.id)
351 -> Parallel Seq Scan on p2
352 -> Parallel Seq Scan on p2_c1
353 -> Parallel Seq Scan on p2_c2
354 -> Parallel Seq Scan on p2_c3
355 -> Parallel Seq Scan on p2_c4
356 -> Parallel Seq Scan on p2_c1_c1
357 -> Parallel Seq Scan on p2_c1_c2
358 -> Parallel Seq Scan on p2_c3_c1
359 -> Parallel Seq Scan on p2_c3_c2
367 -> Seq Scan on p1_c1_c1
368 -> Seq Scan on p1_c1_c2
369 -> Seq Scan on p1_c3_c1
370 -> Seq Scan on p1_c3_c2
373 /*+Parallel(p2 8 hard)*/
374 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
383 -------------------------------------------------
387 Hash Cond: (p2.id = p1.id)
389 -> Parallel Seq Scan on p2
390 -> Parallel Seq Scan on p2_c1
391 -> Parallel Seq Scan on p2_c2
392 -> Parallel Seq Scan on p2_c3
393 -> Parallel Seq Scan on p2_c4
394 -> Parallel Seq Scan on p2_c1_c1
395 -> Parallel Seq Scan on p2_c1_c2
396 -> Parallel Seq Scan on p2_c3_c1
397 -> Parallel Seq Scan on p2_c3_c2
405 -> Seq Scan on p1_c1_c1
406 -> Seq Scan on p1_c1_c2
407 -> Seq Scan on p1_c3_c1
408 -> Seq Scan on p1_c3_c2
411 /*+Parallel(p2 8 hard) Parallel(p1 5 hard) */
412 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
422 -------------------------------------------------------
424 Hash Cond: (p1.id = p2.id)
428 -> Parallel Seq Scan on p1
429 -> Parallel Seq Scan on p1_c1
430 -> Parallel Seq Scan on p1_c2
431 -> Parallel Seq Scan on p1_c3
432 -> Parallel Seq Scan on p1_c4
433 -> Parallel Seq Scan on p1_c1_c1
434 -> Parallel Seq Scan on p1_c1_c2
435 -> Parallel Seq Scan on p1_c3_c1
436 -> Parallel Seq Scan on p1_c3_c2
441 -> Parallel Seq Scan on p2
442 -> Parallel Seq Scan on p2_c1
443 -> Parallel Seq Scan on p2_c2
444 -> Parallel Seq Scan on p2_c3
445 -> Parallel Seq Scan on p2_c4
446 -> Parallel Seq Scan on p2_c1_c1
447 -> Parallel Seq Scan on p2_c1_c2
448 -> Parallel Seq Scan on p2_c3_c1
449 -> Parallel Seq Scan on p2_c3_c2
452 -- Mixture with a scan hint
453 -- p1 can be parallel
454 /*+Parallel(p1 8 hard) IndexScan(p2) */
455 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
465 --------------------------------------------------------------
467 Hash Cond: (p2.id = p1.id)
469 -> Index Scan using p2_id2_val on p2
470 -> Index Scan using p2_c1_id2_val on p2_c1
471 -> Index Scan using p2_c2_id2_val on p2_c2
472 -> Index Scan using p2_c3_id_val_idx on p2_c3
473 -> Index Scan using p2_c4_id_val_idx on p2_c4
474 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
475 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
476 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1
477 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2
482 -> Parallel Seq Scan on p1
483 -> Parallel Seq Scan on p1_c1
484 -> Parallel Seq Scan on p1_c2
485 -> Parallel Seq Scan on p1_c3
486 -> Parallel Seq Scan on p1_c4
487 -> Parallel Seq Scan on p1_c1_c1
488 -> Parallel Seq Scan on p1_c1_c2
489 -> Parallel Seq Scan on p1_c3_c1
490 -> Parallel Seq Scan on p1_c3_c2
493 -- seqscan doesn't harm parallelism
494 /*+Parallel(p1 8 hard) SeqScan(p1) */
495 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
505 -------------------------------------------------
509 Hash Cond: (p1.id = p2.id)
511 -> Parallel Seq Scan on p1
512 -> Parallel Seq Scan on p1_c1
513 -> Parallel Seq Scan on p1_c2
514 -> Parallel Seq Scan on p1_c3
515 -> Parallel Seq Scan on p1_c4
516 -> Parallel Seq Scan on p1_c1_c1
517 -> Parallel Seq Scan on p1_c1_c2
518 -> Parallel Seq Scan on p1_c3_c1
519 -> Parallel Seq Scan on p1_c3_c2
527 -> Seq Scan on p2_c1_c1
528 -> Seq Scan on p2_c1_c2
529 -> Seq Scan on p2_c3_c1
530 -> Seq Scan on p2_c3_c2
533 -- we don't have parallel over index scans so far
534 /*+Parallel(p1 8 hard) IndexScan(p1) */
535 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
545 --------------------------------------------------------
547 Hash Cond: (p1.id = p2.id)
549 -> Index Scan using p1_pkey on p1
550 -> Index Scan using p1_c1_pkey on p1_c1
551 -> Index Scan using p1_c2_pkey on p1_c2
552 -> Index Scan using p1_c3_pkey on p1_c3
553 -> Index Scan using p1_c4_pkey on p1_c4
554 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
555 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
556 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
557 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
565 -> Seq Scan on p2_c1_c1
566 -> Seq Scan on p2_c1_c2
567 -> Seq Scan on p2_c3_c1
568 -> Seq Scan on p2_c3_c2
571 -- This hint doesn't turn on parallel, so the Parallel hint is ignored
572 show max_parallel_workers_per_gather;
573 max_parallel_workers_per_gather
574 ---------------------------------
578 /*+Parallel(p1 0 hard) IndexScan(p1) */
579 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
589 --------------------------------------------------------
591 Hash Cond: (p1.id = p2.id)
593 -> Index Scan using p1_pkey on p1
594 -> Index Scan using p1_c1_pkey on p1_c1
595 -> Index Scan using p1_c2_pkey on p1_c2
596 -> Index Scan using p1_c3_pkey on p1_c3
597 -> Index Scan using p1_c4_pkey on p1_c4
598 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
599 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
600 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
601 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
609 -> Seq Scan on p2_c1_c1
610 -> Seq Scan on p2_c1_c2
611 -> Seq Scan on p2_c3_c1
612 -> Seq Scan on p2_c3_c2
616 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
618 ----------------------------
625 -> Seq Scan on p1_c1_c1
626 -> Seq Scan on p1_c1_c2
627 -> Seq Scan on p1_c3_c1
628 -> Seq Scan on p1_c3_c2
634 -> Seq Scan on p2_c1_c1
635 -> Seq Scan on p2_c1_c2
636 -> Seq Scan on p2_c3_c1
637 -> Seq Scan on p2_c3_c2
640 -- parallel hinting on any relation enables parallel
641 SET parallel_setup_cost to 0;
642 SET parallel_tuple_cost to 0;
643 SET min_parallel_relation_size to 0;
644 SET max_parallel_workers_per_gather to 0;
646 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
655 -------------------------------------------
659 -> Parallel Seq Scan on p1
660 -> Parallel Seq Scan on p1_c1
661 -> Parallel Seq Scan on p1_c2
662 -> Parallel Seq Scan on p1_c3
663 -> Parallel Seq Scan on p1_c4
664 -> Parallel Seq Scan on p1_c1_c1
665 -> Parallel Seq Scan on p1_c1_c2
666 -> Parallel Seq Scan on p1_c3_c1
667 -> Parallel Seq Scan on p1_c3_c2
668 -> Parallel Seq Scan on p2
669 -> Parallel Seq Scan on p2_c1
670 -> Parallel Seq Scan on p2_c2
671 -> Parallel Seq Scan on p2_c3
672 -> Parallel Seq Scan on p2_c4
673 -> Parallel Seq Scan on p2_c1_c1
674 -> Parallel Seq Scan on p2_c1_c2
675 -> Parallel Seq Scan on p2_c3_c1
676 -> Parallel Seq Scan on p2_c3_c2
679 -- set hint does the same thing
680 /*+Set(max_parallel_workers_per_gather 1)*/
681 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
684 Set(max_parallel_workers_per_gather 1)
690 -------------------------------------------
694 -> Parallel Seq Scan on p1
695 -> Parallel Seq Scan on p1_c1
696 -> Parallel Seq Scan on p1_c2
697 -> Parallel Seq Scan on p1_c3
698 -> Parallel Seq Scan on p1_c4
699 -> Parallel Seq Scan on p1_c1_c1
700 -> Parallel Seq Scan on p1_c1_c2
701 -> Parallel Seq Scan on p1_c3_c1
702 -> Parallel Seq Scan on p1_c3_c2
703 -> Parallel Seq Scan on p2
704 -> Parallel Seq Scan on p2_c1
705 -> Parallel Seq Scan on p2_c2
706 -> Parallel Seq Scan on p2_c3
707 -> Parallel Seq Scan on p2_c4
708 -> Parallel Seq Scan on p2_c1_c1
709 -> Parallel Seq Scan on p2_c1_c2
710 -> Parallel Seq Scan on p2_c3_c1
711 -> Parallel Seq Scan on p2_c3_c2
714 -- applies largest number of workers on merged parallel paths
715 SET parallel_setup_cost to DEFAULT;
716 SET parallel_tuple_cost to DEFAULT;
717 SET min_parallel_relation_size to DEFAULT;
718 SET max_parallel_workers_per_gather to 8;
719 /*+Parallel(p1 5 hard)Parallel(p2 6 hard) */
720 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
730 -------------------------------------------
734 -> Parallel Seq Scan on p1
735 -> Parallel Seq Scan on p1_c1
736 -> Parallel Seq Scan on p1_c2
737 -> Parallel Seq Scan on p1_c3
738 -> Parallel Seq Scan on p1_c4
739 -> Parallel Seq Scan on p1_c1_c1
740 -> Parallel Seq Scan on p1_c1_c2
741 -> Parallel Seq Scan on p1_c3_c1
742 -> Parallel Seq Scan on p1_c3_c2
743 -> Parallel Seq Scan on p2
744 -> Parallel Seq Scan on p2_c1
745 -> Parallel Seq Scan on p2_c2
746 -> Parallel Seq Scan on p2_c3
747 -> Parallel Seq Scan on p2_c4
748 -> Parallel Seq Scan on p2_c1_c1
749 -> Parallel Seq Scan on p2_c1_c2
750 -> Parallel Seq Scan on p2_c3_c1
751 -> Parallel Seq Scan on p2_c3_c2
754 -- num of workers of non-hinted relations should be default value
755 SET parallel_setup_cost to 0;
756 SET parallel_tuple_cost to 0;
757 SET min_parallel_relation_size to 0;
758 SET max_parallel_workers_per_gather to 3;
759 SET enable_indexscan to false;
760 /*+Parallel(p1 8 hard) */
761 EXPLAIN (COSTS false) SELECT * FROM p1 join t1 on p1.id = t1.id;
770 -------------------------------------------------------
772 Hash Cond: (t1.id = p1.id)
775 -> Parallel Seq Scan on t1
780 -> Parallel Seq Scan on p1
781 -> Parallel Seq Scan on p1_c1
782 -> Parallel Seq Scan on p1_c2
783 -> Parallel Seq Scan on p1_c3
784 -> Parallel Seq Scan on p1_c4
785 -> Parallel Seq Scan on p1_c1_c1
786 -> Parallel Seq Scan on p1_c1_c2
787 -> Parallel Seq Scan on p1_c3_c1
788 -> Parallel Seq Scan on p1_c3_c2
792 SET enable_indexscan to DEFAULT;
793 SET parallel_setup_cost to 0;
794 SET parallel_tuple_cost to 0;
795 SET min_parallel_relation_size to 0;
796 SET max_parallel_workers_per_gather to 5;
797 EXPLAIN (COSTS false) SELECT * FROM p1;
799 -------------------------------------------
803 -> Parallel Seq Scan on p1
804 -> Parallel Seq Scan on p1_c1
805 -> Parallel Seq Scan on p1_c2
806 -> Parallel Seq Scan on p1_c3
807 -> Parallel Seq Scan on p1_c4
808 -> Parallel Seq Scan on p1_c1_c1
809 -> Parallel Seq Scan on p1_c1_c2
810 -> Parallel Seq Scan on p1_c3_c1
811 -> Parallel Seq Scan on p1_c3_c2
814 /*+Parallel(p1 0 hard)*/
815 EXPLAIN (COSTS false) SELECT * FROM p1;
824 ----------------------------
831 -> Seq Scan on p1_c1_c1
832 -> Seq Scan on p1_c1_c2
833 -> Seq Scan on p1_c3_c1
834 -> Seq Scan on p1_c3_c2
838 /*+Parallel(p1 100x hard)Parallel(p1 -1000 hard)Parallel(p1 1000000 hard)
839 Parallel(p1 8 hoge)Parallel(p1)Parallel(p1 100 soft x)*/
840 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
841 INFO: pg_hint_plan: hint syntax error at or near "100x"
842 DETAIL: number of workers must be a number: Parallel
843 INFO: pg_hint_plan: hint syntax error at or near "-1000"
844 DETAIL: number of workers must be positive: Parallel
845 INFO: pg_hint_plan: hint syntax error at or near "1000000"
846 DETAIL: number of workers = 1000000 is larger than max_worker_processes(8): Parallel
847 INFO: pg_hint_plan: hint syntax error at or near "hoge"
848 DETAIL: enforcement must be soft or hard: Parallel
849 INFO: pg_hint_plan: hint syntax error at or near ")"
850 DETAIL: wrong number of arguments (1): Parallel
851 INFO: pg_hint_plan: hint syntax error at or near ")"
852 DETAIL: wrong number of arguments (4): Parallel
858 Parallel(p1 100x hard)
859 Parallel(p1 -1000 hard)
860 Parallel(p1 1000000 hard)
866 -------------------------------------------
870 -> Parallel Seq Scan on p1
871 -> Parallel Seq Scan on p1_c1
872 -> Parallel Seq Scan on p1_c2
873 -> Parallel Seq Scan on p1_c3
874 -> Parallel Seq Scan on p1_c4
875 -> Parallel Seq Scan on p1_c1_c1
876 -> Parallel Seq Scan on p1_c1_c2
877 -> Parallel Seq Scan on p1_c3_c1
878 -> Parallel Seq Scan on p1_c3_c2
879 -> Parallel Seq Scan on p2
880 -> Parallel Seq Scan on p2_c1
881 -> Parallel Seq Scan on p2_c2
882 -> Parallel Seq Scan on p2_c3
883 -> Parallel Seq Scan on p2_c4
884 -> Parallel Seq Scan on p2_c1_c1
885 -> Parallel Seq Scan on p2_c1_c2
886 -> Parallel Seq Scan on p2_c3_c1
887 -> Parallel Seq Scan on p2_c3_c2
890 -- Hints on unhintable relations are just ignored
891 /*+Parallel(p1 5 hard) Parallel(s1 3 hard) IndexScan(ft1) SeqScan(cte1)
892 TidScan(fs1) IndexScan(t) IndexScan(*VALUES*) */
893 EXPLAIN (COSTS false) SELECT id FROM p1_c1_c1 as s1 TABLESAMPLE SYSTEM(10)
897 (WITH cte1 AS (SELECT id FROM p1 WHERE id % 2 = 0) SELECT id FROM cte1)
899 SELECT userid FROM pg_stat_statements fs1
901 SELECT x FROM (VALUES (1), (2), (3)) t(x);
916 -----------------------------------------------------------------------------------------------
920 -> Sample Scan on p1_c1_c1 s1
921 Sampling: system ('10'::real)
922 -> Foreign Scan on ft1
923 Foreign File: /home/horiguti/work/pg_hint_plan/pg_hint_plan/data/data.csv
929 -> Parallel Seq Scan on p1
930 Filter: ((id % 2) = 0)
931 -> Parallel Seq Scan on p1_c1
932 Filter: ((id % 2) = 0)
933 -> Parallel Seq Scan on p1_c2
934 Filter: ((id % 2) = 0)
935 -> Parallel Seq Scan on p1_c3
936 Filter: ((id % 2) = 0)
937 -> Parallel Seq Scan on p1_c4
938 Filter: ((id % 2) = 0)
939 -> Parallel Seq Scan on p1_c1_c1
940 Filter: ((id % 2) = 0)
941 -> Parallel Seq Scan on p1_c1_c2
942 Filter: ((id % 2) = 0)
943 -> Parallel Seq Scan on p1_c3_c1
944 Filter: ((id % 2) = 0)
945 -> Parallel Seq Scan on p1_c3_c2
946 Filter: ((id % 2) = 0)
947 -> Function Scan on pg_stat_statements
948 -> Subquery Scan on "*SELECT* 5"
949 -> Values Scan on "*VALUES*"
952 ALTER SYSTEM SET session_preload_libraries TO DEFAULT;
953 SELECT pg_reload_conf();