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 hard)*/
336 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
345 -------------------------------------------------------
347 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
364 -> Parallel Seq Scan on p1
365 -> Parallel Seq Scan on p1_c1
366 -> Parallel Seq Scan on p1_c2
367 -> Parallel Seq Scan on p1_c3
368 -> Parallel Seq Scan on p1_c4
369 -> Parallel Seq Scan on p1_c1_c1
370 -> Parallel Seq Scan on p1_c1_c2
371 -> Parallel Seq Scan on p1_c3_c1
372 -> Parallel Seq Scan on p1_c3_c2
375 /*+Parallel(p2 8 hard) Parallel(p1 5 hard) */
376 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
386 -------------------------------------------------------
388 Hash Cond: (p2.id = p1.id)
392 -> Parallel Seq Scan on p2
393 -> Parallel Seq Scan on p2_c1
394 -> Parallel Seq Scan on p2_c2
395 -> Parallel Seq Scan on p2_c3
396 -> Parallel Seq Scan on p2_c4
397 -> Parallel Seq Scan on p2_c1_c1
398 -> Parallel Seq Scan on p2_c1_c2
399 -> Parallel Seq Scan on p2_c3_c1
400 -> Parallel Seq Scan on p2_c3_c2
405 -> Parallel Seq Scan on p1
406 -> Parallel Seq Scan on p1_c1
407 -> Parallel Seq Scan on p1_c2
408 -> Parallel Seq Scan on p1_c3
409 -> Parallel Seq Scan on p1_c4
410 -> Parallel Seq Scan on p1_c1_c1
411 -> Parallel Seq Scan on p1_c1_c2
412 -> Parallel Seq Scan on p1_c3_c1
413 -> Parallel Seq Scan on p1_c3_c2
416 -- Mixture with a scan hint
417 -- p1 can be parallel
418 /*+Parallel(p1 8 hard) IndexScan(p2) */
419 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
429 -------------------------------------------------------
431 Hash Cond: (p1.id = p2.id)
435 -> Parallel Seq Scan on p1
436 -> Parallel Seq Scan on p1_c1
437 -> Parallel Seq Scan on p1_c2
438 -> Parallel Seq Scan on p1_c3
439 -> Parallel Seq Scan on p1_c4
440 -> Parallel Seq Scan on p1_c1_c1
441 -> Parallel Seq Scan on p1_c1_c2
442 -> Parallel Seq Scan on p1_c3_c1
443 -> Parallel Seq Scan on p1_c3_c2
448 -> Parallel Seq Scan on p2
449 -> Parallel Seq Scan on p2_c1
450 -> Parallel Seq Scan on p2_c2
451 -> Parallel Seq Scan on p2_c3
452 -> Parallel Seq Scan on p2_c4
453 -> Parallel Seq Scan on p2_c1_c1
454 -> Parallel Seq Scan on p2_c1_c2
455 -> Parallel Seq Scan on p2_c3_c1
456 -> Parallel Seq Scan on p2_c3_c2
459 -- seqscan doesn't harm parallelism
460 /*+Parallel(p1 8 hard) SeqScan(p1) */
461 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
471 -------------------------------------------------------
473 Hash Cond: (p1.id = p2.id)
477 -> Parallel Seq Scan on p1
478 -> Parallel Seq Scan on p1_c1
479 -> Parallel Seq Scan on p1_c2
480 -> Parallel Seq Scan on p1_c3
481 -> Parallel Seq Scan on p1_c4
482 -> Parallel Seq Scan on p1_c1_c1
483 -> Parallel Seq Scan on p1_c1_c2
484 -> Parallel Seq Scan on p1_c3_c1
485 -> Parallel Seq Scan on p1_c3_c2
490 -> Parallel Seq Scan on p2
491 -> Parallel Seq Scan on p2_c1
492 -> Parallel Seq Scan on p2_c2
493 -> Parallel Seq Scan on p2_c3
494 -> Parallel Seq Scan on p2_c4
495 -> Parallel Seq Scan on p2_c1_c1
496 -> Parallel Seq Scan on p2_c1_c2
497 -> Parallel Seq Scan on p2_c3_c1
498 -> Parallel Seq Scan on p2_c3_c2
501 -- parallel overrides index scan
502 /*+Parallel(p1 8 hard) IndexScan(p1) */
503 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
513 -------------------------------------------------------
515 Hash Cond: (p1.id = p2.id)
519 -> Parallel Seq Scan on p1
520 -> Parallel Seq Scan on p1_c1
521 -> Parallel Seq Scan on p1_c2
522 -> Parallel Seq Scan on p1_c3
523 -> Parallel Seq Scan on p1_c4
524 -> Parallel Seq Scan on p1_c1_c1
525 -> Parallel Seq Scan on p1_c1_c2
526 -> Parallel Seq Scan on p1_c3_c1
527 -> Parallel Seq Scan on p1_c3_c2
532 -> Parallel Seq Scan on p2
533 -> Parallel Seq Scan on p2_c1
534 -> Parallel Seq Scan on p2_c2
535 -> Parallel Seq Scan on p2_c3
536 -> Parallel Seq Scan on p2_c4
537 -> Parallel Seq Scan on p2_c1_c1
538 -> Parallel Seq Scan on p2_c1_c2
539 -> Parallel Seq Scan on p2_c3_c1
540 -> Parallel Seq Scan on p2_c3_c2
543 /*+Parallel(p1 0 hard) IndexScan(p1) */
544 EXPLAIN (COSTS false) SELECT * FROM p1 join p2 on p1.id = p2.id;
554 --------------------------------------------------------
556 Hash Cond: (p1.id = p2.id)
558 -> Index Scan using p1_pkey on p1
559 -> Index Scan using p1_c1_pkey on p1_c1
560 -> Index Scan using p1_c2_pkey on p1_c2
561 -> Index Scan using p1_c3_pkey on p1_c3
562 -> Index Scan using p1_c4_pkey on p1_c4
563 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
564 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
565 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
566 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
574 -> Seq Scan on p2_c1_c1
575 -> Seq Scan on p2_c1_c2
576 -> Seq Scan on p2_c3_c1
577 -> Seq Scan on p2_c3_c2
581 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
583 ----------------------------
590 -> Seq Scan on p1_c1_c1
591 -> Seq Scan on p1_c1_c2
592 -> Seq Scan on p1_c3_c1
593 -> Seq Scan on p1_c3_c2
599 -> Seq Scan on p2_c1_c1
600 -> Seq Scan on p2_c1_c2
601 -> Seq Scan on p2_c3_c1
602 -> Seq Scan on p2_c3_c2
605 -- parallel hinting on any relation enables parallel
606 SET parallel_setup_cost to 0;
607 SET parallel_tuple_cost to 0;
608 SET min_parallel_relation_size to 0;
609 SET max_parallel_workers_per_gather to 0;
611 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
620 -------------------------------------------
624 -> Parallel Seq Scan on p1
625 -> Parallel Seq Scan on p1_c1
626 -> Parallel Seq Scan on p1_c2
627 -> Parallel Seq Scan on p1_c3
628 -> Parallel Seq Scan on p1_c4
629 -> Parallel Seq Scan on p1_c1_c1
630 -> Parallel Seq Scan on p1_c1_c2
631 -> Parallel Seq Scan on p1_c3_c1
632 -> Parallel Seq Scan on p1_c3_c2
633 -> Parallel Seq Scan on p2
634 -> Parallel Seq Scan on p2_c1
635 -> Parallel Seq Scan on p2_c2
636 -> Parallel Seq Scan on p2_c3
637 -> Parallel Seq Scan on p2_c4
638 -> Parallel Seq Scan on p2_c1_c1
639 -> Parallel Seq Scan on p2_c1_c2
640 -> Parallel Seq Scan on p2_c3_c1
641 -> Parallel Seq Scan on p2_c3_c2
644 -- set hint also does
645 /*+Set(max_parallel_workers_per_gather 1)*/
646 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
649 Set(max_parallel_workers_per_gather 1)
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 -- applies largest number of workers on merged parallel paths
680 SET parallel_setup_cost to DEFAULT;
681 SET parallel_tuple_cost to DEFAULT;
682 SET min_parallel_relation_size to DEFAULT;
683 SET max_parallel_workers_per_gather to 8;
684 /*+Parallel(p1 5 hard)Parallel(p2 6 hard) */
685 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
695 -------------------------------------------
699 -> Parallel Seq Scan on p1
700 -> Parallel Seq Scan on p1_c1
701 -> Parallel Seq Scan on p1_c2
702 -> Parallel Seq Scan on p1_c3
703 -> Parallel Seq Scan on p1_c4
704 -> Parallel Seq Scan on p1_c1_c1
705 -> Parallel Seq Scan on p1_c1_c2
706 -> Parallel Seq Scan on p1_c3_c1
707 -> Parallel Seq Scan on p1_c3_c2
708 -> Parallel Seq Scan on p2
709 -> Parallel Seq Scan on p2_c1
710 -> Parallel Seq Scan on p2_c2
711 -> Parallel Seq Scan on p2_c3
712 -> Parallel Seq Scan on p2_c4
713 -> Parallel Seq Scan on p2_c1_c1
714 -> Parallel Seq Scan on p2_c1_c2
715 -> Parallel Seq Scan on p2_c3_c1
716 -> Parallel Seq Scan on p2_c3_c2
719 -- num of workers of non-hinted relations should be default value
720 SET parallel_setup_cost to 0;
721 SET parallel_tuple_cost to 0;
722 SET min_parallel_relation_size to 0;
723 SET max_parallel_workers_per_gather to 3;
724 /*+Parallel(p1 8 hard) */
725 EXPLAIN (COSTS false) SELECT * FROM p1 join t1 on p1.id = t1.id;
734 -------------------------------------------------------
736 Hash Cond: (t1.id = p1.id)
739 -> Parallel Seq Scan on t1
744 -> Parallel Seq Scan on p1
745 -> Parallel Seq Scan on p1_c1
746 -> Parallel Seq Scan on p1_c2
747 -> Parallel Seq Scan on p1_c3
748 -> Parallel Seq Scan on p1_c4
749 -> Parallel Seq Scan on p1_c1_c1
750 -> Parallel Seq Scan on p1_c1_c2
751 -> Parallel Seq Scan on p1_c3_c1
752 -> Parallel Seq Scan on p1_c3_c2
756 SET parallel_setup_cost to 0;
757 SET parallel_tuple_cost to 0;
758 SET min_parallel_relation_size to 0;
759 SET max_parallel_workers_per_gather to 5;
760 EXPLAIN (COSTS false) SELECT * FROM p1;
762 -------------------------------------------
766 -> Parallel Seq Scan on p1
767 -> Parallel Seq Scan on p1_c1
768 -> Parallel Seq Scan on p1_c2
769 -> Parallel Seq Scan on p1_c3
770 -> Parallel Seq Scan on p1_c4
771 -> Parallel Seq Scan on p1_c1_c1
772 -> Parallel Seq Scan on p1_c1_c2
773 -> Parallel Seq Scan on p1_c3_c1
774 -> Parallel Seq Scan on p1_c3_c2
777 /*+Parallel(p1 0 hard)*/
778 EXPLAIN (COSTS false) SELECT * FROM p1;
787 ----------------------------
794 -> Seq Scan on p1_c1_c1
795 -> Seq Scan on p1_c1_c2
796 -> Seq Scan on p1_c3_c1
797 -> Seq Scan on p1_c3_c2
801 /*+Parallel(p1 100x hard)Parallel(p1 -1000 hard)Parallel(p1 1000000 hard)
802 Parallel(p1 8 hoge)Parallel(p1)Parallel(p1 100 soft x)*/
803 EXPLAIN (COSTS false) SELECT id FROM p1 UNION ALL SELECT id FROM p2;
804 INFO: pg_hint_plan: hint syntax error at or near "100x"
805 DETAIL: number of workers must be a number: Parallel
806 INFO: pg_hint_plan: hint syntax error at or near "-1000"
807 DETAIL: number of workers must be positive: Parallel
808 INFO: pg_hint_plan: hint syntax error at or near "1000000"
809 DETAIL: number of workers = 1000000 is larger than max_worker_processes(8): Parallel
810 INFO: pg_hint_plan: hint syntax error at or near "hoge"
811 DETAIL: enforcement must be soft or hard: Parallel
812 INFO: pg_hint_plan: hint syntax error at or near ")"
813 DETAIL: wrong number of arguments (1): Parallel
814 INFO: pg_hint_plan: hint syntax error at or near ")"
815 DETAIL: wrong number of arguments (4): Parallel
821 Parallel(p1 100x hard)
822 Parallel(p1 -1000 hard)
823 Parallel(p1 1000000 hard)
829 -------------------------------------------
833 -> Parallel Seq Scan on p1
834 -> Parallel Seq Scan on p1_c1
835 -> Parallel Seq Scan on p1_c2
836 -> Parallel Seq Scan on p1_c3
837 -> Parallel Seq Scan on p1_c4
838 -> Parallel Seq Scan on p1_c1_c1
839 -> Parallel Seq Scan on p1_c1_c2
840 -> Parallel Seq Scan on p1_c3_c1
841 -> Parallel Seq Scan on p1_c3_c2
842 -> Parallel Seq Scan on p2
843 -> Parallel Seq Scan on p2_c1
844 -> Parallel Seq Scan on p2_c2
845 -> Parallel Seq Scan on p2_c3
846 -> Parallel Seq Scan on p2_c4
847 -> Parallel Seq Scan on p2_c1_c1
848 -> Parallel Seq Scan on p2_c1_c2
849 -> Parallel Seq Scan on p2_c3_c1
850 -> Parallel Seq Scan on p2_c3_c2
853 ALTER SYSTEM SET session_preload_libraries TO DEFAULT;
854 SELECT pg_reload_conf();