1 SET search_path TO public;
2 SET client_min_messages TO log;
3 \set SHOW_CONTEXT always
4 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
6 --------------------------------------
8 Merge Cond: (t1.id = t2.id)
9 -> Index Scan using t1_pkey on t1
10 -> Index Scan using t2_pkey on t2
13 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.val = t2.val;
15 -------------------------------------------
17 Merge Cond: (t2.val = t1.val)
18 -> Index Scan using t2_val on t2
20 -> Index Scan using t1_val on t1
24 SET pg_hint_plan.debug_print TO on;
25 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
27 --------------------------------------
29 Merge Cond: (t1.id = t2.id)
30 -> Index Scan using t1_pkey on t1
31 -> Index Scan using t2_pkey on t2
34 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.val = t2.val;
36 -------------------------------------------
38 Merge Cond: (t2.val = t1.val)
39 -> Index Scan using t2_val on t2
41 -> Index Scan using t1_val on t1
45 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
46 INFO: pg_hint_plan: hint syntax error at or near "Test (t1 t2) "
47 DETAIL: Unrecognized hint keyword "Test".
49 --------------------------------------
51 Merge Cond: (t1.id = t2.id)
52 -> Index Scan using t1_pkey on t1
53 -> Index Scan using t2_pkey on t2
56 SET pg_hint_plan.enable_hint TO off;
58 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
60 --------------------------------------
62 Merge Cond: (t1.id = t2.id)
63 -> Index Scan using t1_pkey on t1
64 -> Index Scan using t2_pkey on t2
67 SET pg_hint_plan.enable_hint TO on;
68 /*Set(enable_indexscan off)*/
69 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
71 --------------------------------------
73 Merge Cond: (t1.id = t2.id)
74 -> Index Scan using t1_pkey on t1
75 -> Index Scan using t2_pkey on t2
78 --+Set(enable_indexscan off)
79 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
81 --------------------------------------
83 Merge Cond: (t1.id = t2.id)
84 -> Index Scan using t1_pkey on t1
85 -> Index Scan using t2_pkey on t2
88 /*+Set(enable_indexscan off) /* nest comment */ */
89 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
90 INFO: pg_hint_plan: hint syntax error at or near "/* nest comment */ */
91 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;"
92 DETAIL: Nested block comments are not supported.
94 --------------------------------------
96 Merge Cond: (t1.id = t2.id)
97 -> Index Scan using t1_pkey on t1
98 -> Index Scan using t2_pkey on t2
101 /*+Set(enable_indexscan off)*/
102 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
105 Set(enable_indexscan off)
111 ------------------------------
113 Hash Cond: (t1.id = t2.id)
119 EXPLAIN (COSTS false) /*+Set(enable_indexscan off)*/
120 SELECT * FROM t1, t2 WHERE t1.id = t2.id;
123 Set(enable_indexscan off)
129 ------------------------------
131 Hash Cond: (t1.id = t2.id)
137 /*+ Set(enable_indexscan off) Set(enable_hashjoin off) */
138 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
141 Set(enable_hashjoin off)
142 Set(enable_indexscan off)
148 -------------------------------
150 Merge Cond: (t1.id = t2.id)
159 /*+ Set ( enable_indexscan off ) */
160 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
163 Set(enable_indexscan off)
169 ------------------------------
171 Hash Cond: (t1.id = t2.id)
184 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
187 Set(enable_indexscan off)
193 ------------------------------
195 Hash Cond: (t1.id = t2.id)
201 /*+ Set(enable_indexscan off)Set(enable_nestloop off)Set(enable_mergejoin off)
202 Set(enable_seqscan off)
204 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
207 Set(enable_indexscan off)
208 Set(enable_mergejoin off)
209 Set(enable_nestloop off)
210 Set(enable_seqscan off)
216 --------------------------------------------
218 Hash Cond: (t1.id = t2.id)
219 -> Index Scan using t1_pkey on t1
221 -> Index Scan using t2_pkey on t2
224 /*+Set(work_mem "1M")*/
225 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
226 INFO: invalid value for parameter "work_mem": "1M"
227 HINT: Valid units for this parameter are "kB", "MB", "GB", and "TB".
236 --------------------------------------
238 Merge Cond: (t1.id = t2.id)
239 -> Index Scan using t1_pkey on t1
240 -> Index Scan using t2_pkey on t2
243 /*+Set(work_mem "1MB")*/
244 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
253 --------------------------------------
255 Merge Cond: (t1.id = t2.id)
256 -> Index Scan using t1_pkey on t1
257 -> Index Scan using t2_pkey on t2
260 /*+Set(work_mem TO "1MB")*/
261 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
262 INFO: pg_hint_plan: hint syntax error at or near "Set(work_mem TO "1MB")"
263 DETAIL: Set hint requires name and value of GUC parameter.
272 --------------------------------------
274 Merge Cond: (t1.id = t2.id)
275 -> Index Scan using t1_pkey on t1
276 -> Index Scan using t2_pkey on t2
280 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
281 INFO: pg_hint_plan: hint syntax error at or near ""
282 DETAIL: SeqScan hint accepts only one relation.
291 --------------------------------------
293 Merge Cond: (t1.id = t2.id)
294 -> Index Scan using t1_pkey on t1
295 -> Index Scan using t2_pkey on t2
299 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
308 ------------------------------
310 Hash Cond: (t1.id = t2.id)
316 /*+SeqScan(t1)IndexScan(t2)*/
317 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
327 --------------------------------------------
329 Hash Cond: (t1.id = t2.id)
332 -> Index Scan using t2_pkey on t2
336 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
345 ------------------------------------------
348 -> Bitmap Heap Scan on t2
349 Recheck Cond: (id = t1.id)
350 -> Bitmap Index Scan on t2_pkey
351 Index Cond: (id = t1.id)
354 /*+BitmapScan(t2)NoSeqScan(t1)*/
355 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
365 ------------------------------------------
367 -> Index Scan using t1_pkey on t1
368 -> Bitmap Heap Scan on t2
369 Recheck Cond: (id = t1.id)
370 -> Bitmap Index Scan on t2_pkey
371 Index Cond: (id = t1.id)
375 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
384 ------------------------------
386 Hash Cond: (t1.id = t2.id)
392 /*+NoBitmapScan(t1)*/
393 EXPLAIN (COSTS false) SELECT * FROM t1, t4 WHERE t1.val < 10;
402 ----------------------------
411 EXPLAIN (COSTS false) SELECT * FROM t3, t4 WHERE t3.id = t4.id AND t4.ctid = '(1,1)';
420 -----------------------------------------------
422 Merge Cond: (t3.id = t4.id)
423 -> Index Scan using t3_pkey on t3
427 TID Cond: (ctid = '(1,1)'::tid)
431 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)';
440 ---------------------------------------
443 Filter: (ctid = '(1,1)'::tid)
444 -> Index Scan using t2_pkey on t2
445 Index Cond: (id = t1.id)
449 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
458 ------------------------------
460 Hash Cond: (t1.id = t2.id)
467 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
476 --------------------------------------
479 -> Index Scan using t1_pkey on t1
480 Index Cond: (id = t2.id)
483 /*+NoMergeJoin(t1 t2)*/
484 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
493 ------------------------------
495 Hash Cond: (t1.id = t2.id)
501 /*+MergeJoin(t1 t3)*/
502 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
511 -------------------------------------
513 Merge Cond: (t1.val = t3.val)
514 -> Index Scan using t1_val on t1
521 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
530 -------------------------------------
533 -> Index Scan using t1_val on t1
534 Index Cond: (val = t3.val)
537 /*+NoHashJoin(t1 t3)*/
538 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
547 -------------------------------------
550 -> Index Scan using t1_val on t1
551 Index Cond: (val = t3.val)
554 /*+MergeJoin(t4 t1 t2 t3)*/
555 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
558 MergeJoin(t1 t2 t3 t4)
564 --------------------------------------------------
566 Merge Cond: (t1.id = t3.id)
568 Merge Cond: (t1.id = t2.id)
569 -> Index Scan using t1_pkey on t1
570 -> Index Scan using t2_pkey on t2
573 Merge Cond: (t3.id = t4.id)
574 -> Index Scan using t3_pkey on t3
580 /*+HashJoin(t3 t4 t1 t2)*/
581 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
584 HashJoin(t1 t2 t3 t4)
590 --------------------------------------------------------
592 Hash Cond: (t3.id = t1.id)
596 Merge Cond: (t1.id = t4.id)
598 Merge Cond: (t1.id = t2.id)
599 -> Index Scan using t1_pkey on t1
600 -> Index Scan using t2_pkey on t2
606 /*+NestLoop(t2 t3 t4 t1) IndexScan(t3)*/
607 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
611 NestLoop(t1 t2 t3 t4)
617 --------------------------------------------------
620 Merge Cond: (t1.id = t4.id)
622 Merge Cond: (t1.id = t2.id)
623 -> Index Scan using t1_pkey on t1
624 -> Index Scan using t2_pkey on t2
628 -> Index Scan using t3_pkey on t3
629 Index Cond: (id = t1.id)
632 /*+NoNestLoop(t4 t1 t3 t2)*/
633 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
636 NoNestLoop(t1 t2 t3 t4)
642 --------------------------------------------------
644 Merge Cond: (t1.id = t3.id)
646 Merge Cond: (t1.id = t2.id)
647 -> Index Scan using t1_pkey on t1
648 -> Index Scan using t2_pkey on t2
651 Merge Cond: (t3.id = t4.id)
652 -> Index Scan using t3_pkey on t3
659 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
660 INFO: pg_hint_plan: hint syntax error at or near ""
661 DETAIL: Closing parenthesis is necessary.
663 --------------------------------------------------
666 Merge Cond: (t1.id = t4.id)
668 Merge Cond: (t1.id = t2.id)
669 -> Index Scan using t1_pkey on t1
670 -> Index Scan using t2_pkey on t2
674 -> Index Scan using t3_pkey on t3
675 Index Cond: (id = t1.id)
679 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
680 INFO: pg_hint_plan: hint syntax error at or near "Leading( )"
681 DETAIL: Leading hint requires at least two relations.
690 --------------------------------------------------
693 Merge Cond: (t1.id = t4.id)
695 Merge Cond: (t1.id = t2.id)
696 -> Index Scan using t1_pkey on t1
697 -> Index Scan using t2_pkey on t2
701 -> Index Scan using t3_pkey on t3
702 Index Cond: (id = t1.id)
706 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
707 INFO: pg_hint_plan: hint syntax error at or near "Leading( t3 )"
708 DETAIL: Leading hint requires at least two relations.
717 --------------------------------------------------
720 Merge Cond: (t1.id = t4.id)
722 Merge Cond: (t1.id = t2.id)
723 -> Index Scan using t1_pkey on t1
724 -> Index Scan using t2_pkey on t2
728 -> Index Scan using t3_pkey on t3
729 Index Cond: (id = t1.id)
732 /*+Leading( t3 t4 )*/
733 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
742 --------------------------------------------------
746 Merge Cond: (t3.id = t4.id)
747 -> Index Scan using t3_pkey on t3
751 -> Index Scan using t2_pkey on t2
752 Index Cond: (id = t3.id)
753 -> Index Scan using t1_pkey on t1
754 Index Cond: (id = t2.id)
757 /*+Leading(t3 t4 t1)*/
758 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
767 --------------------------------------------------
770 Merge Cond: (t3.id = t1.id)
772 Merge Cond: (t3.id = t4.id)
773 -> Index Scan using t3_pkey on t3
777 -> Index Scan using t1_pkey on t1
778 -> Index Scan using t2_pkey on t2
779 Index Cond: (id = t1.id)
782 /*+Leading(t3 t4 t1 t2)*/
783 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
792 --------------------------------------------------
795 Merge Cond: (t3.id = t1.id)
797 Merge Cond: (t3.id = t4.id)
798 -> Index Scan using t3_pkey on t3
802 -> Index Scan using t1_pkey on t1
803 -> Index Scan using t2_pkey on t2
804 Index Cond: (id = t1.id)
807 /*+Leading(t3 t4 t1 t2 t1)*/
808 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
809 INFO: pg_hint_plan: hint syntax error at or near "Leading(t3 t4 t1 t2 t1)"
810 DETAIL: Relation name "t1" is duplicated.
816 Leading(t3 t4 t1 t2 t1)
819 --------------------------------------------------
822 Merge Cond: (t1.id = t4.id)
824 Merge Cond: (t1.id = t2.id)
825 -> Index Scan using t1_pkey on t1
826 -> Index Scan using t2_pkey on t2
830 -> Index Scan using t3_pkey on t3
831 Index Cond: (id = t1.id)
834 /*+Leading(t3 t4 t4)*/
835 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
836 INFO: pg_hint_plan: hint syntax error at or near "Leading(t3 t4 t4)"
837 DETAIL: Relation name "t4" is duplicated.
846 --------------------------------------------------
849 Merge Cond: (t1.id = t4.id)
851 Merge Cond: (t1.id = t2.id)
852 -> Index Scan using t1_pkey on t1
853 -> Index Scan using t2_pkey on t2
857 -> Index Scan using t3_pkey on t3
858 Index Cond: (id = t1.id)
861 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
863 -----------------------------------------------
865 -> Values Scan on "*VALUES*"
866 -> Index Scan using t1_pkey on t1
867 Index Cond: (id = "*VALUES*".column1)
871 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
880 -----------------------------------------------
882 -> Values Scan on "*VALUES*"
883 -> Index Scan using t1_pkey on t1
884 Index Cond: (id = "*VALUES*".column1)
887 /*+HashJoin(t1 *VALUES*)*/
888 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
891 HashJoin(*VALUES* t1)
897 -------------------------------------------
899 Hash Cond: (t1.id = "*VALUES*".column1)
902 -> Values Scan on "*VALUES*"
905 /*+HashJoin(t1 *VALUES*) IndexScan(t1) IndexScan(*VALUES*)*/
906 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
910 HashJoin(*VALUES* t1)
917 -------------------------------------------
919 Hash Cond: (t1.id = "*VALUES*".column1)
920 -> Index Scan using t1_pkey on t1
922 -> Values Scan on "*VALUES*"
925 -- single table scan hint test
926 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
928 ------------------------------------------------------------------------
929 Index Only Scan using t1_pkey on t1
930 Index Cond: (id = $3)
931 InitPlan 2 (returns $1)
933 InitPlan 1 (returns $0)
935 -> Index Only Scan Backward using t1_pkey on t1 v_1
936 Index Cond: ((id IS NOT NULL) AND (id < 10))
937 InitPlan 4 (returns $3)
939 InitPlan 3 (returns $2)
941 -> Index Only Scan Backward using t1_pkey on t1 v_2
942 Index Cond: ((id IS NOT NULL) AND (id < 10))
946 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
955 ------------------------------------------------------------------------
956 Index Only Scan using t1_pkey on t1
957 Index Cond: (id = $3)
958 InitPlan 1 (returns $1)
960 -> Bitmap Heap Scan on t1 v_1
961 Recheck Cond: (id < 10)
962 -> Bitmap Index Scan on t1_pkey
963 Index Cond: (id < 10)
964 InitPlan 3 (returns $3)
966 InitPlan 2 (returns $2)
968 -> Index Only Scan Backward using t1_pkey on t1 v_2
969 Index Cond: ((id IS NOT NULL) AND (id < 10))
973 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
982 ------------------------------------------------------------------------
983 Index Only Scan using t1_pkey on t1
984 Index Cond: (id = $3)
985 InitPlan 2 (returns $1)
987 InitPlan 1 (returns $0)
989 -> Index Only Scan Backward using t1_pkey on t1 v_1
990 Index Cond: ((id IS NOT NULL) AND (id < 10))
991 InitPlan 3 (returns $3)
993 -> Bitmap Heap Scan on t1 v_2
994 Recheck Cond: (id < 10)
995 -> Bitmap Index Scan on t1_pkey
996 Index Cond: (id < 10)
1000 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
1009 ------------------------------------------------------------------------
1010 Bitmap Heap Scan on t1
1011 Recheck Cond: (id = $3)
1012 InitPlan 2 (returns $1)
1014 InitPlan 1 (returns $0)
1016 -> Index Only Scan Backward using t1_pkey on t1 v_1
1017 Index Cond: ((id IS NOT NULL) AND (id < 10))
1018 InitPlan 4 (returns $3)
1020 InitPlan 3 (returns $2)
1022 -> Index Only Scan Backward using t1_pkey on t1 v_2
1023 Index Cond: ((id IS NOT NULL) AND (id < 10))
1024 -> Bitmap Index Scan on t1_pkey
1025 Index Cond: (id = $3)
1028 /*+BitmapScan(v_1)BitmapScan(v_2)*/
1029 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
1039 --------------------------------------------------
1040 Index Only Scan using t1_pkey on t1
1041 Index Cond: (id = $3)
1042 InitPlan 1 (returns $1)
1044 -> Bitmap Heap Scan on t1 v_1
1045 Recheck Cond: (id < 10)
1046 -> Bitmap Index Scan on t1_pkey
1047 Index Cond: (id < 10)
1048 InitPlan 2 (returns $3)
1050 -> Bitmap Heap Scan on t1 v_2
1051 Recheck Cond: (id < 10)
1052 -> Bitmap Index Scan on t1_pkey
1053 Index Cond: (id < 10)
1056 /*+BitmapScan(v_1)BitmapScan(t1)*/
1057 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
1067 ------------------------------------------------------------------------
1068 Bitmap Heap Scan on t1
1069 Recheck Cond: (id = $3)
1070 InitPlan 1 (returns $1)
1072 -> Bitmap Heap Scan on t1 v_1
1073 Recheck Cond: (id < 10)
1074 -> Bitmap Index Scan on t1_pkey
1075 Index Cond: (id < 10)
1076 InitPlan 3 (returns $3)
1078 InitPlan 2 (returns $2)
1080 -> Index Only Scan Backward using t1_pkey on t1 v_2
1081 Index Cond: ((id IS NOT NULL) AND (id < 10))
1082 -> Bitmap Index Scan on t1_pkey
1083 Index Cond: (id = $3)
1086 /*+BitmapScan(v_2)BitmapScan(t1)*/
1087 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
1097 ------------------------------------------------------------------------
1098 Bitmap Heap Scan on t1
1099 Recheck Cond: (id = $3)
1100 InitPlan 2 (returns $1)
1102 InitPlan 1 (returns $0)
1104 -> Index Only Scan Backward using t1_pkey on t1 v_1
1105 Index Cond: ((id IS NOT NULL) AND (id < 10))
1106 InitPlan 3 (returns $3)
1108 -> Bitmap Heap Scan on t1 v_2
1109 Recheck Cond: (id < 10)
1110 -> Bitmap Index Scan on t1_pkey
1111 Index Cond: (id < 10)
1112 -> Bitmap Index Scan on t1_pkey
1113 Index Cond: (id = $3)
1116 /*+BitmapScan(v_1)BitmapScan(v_2)BitmapScan(t1)*/
1117 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
1128 --------------------------------------------------
1129 Bitmap Heap Scan on t1
1130 Recheck Cond: (id = $3)
1131 InitPlan 1 (returns $1)
1133 -> Bitmap Heap Scan on t1 v_1
1134 Recheck Cond: (id < 10)
1135 -> Bitmap Index Scan on t1_pkey
1136 Index Cond: (id < 10)
1137 InitPlan 2 (returns $3)
1139 -> Bitmap Heap Scan on t1 v_2
1140 Recheck Cond: (id < 10)
1141 -> Bitmap Index Scan on t1_pkey
1142 Index Cond: (id < 10)
1143 -> Bitmap Index Scan on t1_pkey
1144 Index Cond: (id = $3)
1147 -- full scan hint pattern test
1148 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1150 -----------------------------------
1152 TID Cond: (ctid = '(1,1)'::tid)
1157 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1166 -------------------------------------------------
1168 Filter: ((id < 10) AND (ctid = '(1,1)'::tid))
1172 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1181 ---------------------------------
1182 Index Scan using t1_pkey on t1
1183 Index Cond: (id < 10)
1184 Filter: (ctid = '(1,1)'::tid)
1188 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1197 ------------------------------------
1198 Bitmap Heap Scan on t1
1199 Recheck Cond: (id < 10)
1200 Filter: (ctid = '(1,1)'::tid)
1201 -> Bitmap Index Scan on t1_pkey
1202 Index Cond: (id < 10)
1206 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1215 -----------------------------------
1217 TID Cond: (ctid = '(1,1)'::tid)
1222 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1231 -----------------------------------
1233 TID Cond: (ctid = '(1,1)'::tid)
1237 /*+NoIndexScan(t1)*/
1238 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1247 -----------------------------------
1249 TID Cond: (ctid = '(1,1)'::tid)
1253 /*+NoBitmapScan(t1)*/
1254 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1263 -----------------------------------
1265 TID Cond: (ctid = '(1,1)'::tid)
1270 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1279 ---------------------------------
1280 Index Scan using t1_pkey on t1
1281 Index Cond: (id < 10)
1282 Filter: (ctid = '(1,1)'::tid)
1285 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1287 -----------------------------------------------
1289 Join Filter: (t1.id = t2.id)
1291 TID Cond: (ctid = '(1,1)'::tid)
1294 TID Cond: (ctid = '(1,1)'::tid)
1298 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1307 -----------------------------------------
1309 Join Filter: (t1.id = t2.id)
1311 TID Cond: (ctid = '(1,1)'::tid)
1313 Filter: (ctid = '(1,1)'::tid)
1317 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1326 -----------------------------------------
1328 Join Filter: (t1.id = t2.id)
1330 TID Cond: (ctid = '(1,1)'::tid)
1332 Filter: (ctid = '(1,1)'::tid)
1335 /*+SeqScan(t1) SeqScan(t2)*/
1336 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1346 ---------------------------------------
1348 Join Filter: (t1.id = t2.id)
1350 Filter: (ctid = '(1,1)'::tid)
1352 Filter: (ctid = '(1,1)'::tid)
1355 /*+SeqScan(t1) IndexScan(t2)*/
1356 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1366 ---------------------------------------
1369 Filter: (ctid = '(1,1)'::tid)
1370 -> Index Scan using t2_pkey on t2
1371 Index Cond: (id = t1.id)
1372 Filter: (ctid = '(1,1)'::tid)
1375 /*+SeqScan(t1) BitmapScan(t2)*/
1376 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1386 ------------------------------------------
1389 Filter: (ctid = '(1,1)'::tid)
1390 -> Bitmap Heap Scan on t2
1391 Recheck Cond: (id = t1.id)
1392 Filter: (ctid = '(1,1)'::tid)
1393 -> Bitmap Index Scan on t2_pkey
1394 Index Cond: (id = t1.id)
1397 /*+SeqScan(t1) TidScan(t2)*/
1398 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1408 -----------------------------------------
1410 Join Filter: (t1.id = t2.id)
1412 Filter: (ctid = '(1,1)'::tid)
1414 TID Cond: (ctid = '(1,1)'::tid)
1417 /*+SeqScan(t1) NoSeqScan(t2)*/
1418 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1428 -----------------------------------------
1430 Join Filter: (t1.id = t2.id)
1432 TID Cond: (ctid = '(1,1)'::tid)
1434 Filter: (ctid = '(1,1)'::tid)
1437 /*+SeqScan(t1) NoIndexScan(t2)*/
1438 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1448 -----------------------------------------
1450 Join Filter: (t1.id = t2.id)
1452 TID Cond: (ctid = '(1,1)'::tid)
1454 Filter: (ctid = '(1,1)'::tid)
1457 /*+SeqScan(t1) NoBitmapScan(t2)*/
1458 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1468 -----------------------------------------
1470 Join Filter: (t1.id = t2.id)
1472 TID Cond: (ctid = '(1,1)'::tid)
1474 Filter: (ctid = '(1,1)'::tid)
1477 /*+SeqScan(t1) NoTidScan(t2)*/
1478 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1488 ---------------------------------------
1490 Join Filter: (t1.id = t2.id)
1492 Filter: (ctid = '(1,1)'::tid)
1494 Filter: (ctid = '(1,1)'::tid)
1498 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1507 -----------------------------------------
1510 TID Cond: (ctid = '(1,1)'::tid)
1511 -> Index Scan using t1_pkey on t1
1512 Index Cond: (id = t2.id)
1513 Filter: (ctid = '(1,1)'::tid)
1517 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1526 -----------------------------------------
1529 TID Cond: (ctid = '(1,1)'::tid)
1530 -> Index Scan using t2_pkey on t2
1531 Index Cond: (id = t1.id)
1532 Filter: (ctid = '(1,1)'::tid)
1535 /*+IndexScan(t1) SeqScan(t2)*/
1536 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1546 ---------------------------------------
1549 Filter: (ctid = '(1,1)'::tid)
1550 -> Index Scan using t1_pkey on t1
1551 Index Cond: (id = t2.id)
1552 Filter: (ctid = '(1,1)'::tid)
1555 /*+IndexScan(t1) IndexScan(t2)*/
1556 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1566 ---------------------------------------
1568 -> Index Scan using t2_pkey on t2
1569 Filter: (ctid = '(1,1)'::tid)
1570 -> Index Scan using t1_pkey on t1
1571 Index Cond: (id = t2.id)
1572 Filter: (ctid = '(1,1)'::tid)
1575 /*+IndexScan(t1) BitmapScan(t2)*/
1576 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1586 ------------------------------------------
1588 -> Index Scan using t1_pkey on t1
1589 Filter: (ctid = '(1,1)'::tid)
1590 -> Bitmap Heap Scan on t2
1591 Recheck Cond: (id = t1.id)
1592 Filter: (ctid = '(1,1)'::tid)
1593 -> Bitmap Index Scan on t2_pkey
1594 Index Cond: (id = t1.id)
1597 /*+IndexScan(t1) TidScan(t2)*/
1598 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1608 -----------------------------------------
1611 TID Cond: (ctid = '(1,1)'::tid)
1612 -> Index Scan using t1_pkey on t1
1613 Index Cond: (id = t2.id)
1614 Filter: (ctid = '(1,1)'::tid)
1617 /*+IndexScan(t1) NoSeqScan(t2)*/
1618 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1628 -----------------------------------------
1631 TID Cond: (ctid = '(1,1)'::tid)
1632 -> Index Scan using t1_pkey on t1
1633 Index Cond: (id = t2.id)
1634 Filter: (ctid = '(1,1)'::tid)
1637 /*+IndexScan(t1) NoIndexScan(t2)*/
1638 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1648 -----------------------------------------
1651 TID Cond: (ctid = '(1,1)'::tid)
1652 -> Index Scan using t1_pkey on t1
1653 Index Cond: (id = t2.id)
1654 Filter: (ctid = '(1,1)'::tid)
1657 /*+IndexScan(t1) NoBitmapScan(t2)*/
1658 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1668 -----------------------------------------
1671 TID Cond: (ctid = '(1,1)'::tid)
1672 -> Index Scan using t1_pkey on t1
1673 Index Cond: (id = t2.id)
1674 Filter: (ctid = '(1,1)'::tid)
1677 /*+IndexScan(t1) NoTidScan(t2)*/
1678 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1688 ---------------------------------------
1691 Filter: (ctid = '(1,1)'::tid)
1692 -> Index Scan using t1_pkey on t1
1693 Index Cond: (id = t2.id)
1694 Filter: (ctid = '(1,1)'::tid)
1698 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1707 ------------------------------------------
1710 TID Cond: (ctid = '(1,1)'::tid)
1711 -> Bitmap Heap Scan on t1
1712 Recheck Cond: (id = t2.id)
1713 Filter: (ctid = '(1,1)'::tid)
1714 -> Bitmap Index Scan on t1_pkey
1715 Index Cond: (id = t2.id)
1719 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1728 ------------------------------------------
1731 TID Cond: (ctid = '(1,1)'::tid)
1732 -> Bitmap Heap Scan on t2
1733 Recheck Cond: (id = t1.id)
1734 Filter: (ctid = '(1,1)'::tid)
1735 -> Bitmap Index Scan on t2_pkey
1736 Index Cond: (id = t1.id)
1740 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1749 ------------------------------------------
1752 TID Cond: (ctid = '(1,1)'::tid)
1753 -> Bitmap Heap Scan on t2
1754 Recheck Cond: (id = t1.id)
1755 Filter: (ctid = '(1,1)'::tid)
1756 -> Bitmap Index Scan on t2_pkey
1757 Index Cond: (id = t1.id)
1760 /*+BitmapScan(t1) SeqScan(t2)*/
1761 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1771 ------------------------------------------
1774 Filter: (ctid = '(1,1)'::tid)
1775 -> Bitmap Heap Scan on t1
1776 Recheck Cond: (id = t2.id)
1777 Filter: (ctid = '(1,1)'::tid)
1778 -> Bitmap Index Scan on t1_pkey
1779 Index Cond: (id = t2.id)
1782 /*+BitmapScan(t1) IndexScan(t2)*/
1783 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1793 ------------------------------------------
1795 -> Index Scan using t2_pkey on t2
1796 Filter: (ctid = '(1,1)'::tid)
1797 -> Bitmap Heap Scan on t1
1798 Recheck Cond: (id = t2.id)
1799 Filter: (ctid = '(1,1)'::tid)
1800 -> Bitmap Index Scan on t1_pkey
1801 Index Cond: (id = t2.id)
1804 /*+BitmapScan(t1) BitmapScan(t2)*/
1805 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1815 ------------------------------------------
1817 -> Index Scan using t2_pkey on t2
1818 Filter: (ctid = '(1,1)'::tid)
1819 -> Bitmap Heap Scan on t1
1820 Recheck Cond: (id = t2.id)
1821 Filter: (ctid = '(1,1)'::tid)
1822 -> Bitmap Index Scan on t1_pkey
1823 Index Cond: (id = t2.id)
1826 /*+BitmapScan(t1) TidScan(t2)*/
1827 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1837 ------------------------------------------
1840 TID Cond: (ctid = '(1,1)'::tid)
1841 -> Bitmap Heap Scan on t1
1842 Recheck Cond: (id = t2.id)
1843 Filter: (ctid = '(1,1)'::tid)
1844 -> Bitmap Index Scan on t1_pkey
1845 Index Cond: (id = t2.id)
1848 /*+BitmapScan(t1) NoSeqScan(t2)*/
1849 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1859 ------------------------------------------
1862 TID Cond: (ctid = '(1,1)'::tid)
1863 -> Bitmap Heap Scan on t1
1864 Recheck Cond: (id = t2.id)
1865 Filter: (ctid = '(1,1)'::tid)
1866 -> Bitmap Index Scan on t1_pkey
1867 Index Cond: (id = t2.id)
1870 /*+BitmapScan(t1) NoIndexScan(t2)*/
1871 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1881 ------------------------------------------
1884 TID Cond: (ctid = '(1,1)'::tid)
1885 -> Bitmap Heap Scan on t1
1886 Recheck Cond: (id = t2.id)
1887 Filter: (ctid = '(1,1)'::tid)
1888 -> Bitmap Index Scan on t1_pkey
1889 Index Cond: (id = t2.id)
1892 /*+BitmapScan(t1) NoBitmapScan(t2)*/
1893 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1903 ------------------------------------------
1906 TID Cond: (ctid = '(1,1)'::tid)
1907 -> Bitmap Heap Scan on t1
1908 Recheck Cond: (id = t2.id)
1909 Filter: (ctid = '(1,1)'::tid)
1910 -> Bitmap Index Scan on t1_pkey
1911 Index Cond: (id = t2.id)
1914 /*+BitmapScan(t1) NoTidScan(t2)*/
1915 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1925 ------------------------------------------
1928 Filter: (ctid = '(1,1)'::tid)
1929 -> Bitmap Heap Scan on t1
1930 Recheck Cond: (id = t2.id)
1931 Filter: (ctid = '(1,1)'::tid)
1932 -> Bitmap Index Scan on t1_pkey
1933 Index Cond: (id = t2.id)
1937 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1946 -----------------------------------------
1948 Join Filter: (t1.id = t2.id)
1950 TID Cond: (ctid = '(1,1)'::tid)
1952 TID Cond: (ctid = '(1,1)'::tid)
1956 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1965 -----------------------------------------
1967 Join Filter: (t1.id = t2.id)
1969 TID Cond: (ctid = '(1,1)'::tid)
1971 TID Cond: (ctid = '(1,1)'::tid)
1974 /*+TidScan(t1) SeqScan(t2)*/
1975 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1985 -----------------------------------------
1987 Join Filter: (t1.id = t2.id)
1989 TID Cond: (ctid = '(1,1)'::tid)
1991 Filter: (ctid = '(1,1)'::tid)
1994 /*+TidScan(t1) IndexScan(t2)*/
1995 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2005 -----------------------------------------
2008 TID Cond: (ctid = '(1,1)'::tid)
2009 -> Index Scan using t2_pkey on t2
2010 Index Cond: (id = t1.id)
2011 Filter: (ctid = '(1,1)'::tid)
2014 /*+TidScan(t1) BitmapScan(t2)*/
2015 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2025 ------------------------------------------
2028 TID Cond: (ctid = '(1,1)'::tid)
2029 -> Bitmap Heap Scan on t2
2030 Recheck Cond: (id = t1.id)
2031 Filter: (ctid = '(1,1)'::tid)
2032 -> Bitmap Index Scan on t2_pkey
2033 Index Cond: (id = t1.id)
2036 /*+TidScan(t1) TidScan(t2)*/
2037 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2047 -----------------------------------------
2049 Join Filter: (t1.id = t2.id)
2051 TID Cond: (ctid = '(1,1)'::tid)
2053 TID Cond: (ctid = '(1,1)'::tid)
2056 /*+TidScan(t1) NoSeqScan(t2)*/
2057 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2067 -----------------------------------------
2069 Join Filter: (t1.id = t2.id)
2071 TID Cond: (ctid = '(1,1)'::tid)
2073 TID Cond: (ctid = '(1,1)'::tid)
2076 /*+TidScan(t1) NoIndexScan(t2)*/
2077 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2087 -----------------------------------------
2089 Join Filter: (t1.id = t2.id)
2091 TID Cond: (ctid = '(1,1)'::tid)
2093 TID Cond: (ctid = '(1,1)'::tid)
2096 /*+TidScan(t1) NoBitmapScan(t2)*/
2097 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2107 -----------------------------------------
2109 Join Filter: (t1.id = t2.id)
2111 TID Cond: (ctid = '(1,1)'::tid)
2113 TID Cond: (ctid = '(1,1)'::tid)
2116 /*+TidScan(t1) NoTidScan(t2)*/
2117 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2127 -----------------------------------------
2130 TID Cond: (ctid = '(1,1)'::tid)
2131 -> Index Scan using t2_pkey on t2
2132 Index Cond: (id = t1.id)
2133 Filter: (ctid = '(1,1)'::tid)
2137 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2146 -----------------------------------------------
2148 Join Filter: (t1.id = t2.id)
2150 TID Cond: (ctid = '(1,1)'::tid)
2153 TID Cond: (ctid = '(1,1)'::tid)
2157 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2166 -----------------------------------------------
2168 Join Filter: (t1.id = t2.id)
2170 TID Cond: (ctid = '(1,1)'::tid)
2173 TID Cond: (ctid = '(1,1)'::tid)
2176 /*+NoSeqScan(t1) SeqScan(t2)*/
2177 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2187 -----------------------------------------
2189 Join Filter: (t1.id = t2.id)
2191 TID Cond: (ctid = '(1,1)'::tid)
2193 Filter: (ctid = '(1,1)'::tid)
2196 /*+NoSeqScan(t1) IndexScan(t2)*/
2197 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2207 -----------------------------------------
2210 TID Cond: (ctid = '(1,1)'::tid)
2211 -> Index Scan using t2_pkey on t2
2212 Index Cond: (id = t1.id)
2213 Filter: (ctid = '(1,1)'::tid)
2216 /*+NoSeqScan(t1) BitmapScan(t2)*/
2217 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2227 ------------------------------------------
2230 TID Cond: (ctid = '(1,1)'::tid)
2231 -> Bitmap Heap Scan on t2
2232 Recheck Cond: (id = t1.id)
2233 Filter: (ctid = '(1,1)'::tid)
2234 -> Bitmap Index Scan on t2_pkey
2235 Index Cond: (id = t1.id)
2238 /*+NoSeqScan(t1) TidScan(t2)*/
2239 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2249 -----------------------------------------
2251 Join Filter: (t1.id = t2.id)
2253 TID Cond: (ctid = '(1,1)'::tid)
2255 TID Cond: (ctid = '(1,1)'::tid)
2258 /*+NoSeqScan(t1) NoSeqScan(t2)*/
2259 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2269 -----------------------------------------------
2271 Join Filter: (t1.id = t2.id)
2273 TID Cond: (ctid = '(1,1)'::tid)
2276 TID Cond: (ctid = '(1,1)'::tid)
2279 /*+NoSeqScan(t1) NoIndexScan(t2)*/
2280 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2290 -----------------------------------------------
2292 Join Filter: (t1.id = t2.id)
2294 TID Cond: (ctid = '(1,1)'::tid)
2297 TID Cond: (ctid = '(1,1)'::tid)
2300 /*+NoSeqScan(t1) NoBitmapScan(t2)*/
2301 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2311 -----------------------------------------------
2313 Join Filter: (t1.id = t2.id)
2315 TID Cond: (ctid = '(1,1)'::tid)
2318 TID Cond: (ctid = '(1,1)'::tid)
2321 /*+NoSeqScan(t1) NoTidScan(t2)*/
2322 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2332 -----------------------------------------
2335 TID Cond: (ctid = '(1,1)'::tid)
2336 -> Index Scan using t2_pkey on t2
2337 Index Cond: (id = t1.id)
2338 Filter: (ctid = '(1,1)'::tid)
2341 /*+NoIndexScan(t1)*/
2342 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2351 -----------------------------------------------
2353 Join Filter: (t1.id = t2.id)
2355 TID Cond: (ctid = '(1,1)'::tid)
2358 TID Cond: (ctid = '(1,1)'::tid)
2361 /*+NoIndexScan(t2)*/
2362 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2371 -----------------------------------------------
2373 Join Filter: (t1.id = t2.id)
2375 TID Cond: (ctid = '(1,1)'::tid)
2378 TID Cond: (ctid = '(1,1)'::tid)
2381 /*+NoIndexScan(t1) SeqScan(t2)*/
2382 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2392 -----------------------------------------
2394 Join Filter: (t1.id = t2.id)
2396 TID Cond: (ctid = '(1,1)'::tid)
2398 Filter: (ctid = '(1,1)'::tid)
2401 /*+NoIndexScan(t1) IndexScan(t2)*/
2402 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2412 -----------------------------------------
2415 TID Cond: (ctid = '(1,1)'::tid)
2416 -> Index Scan using t2_pkey on t2
2417 Index Cond: (id = t1.id)
2418 Filter: (ctid = '(1,1)'::tid)
2421 /*+NoIndexScan(t1) BitmapScan(t2)*/
2422 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2432 ------------------------------------------
2435 TID Cond: (ctid = '(1,1)'::tid)
2436 -> Bitmap Heap Scan on t2
2437 Recheck Cond: (id = t1.id)
2438 Filter: (ctid = '(1,1)'::tid)
2439 -> Bitmap Index Scan on t2_pkey
2440 Index Cond: (id = t1.id)
2443 /*+NoIndexScan(t1) TidScan(t2)*/
2444 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2454 -----------------------------------------
2456 Join Filter: (t1.id = t2.id)
2458 TID Cond: (ctid = '(1,1)'::tid)
2460 TID Cond: (ctid = '(1,1)'::tid)
2463 /*+NoIndexScan(t1) NoSeqScan(t2)*/
2464 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2474 -----------------------------------------------
2476 Join Filter: (t1.id = t2.id)
2478 TID Cond: (ctid = '(1,1)'::tid)
2481 TID Cond: (ctid = '(1,1)'::tid)
2484 /*+NoIndexScan(t1) NoIndexScan(t2)*/
2485 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2495 -----------------------------------------------
2497 Join Filter: (t1.id = t2.id)
2499 TID Cond: (ctid = '(1,1)'::tid)
2502 TID Cond: (ctid = '(1,1)'::tid)
2505 /*+NoIndexScan(t1) NoBitmapScan(t2)*/
2506 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2516 -----------------------------------------------
2518 Join Filter: (t1.id = t2.id)
2520 TID Cond: (ctid = '(1,1)'::tid)
2523 TID Cond: (ctid = '(1,1)'::tid)
2526 /*+NoIndexScan(t1) NoTidScan(t2)*/
2527 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2537 -----------------------------------------
2540 TID Cond: (ctid = '(1,1)'::tid)
2541 -> Index Scan using t2_pkey on t2
2542 Index Cond: (id = t1.id)
2543 Filter: (ctid = '(1,1)'::tid)
2546 /*+NoBitmapScan(t1)*/
2547 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2556 -----------------------------------------------
2558 Join Filter: (t1.id = t2.id)
2560 TID Cond: (ctid = '(1,1)'::tid)
2563 TID Cond: (ctid = '(1,1)'::tid)
2566 /*+NoBitmapScan(t2)*/
2567 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2576 -----------------------------------------------
2578 Join Filter: (t1.id = t2.id)
2580 TID Cond: (ctid = '(1,1)'::tid)
2583 TID Cond: (ctid = '(1,1)'::tid)
2586 /*+NoBitmapScan(t1) SeqScan(t2)*/
2587 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2597 -----------------------------------------
2599 Join Filter: (t1.id = t2.id)
2601 TID Cond: (ctid = '(1,1)'::tid)
2603 Filter: (ctid = '(1,1)'::tid)
2606 /*+NoBitmapScan(t1) IndexScan(t2)*/
2607 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2617 -----------------------------------------
2620 TID Cond: (ctid = '(1,1)'::tid)
2621 -> Index Scan using t2_pkey on t2
2622 Index Cond: (id = t1.id)
2623 Filter: (ctid = '(1,1)'::tid)
2626 /*+NoBitmapScan(t1) BitmapScan(t2)*/
2627 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2637 ------------------------------------------
2640 TID Cond: (ctid = '(1,1)'::tid)
2641 -> Bitmap Heap Scan on t2
2642 Recheck Cond: (id = t1.id)
2643 Filter: (ctid = '(1,1)'::tid)
2644 -> Bitmap Index Scan on t2_pkey
2645 Index Cond: (id = t1.id)
2648 /*+NoBitmapScan(t1) TidScan(t2)*/
2649 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2659 -----------------------------------------
2661 Join Filter: (t1.id = t2.id)
2663 TID Cond: (ctid = '(1,1)'::tid)
2665 TID Cond: (ctid = '(1,1)'::tid)
2668 /*+NoBitmapScan(t1) NoSeqScan(t2)*/
2669 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2679 -----------------------------------------------
2681 Join Filter: (t1.id = t2.id)
2683 TID Cond: (ctid = '(1,1)'::tid)
2686 TID Cond: (ctid = '(1,1)'::tid)
2689 /*+NoBitmapScan(t1) NoIndexScan(t2)*/
2690 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2700 -----------------------------------------------
2702 Join Filter: (t1.id = t2.id)
2704 TID Cond: (ctid = '(1,1)'::tid)
2707 TID Cond: (ctid = '(1,1)'::tid)
2710 /*+NoBitmapScan(t1) NoBitmapScan(t2)*/
2711 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2721 -----------------------------------------------
2723 Join Filter: (t1.id = t2.id)
2725 TID Cond: (ctid = '(1,1)'::tid)
2728 TID Cond: (ctid = '(1,1)'::tid)
2731 /*+NoBitmapScan(t1) NoTidScan(t2)*/
2732 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2742 -----------------------------------------
2745 TID Cond: (ctid = '(1,1)'::tid)
2746 -> Index Scan using t2_pkey on t2
2747 Index Cond: (id = t1.id)
2748 Filter: (ctid = '(1,1)'::tid)
2752 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2761 -----------------------------------------
2764 TID Cond: (ctid = '(1,1)'::tid)
2765 -> Index Scan using t1_pkey on t1
2766 Index Cond: (id = t2.id)
2767 Filter: (ctid = '(1,1)'::tid)
2771 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2780 -----------------------------------------
2783 TID Cond: (ctid = '(1,1)'::tid)
2784 -> Index Scan using t2_pkey on t2
2785 Index Cond: (id = t1.id)
2786 Filter: (ctid = '(1,1)'::tid)
2789 /*+NoTidScan(t1) SeqScan(t2)*/
2790 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2800 ---------------------------------------
2803 Filter: (ctid = '(1,1)'::tid)
2804 -> Index Scan using t1_pkey on t1
2805 Index Cond: (id = t2.id)
2806 Filter: (ctid = '(1,1)'::tid)
2809 /*+NoTidScan(t1) IndexScan(t2)*/
2810 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2820 ---------------------------------------
2822 -> Index Scan using t2_pkey on t2
2823 Filter: (ctid = '(1,1)'::tid)
2824 -> Index Scan using t1_pkey on t1
2825 Index Cond: (id = t2.id)
2826 Filter: (ctid = '(1,1)'::tid)
2829 /*+NoTidScan(t1) BitmapScan(t2)*/
2830 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2840 ------------------------------------------
2843 Filter: (ctid = '(1,1)'::tid)
2844 -> Bitmap Heap Scan on t2
2845 Recheck Cond: (id = t1.id)
2846 Filter: (ctid = '(1,1)'::tid)
2847 -> Bitmap Index Scan on t2_pkey
2848 Index Cond: (id = t1.id)
2851 /*+NoTidScan(t1) TidScan(t2)*/
2852 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2862 -----------------------------------------
2865 TID Cond: (ctid = '(1,1)'::tid)
2866 -> Index Scan using t1_pkey on t1
2867 Index Cond: (id = t2.id)
2868 Filter: (ctid = '(1,1)'::tid)
2871 /*+NoTidScan(t1) NoSeqScan(t2)*/
2872 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2882 -----------------------------------------
2885 TID Cond: (ctid = '(1,1)'::tid)
2886 -> Index Scan using t1_pkey on t1
2887 Index Cond: (id = t2.id)
2888 Filter: (ctid = '(1,1)'::tid)
2891 /*+NoTidScan(t1) NoIndexScan(t2)*/
2892 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2902 -----------------------------------------
2905 TID Cond: (ctid = '(1,1)'::tid)
2906 -> Index Scan using t1_pkey on t1
2907 Index Cond: (id = t2.id)
2908 Filter: (ctid = '(1,1)'::tid)
2911 /*+NoTidScan(t1) NoBitmapScan(t2)*/
2912 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2922 -----------------------------------------
2925 TID Cond: (ctid = '(1,1)'::tid)
2926 -> Index Scan using t1_pkey on t1
2927 Index Cond: (id = t2.id)
2928 Filter: (ctid = '(1,1)'::tid)
2931 /*+NoTidScan(t1) NoTidScan(t2)*/
2932 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2942 ---------------------------------------
2945 Filter: (ctid = '(1,1)'::tid)
2946 -> Index Scan using t1_pkey on t1
2947 Index Cond: (id = t2.id)
2948 Filter: (ctid = '(1,1)'::tid)
2952 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)' AND t1.id < 10 AND t2.id < 10;
2954 -----------------------------------------------
2956 Join Filter: (t1.id = t2.id)
2958 TID Cond: (ctid = '(1,1)'::tid)
2962 TID Cond: (ctid = '(1,1)'::tid)
2966 /*+BitmapScan(t1) BitmapScan(t2)*/
2967 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)' AND t1.id < 10 AND t2.id < 10;
2977 --------------------------------------------------------
2979 -> Bitmap Heap Scan on t2
2980 Recheck Cond: (id < 10)
2981 Filter: (ctid = '(1,1)'::tid)
2982 -> Bitmap Index Scan on t2_pkey
2983 Index Cond: (id < 10)
2984 -> Bitmap Heap Scan on t1
2985 Recheck Cond: ((id = t2.id) AND (id < 10))
2986 Filter: (ctid = '(1,1)'::tid)
2987 -> Bitmap Index Scan on t1_pkey
2988 Index Cond: ((id = t2.id) AND (id < 10))
2992 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
2994 ------------------------------
2996 Hash Cond: (t1.id = t2.id)
3002 /*+MergeJoin(t1 t2)*/
3003 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
3012 --------------------------------------
3014 Merge Cond: (t1.id = t2.id)
3015 -> Index Scan using t1_pkey on t1
3016 -> Index Scan using t2_pkey on t2
3019 /*+NestLoop(t1 t2)*/
3020 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
3029 ------------------------------
3031 Hash Cond: (t2.id = t1.id)
3037 -- inheritance tables test
3038 SET constraint_exclusion TO off;
3039 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3041 -----------------------------------------------------------------------
3044 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3045 -> Seq Scan on p1_c1
3046 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3047 -> Seq Scan on p1_c2
3048 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3049 -> Seq Scan on p1_c3
3050 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3051 -> Seq Scan on p1_c4
3052 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3053 -> Seq Scan on p1_c1_c1
3054 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3055 -> Seq Scan on p1_c1_c2
3056 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3057 -> Seq Scan on p1_c3_c1
3058 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3059 -> Seq Scan on p1_c3_c2
3060 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3063 SET constraint_exclusion TO on;
3064 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3066 -----------------------------------------------------------------------
3069 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3070 -> Seq Scan on p1_c1
3071 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3072 -> Seq Scan on p1_c1_c1
3073 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3074 -> Seq Scan on p1_c1_c2
3075 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3078 SET constraint_exclusion TO off;
3080 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3089 -----------------------------------------------------------------------
3092 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3093 -> Seq Scan on p1_c1
3094 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3095 -> Seq Scan on p1_c2
3096 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3097 -> Seq Scan on p1_c3
3098 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3099 -> Seq Scan on p1_c4
3100 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3101 -> Seq Scan on p1_c1_c1
3102 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3103 -> Seq Scan on p1_c1_c2
3104 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3105 -> Seq Scan on p1_c3_c1
3106 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3107 -> Seq Scan on p1_c3_c2
3108 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3112 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3121 --------------------------------------------------
3123 -> Index Scan using p1_pkey on p1
3124 Index Cond: ((id >= 50) AND (id <= 51))
3125 Filter: (ctid = '(1,1)'::tid)
3126 -> Index Scan using p1_c1_pkey on p1_c1
3127 Index Cond: ((id >= 50) AND (id <= 51))
3128 Filter: (ctid = '(1,1)'::tid)
3129 -> Index Scan using p1_c2_pkey on p1_c2
3130 Index Cond: ((id >= 50) AND (id <= 51))
3131 Filter: (ctid = '(1,1)'::tid)
3132 -> Index Scan using p1_c3_pkey on p1_c3
3133 Index Cond: ((id >= 50) AND (id <= 51))
3134 Filter: (ctid = '(1,1)'::tid)
3135 -> Index Scan using p1_c4_pkey on p1_c4
3136 Index Cond: ((id >= 50) AND (id <= 51))
3137 Filter: (ctid = '(1,1)'::tid)
3138 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3139 Index Cond: ((id >= 50) AND (id <= 51))
3140 Filter: (ctid = '(1,1)'::tid)
3141 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3142 Index Cond: ((id >= 50) AND (id <= 51))
3143 Filter: (ctid = '(1,1)'::tid)
3144 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
3145 Index Cond: ((id >= 50) AND (id <= 51))
3146 Filter: (ctid = '(1,1)'::tid)
3147 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
3148 Index Cond: ((id >= 50) AND (id <= 51))
3149 Filter: (ctid = '(1,1)'::tid)
3153 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3162 -------------------------------------------------------
3164 -> Bitmap Heap Scan on p1
3165 Recheck Cond: ((id >= 50) AND (id <= 51))
3166 Filter: (ctid = '(1,1)'::tid)
3167 -> Bitmap Index Scan on p1_pkey
3168 Index Cond: ((id >= 50) AND (id <= 51))
3169 -> Bitmap Heap Scan on p1_c1
3170 Recheck Cond: ((id >= 50) AND (id <= 51))
3171 Filter: (ctid = '(1,1)'::tid)
3172 -> Bitmap Index Scan on p1_c1_pkey
3173 Index Cond: ((id >= 50) AND (id <= 51))
3174 -> Bitmap Heap Scan on p1_c2
3175 Recheck Cond: ((id >= 50) AND (id <= 51))
3176 Filter: (ctid = '(1,1)'::tid)
3177 -> Bitmap Index Scan on p1_c2_pkey
3178 Index Cond: ((id >= 50) AND (id <= 51))
3179 -> Bitmap Heap Scan on p1_c3
3180 Recheck Cond: ((id >= 50) AND (id <= 51))
3181 Filter: (ctid = '(1,1)'::tid)
3182 -> Bitmap Index Scan on p1_c3_pkey
3183 Index Cond: ((id >= 50) AND (id <= 51))
3184 -> Bitmap Heap Scan on p1_c4
3185 Recheck Cond: ((id >= 50) AND (id <= 51))
3186 Filter: (ctid = '(1,1)'::tid)
3187 -> Bitmap Index Scan on p1_c4_pkey
3188 Index Cond: ((id >= 50) AND (id <= 51))
3189 -> Bitmap Heap Scan on p1_c1_c1
3190 Recheck Cond: ((id >= 50) AND (id <= 51))
3191 Filter: (ctid = '(1,1)'::tid)
3192 -> Bitmap Index Scan on p1_c1_c1_pkey
3193 Index Cond: ((id >= 50) AND (id <= 51))
3194 -> Bitmap Heap Scan on p1_c1_c2
3195 Recheck Cond: ((id >= 50) AND (id <= 51))
3196 Filter: (ctid = '(1,1)'::tid)
3197 -> Bitmap Index Scan on p1_c1_c2_pkey
3198 Index Cond: ((id >= 50) AND (id <= 51))
3199 -> Bitmap Heap Scan on p1_c3_c1
3200 Recheck Cond: ((id >= 50) AND (id <= 51))
3201 Filter: (ctid = '(1,1)'::tid)
3202 -> Bitmap Index Scan on p1_c3_c1_pkey
3203 Index Cond: ((id >= 50) AND (id <= 51))
3204 -> Bitmap Heap Scan on p1_c3_c2
3205 Recheck Cond: ((id >= 50) AND (id <= 51))
3206 Filter: (ctid = '(1,1)'::tid)
3207 -> Bitmap Index Scan on p1_c3_c2_pkey
3208 Index Cond: ((id >= 50) AND (id <= 51))
3212 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3221 ---------------------------------------------
3224 TID Cond: (ctid = '(1,1)'::tid)
3225 Filter: ((id >= 50) AND (id <= 51))
3226 -> Tid Scan on p1_c1
3227 TID Cond: (ctid = '(1,1)'::tid)
3228 Filter: ((id >= 50) AND (id <= 51))
3229 -> Tid Scan on p1_c2
3230 TID Cond: (ctid = '(1,1)'::tid)
3231 Filter: ((id >= 50) AND (id <= 51))
3232 -> Tid Scan on p1_c3
3233 TID Cond: (ctid = '(1,1)'::tid)
3234 Filter: ((id >= 50) AND (id <= 51))
3235 -> Tid Scan on p1_c4
3236 TID Cond: (ctid = '(1,1)'::tid)
3237 Filter: ((id >= 50) AND (id <= 51))
3238 -> Tid Scan on p1_c1_c1
3239 TID Cond: (ctid = '(1,1)'::tid)
3240 Filter: ((id >= 50) AND (id <= 51))
3241 -> Tid Scan on p1_c1_c2
3242 TID Cond: (ctid = '(1,1)'::tid)
3243 Filter: ((id >= 50) AND (id <= 51))
3244 -> Tid Scan on p1_c3_c1
3245 TID Cond: (ctid = '(1,1)'::tid)
3246 Filter: ((id >= 50) AND (id <= 51))
3247 -> Tid Scan on p1_c3_c2
3248 TID Cond: (ctid = '(1,1)'::tid)
3249 Filter: ((id >= 50) AND (id <= 51))
3252 SET constraint_exclusion TO on;
3254 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3263 -----------------------------------------------------------------------
3266 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3267 -> Seq Scan on p1_c1
3268 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3269 -> Seq Scan on p1_c1_c1
3270 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3271 -> Seq Scan on p1_c1_c2
3272 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3276 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3285 --------------------------------------------------
3287 -> Index Scan using p1_pkey on p1
3288 Index Cond: ((id >= 50) AND (id <= 51))
3289 Filter: (ctid = '(1,1)'::tid)
3290 -> Index Scan using p1_c1_pkey on p1_c1
3291 Index Cond: ((id >= 50) AND (id <= 51))
3292 Filter: (ctid = '(1,1)'::tid)
3293 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3294 Index Cond: ((id >= 50) AND (id <= 51))
3295 Filter: (ctid = '(1,1)'::tid)
3296 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3297 Index Cond: ((id >= 50) AND (id <= 51))
3298 Filter: (ctid = '(1,1)'::tid)
3302 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3311 -------------------------------------------------------
3313 -> Bitmap Heap Scan on p1
3314 Recheck Cond: ((id >= 50) AND (id <= 51))
3315 Filter: (ctid = '(1,1)'::tid)
3316 -> Bitmap Index Scan on p1_pkey
3317 Index Cond: ((id >= 50) AND (id <= 51))
3318 -> Bitmap Heap Scan on p1_c1
3319 Recheck Cond: ((id >= 50) AND (id <= 51))
3320 Filter: (ctid = '(1,1)'::tid)
3321 -> Bitmap Index Scan on p1_c1_pkey
3322 Index Cond: ((id >= 50) AND (id <= 51))
3323 -> Bitmap Heap Scan on p1_c1_c1
3324 Recheck Cond: ((id >= 50) AND (id <= 51))
3325 Filter: (ctid = '(1,1)'::tid)
3326 -> Bitmap Index Scan on p1_c1_c1_pkey
3327 Index Cond: ((id >= 50) AND (id <= 51))
3328 -> Bitmap Heap Scan on p1_c1_c2
3329 Recheck Cond: ((id >= 50) AND (id <= 51))
3330 Filter: (ctid = '(1,1)'::tid)
3331 -> Bitmap Index Scan on p1_c1_c2_pkey
3332 Index Cond: ((id >= 50) AND (id <= 51))
3336 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3345 ---------------------------------------------
3348 TID Cond: (ctid = '(1,1)'::tid)
3349 Filter: ((id >= 50) AND (id <= 51))
3350 -> Tid Scan on p1_c1
3351 TID Cond: (ctid = '(1,1)'::tid)
3352 Filter: ((id >= 50) AND (id <= 51))
3353 -> Tid Scan on p1_c1_c1
3354 TID Cond: (ctid = '(1,1)'::tid)
3355 Filter: ((id >= 50) AND (id <= 51))
3356 -> Tid Scan on p1_c1_c2
3357 TID Cond: (ctid = '(1,1)'::tid)
3358 Filter: ((id >= 50) AND (id <= 51))
3361 SET constraint_exclusion TO off;
3362 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3364 -----------------------------------------------------------------------------------
3366 Merge Cond: (p1.id = t1.id)
3371 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3372 -> Seq Scan on p1_c1
3373 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3374 -> Seq Scan on p1_c2
3375 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3376 -> Seq Scan on p1_c3
3377 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3378 -> Seq Scan on p1_c4
3379 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3380 -> Seq Scan on p1_c1_c1
3381 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3382 -> Seq Scan on p1_c1_c2
3383 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3384 -> Seq Scan on p1_c3_c1
3385 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3386 -> Seq Scan on p1_c3_c2
3387 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3388 -> Index Scan using t1_pkey on t1
3389 Index Cond: (id < 10)
3392 SET constraint_exclusion TO on;
3393 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3395 -----------------------------------------------------------------------------------
3397 Merge Cond: (p1.id = t1.id)
3402 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3403 -> Seq Scan on p1_c1
3404 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3405 -> Seq Scan on p1_c1_c1
3406 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3407 -> Seq Scan on p1_c1_c2
3408 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3409 -> Index Scan using t1_pkey on t1
3410 Index Cond: (id < 10)
3413 SET constraint_exclusion TO off;
3415 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3424 -----------------------------------------------------------------------------------
3426 Merge Cond: (p1.id = t1.id)
3431 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3432 -> Seq Scan on p1_c1
3433 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3434 -> Seq Scan on p1_c2
3435 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3436 -> Seq Scan on p1_c3
3437 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3438 -> Seq Scan on p1_c4
3439 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3440 -> Seq Scan on p1_c1_c1
3441 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3442 -> Seq Scan on p1_c1_c2
3443 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3444 -> Seq Scan on p1_c3_c1
3445 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3446 -> Seq Scan on p1_c3_c2
3447 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3448 -> Index Scan using t1_pkey on t1
3449 Index Cond: (id < 10)
3453 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3462 --------------------------------------------------------
3464 Merge Cond: (p1.id = t1.id)
3467 -> Index Scan using p1_pkey on p1
3468 Index Cond: ((id >= 50) AND (id <= 51))
3469 Filter: (ctid = '(1,1)'::tid)
3470 -> Index Scan using p1_c1_pkey on p1_c1
3471 Index Cond: ((id >= 50) AND (id <= 51))
3472 Filter: (ctid = '(1,1)'::tid)
3473 -> Index Scan using p1_c2_pkey on p1_c2
3474 Index Cond: ((id >= 50) AND (id <= 51))
3475 Filter: (ctid = '(1,1)'::tid)
3476 -> Index Scan using p1_c3_pkey on p1_c3
3477 Index Cond: ((id >= 50) AND (id <= 51))
3478 Filter: (ctid = '(1,1)'::tid)
3479 -> Index Scan using p1_c4_pkey on p1_c4
3480 Index Cond: ((id >= 50) AND (id <= 51))
3481 Filter: (ctid = '(1,1)'::tid)
3482 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3483 Index Cond: ((id >= 50) AND (id <= 51))
3484 Filter: (ctid = '(1,1)'::tid)
3485 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3486 Index Cond: ((id >= 50) AND (id <= 51))
3487 Filter: (ctid = '(1,1)'::tid)
3488 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
3489 Index Cond: ((id >= 50) AND (id <= 51))
3490 Filter: (ctid = '(1,1)'::tid)
3491 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
3492 Index Cond: ((id >= 50) AND (id <= 51))
3493 Filter: (ctid = '(1,1)'::tid)
3494 -> Index Scan using t1_pkey on t1
3495 Index Cond: (id < 10)
3499 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3508 -------------------------------------------------------------------
3510 Merge Cond: (p1.id = t1.id)
3514 -> Bitmap Heap Scan on p1
3515 Recheck Cond: ((id >= 50) AND (id <= 51))
3516 Filter: (ctid = '(1,1)'::tid)
3517 -> Bitmap Index Scan on p1_pkey
3518 Index Cond: ((id >= 50) AND (id <= 51))
3519 -> Bitmap Heap Scan on p1_c1
3520 Recheck Cond: ((id >= 50) AND (id <= 51))
3521 Filter: (ctid = '(1,1)'::tid)
3522 -> Bitmap Index Scan on p1_c1_pkey
3523 Index Cond: ((id >= 50) AND (id <= 51))
3524 -> Bitmap Heap Scan on p1_c2
3525 Recheck Cond: ((id >= 50) AND (id <= 51))
3526 Filter: (ctid = '(1,1)'::tid)
3527 -> Bitmap Index Scan on p1_c2_pkey
3528 Index Cond: ((id >= 50) AND (id <= 51))
3529 -> Bitmap Heap Scan on p1_c3
3530 Recheck Cond: ((id >= 50) AND (id <= 51))
3531 Filter: (ctid = '(1,1)'::tid)
3532 -> Bitmap Index Scan on p1_c3_pkey
3533 Index Cond: ((id >= 50) AND (id <= 51))
3534 -> Bitmap Heap Scan on p1_c4
3535 Recheck Cond: ((id >= 50) AND (id <= 51))
3536 Filter: (ctid = '(1,1)'::tid)
3537 -> Bitmap Index Scan on p1_c4_pkey
3538 Index Cond: ((id >= 50) AND (id <= 51))
3539 -> Bitmap Heap Scan on p1_c1_c1
3540 Recheck Cond: ((id >= 50) AND (id <= 51))
3541 Filter: (ctid = '(1,1)'::tid)
3542 -> Bitmap Index Scan on p1_c1_c1_pkey
3543 Index Cond: ((id >= 50) AND (id <= 51))
3544 -> Bitmap Heap Scan on p1_c1_c2
3545 Recheck Cond: ((id >= 50) AND (id <= 51))
3546 Filter: (ctid = '(1,1)'::tid)
3547 -> Bitmap Index Scan on p1_c1_c2_pkey
3548 Index Cond: ((id >= 50) AND (id <= 51))
3549 -> Bitmap Heap Scan on p1_c3_c1
3550 Recheck Cond: ((id >= 50) AND (id <= 51))
3551 Filter: (ctid = '(1,1)'::tid)
3552 -> Bitmap Index Scan on p1_c3_c1_pkey
3553 Index Cond: ((id >= 50) AND (id <= 51))
3554 -> Bitmap Heap Scan on p1_c3_c2
3555 Recheck Cond: ((id >= 50) AND (id <= 51))
3556 Filter: (ctid = '(1,1)'::tid)
3557 -> Bitmap Index Scan on p1_c3_c2_pkey
3558 Index Cond: ((id >= 50) AND (id <= 51))
3559 -> Index Scan using t1_pkey on t1
3560 Index Cond: (id < 10)
3564 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3573 ---------------------------------------------------------
3575 Merge Cond: (p1.id = t1.id)
3580 TID Cond: (ctid = '(1,1)'::tid)
3581 Filter: ((id >= 50) AND (id <= 51))
3582 -> Tid Scan on p1_c1
3583 TID Cond: (ctid = '(1,1)'::tid)
3584 Filter: ((id >= 50) AND (id <= 51))
3585 -> Tid Scan on p1_c2
3586 TID Cond: (ctid = '(1,1)'::tid)
3587 Filter: ((id >= 50) AND (id <= 51))
3588 -> Tid Scan on p1_c3
3589 TID Cond: (ctid = '(1,1)'::tid)
3590 Filter: ((id >= 50) AND (id <= 51))
3591 -> Tid Scan on p1_c4
3592 TID Cond: (ctid = '(1,1)'::tid)
3593 Filter: ((id >= 50) AND (id <= 51))
3594 -> Tid Scan on p1_c1_c1
3595 TID Cond: (ctid = '(1,1)'::tid)
3596 Filter: ((id >= 50) AND (id <= 51))
3597 -> Tid Scan on p1_c1_c2
3598 TID Cond: (ctid = '(1,1)'::tid)
3599 Filter: ((id >= 50) AND (id <= 51))
3600 -> Tid Scan on p1_c3_c1
3601 TID Cond: (ctid = '(1,1)'::tid)
3602 Filter: ((id >= 50) AND (id <= 51))
3603 -> Tid Scan on p1_c3_c2
3604 TID Cond: (ctid = '(1,1)'::tid)
3605 Filter: ((id >= 50) AND (id <= 51))
3606 -> Index Scan using t1_pkey on t1
3607 Index Cond: (id < 10)
3610 /*+NestLoop(p1 t1)*/
3611 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3620 -----------------------------------------------------------------------------------
3622 Join Filter: (p1.id = t1.id)
3623 -> Index Scan using t1_pkey on t1
3624 Index Cond: (id < 10)
3628 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3629 -> Seq Scan on p1_c1
3630 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3631 -> Seq Scan on p1_c2
3632 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3633 -> Seq Scan on p1_c3
3634 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3635 -> Seq Scan on p1_c4
3636 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3637 -> Seq Scan on p1_c1_c1
3638 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3639 -> Seq Scan on p1_c1_c2
3640 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3641 -> Seq Scan on p1_c3_c1
3642 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3643 -> Seq Scan on p1_c3_c2
3644 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3647 /*+MergeJoin(p1 t1)*/
3648 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3657 -----------------------------------------------------------------------------------
3659 Merge Cond: (p1.id = t1.id)
3664 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3665 -> Seq Scan on p1_c1
3666 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3667 -> Seq Scan on p1_c2
3668 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3669 -> Seq Scan on p1_c3
3670 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3671 -> Seq Scan on p1_c4
3672 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3673 -> Seq Scan on p1_c1_c1
3674 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3675 -> Seq Scan on p1_c1_c2
3676 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3677 -> Seq Scan on p1_c3_c1
3678 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3679 -> Seq Scan on p1_c3_c2
3680 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3681 -> Index Scan using t1_pkey on t1
3682 Index Cond: (id < 10)
3685 /*+HashJoin(p1 t1)*/
3686 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3695 -----------------------------------------------------------------------------
3697 Hash Cond: (p1.id = t1.id)
3700 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3701 -> Seq Scan on p1_c1
3702 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3703 -> Seq Scan on p1_c2
3704 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3705 -> Seq Scan on p1_c3
3706 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3707 -> Seq Scan on p1_c4
3708 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3709 -> Seq Scan on p1_c1_c1
3710 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3711 -> Seq Scan on p1_c1_c2
3712 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3713 -> Seq Scan on p1_c3_c1
3714 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3715 -> Seq Scan on p1_c3_c2
3716 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3718 -> Index Scan using t1_pkey on t1
3719 Index Cond: (id < 10)
3722 SET constraint_exclusion TO on;
3724 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3733 -----------------------------------------------------------------------------------
3735 Merge Cond: (p1.id = t1.id)
3740 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3741 -> Seq Scan on p1_c1
3742 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3743 -> Seq Scan on p1_c1_c1
3744 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3745 -> Seq Scan on p1_c1_c2
3746 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3747 -> Index Scan using t1_pkey on t1
3748 Index Cond: (id < 10)
3752 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3761 --------------------------------------------------------
3763 Merge Cond: (p1.id = t1.id)
3766 -> Index Scan using p1_pkey on p1
3767 Index Cond: ((id >= 50) AND (id <= 51))
3768 Filter: (ctid = '(1,1)'::tid)
3769 -> Index Scan using p1_c1_pkey on p1_c1
3770 Index Cond: ((id >= 50) AND (id <= 51))
3771 Filter: (ctid = '(1,1)'::tid)
3772 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3773 Index Cond: ((id >= 50) AND (id <= 51))
3774 Filter: (ctid = '(1,1)'::tid)
3775 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3776 Index Cond: ((id >= 50) AND (id <= 51))
3777 Filter: (ctid = '(1,1)'::tid)
3778 -> Index Scan using t1_pkey on t1
3779 Index Cond: (id < 10)
3783 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3792 -------------------------------------------------------------------
3794 Merge Cond: (p1.id = t1.id)
3798 -> Bitmap Heap Scan on p1
3799 Recheck Cond: ((id >= 50) AND (id <= 51))
3800 Filter: (ctid = '(1,1)'::tid)
3801 -> Bitmap Index Scan on p1_pkey
3802 Index Cond: ((id >= 50) AND (id <= 51))
3803 -> Bitmap Heap Scan on p1_c1
3804 Recheck Cond: ((id >= 50) AND (id <= 51))
3805 Filter: (ctid = '(1,1)'::tid)
3806 -> Bitmap Index Scan on p1_c1_pkey
3807 Index Cond: ((id >= 50) AND (id <= 51))
3808 -> Bitmap Heap Scan on p1_c1_c1
3809 Recheck Cond: ((id >= 50) AND (id <= 51))
3810 Filter: (ctid = '(1,1)'::tid)
3811 -> Bitmap Index Scan on p1_c1_c1_pkey
3812 Index Cond: ((id >= 50) AND (id <= 51))
3813 -> Bitmap Heap Scan on p1_c1_c2
3814 Recheck Cond: ((id >= 50) AND (id <= 51))
3815 Filter: (ctid = '(1,1)'::tid)
3816 -> Bitmap Index Scan on p1_c1_c2_pkey
3817 Index Cond: ((id >= 50) AND (id <= 51))
3818 -> Index Scan using t1_pkey on t1
3819 Index Cond: (id < 10)
3823 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3832 ---------------------------------------------------------
3834 Merge Cond: (p1.id = t1.id)
3839 TID Cond: (ctid = '(1,1)'::tid)
3840 Filter: ((id >= 50) AND (id <= 51))
3841 -> Tid Scan on p1_c1
3842 TID Cond: (ctid = '(1,1)'::tid)
3843 Filter: ((id >= 50) AND (id <= 51))
3844 -> Tid Scan on p1_c1_c1
3845 TID Cond: (ctid = '(1,1)'::tid)
3846 Filter: ((id >= 50) AND (id <= 51))
3847 -> Tid Scan on p1_c1_c2
3848 TID Cond: (ctid = '(1,1)'::tid)
3849 Filter: ((id >= 50) AND (id <= 51))
3850 -> Index Scan using t1_pkey on t1
3851 Index Cond: (id < 10)
3854 /*+NestLoop(p1 t1)*/
3855 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3864 -----------------------------------------------------------------------------------
3866 Join Filter: (p1.id = t1.id)
3867 -> Index Scan using t1_pkey on t1
3868 Index Cond: (id < 10)
3872 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3873 -> Seq Scan on p1_c1
3874 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3875 -> Seq Scan on p1_c1_c1
3876 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3877 -> Seq Scan on p1_c1_c2
3878 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3881 /*+MergeJoin(p1 t1)*/
3882 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3891 -----------------------------------------------------------------------------------
3893 Merge Cond: (p1.id = t1.id)
3898 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3899 -> Seq Scan on p1_c1
3900 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3901 -> Seq Scan on p1_c1_c1
3902 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3903 -> Seq Scan on p1_c1_c2
3904 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3905 -> Index Scan using t1_pkey on t1
3906 Index Cond: (id < 10)
3909 /*+HashJoin(p1 t1)*/
3910 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3919 -----------------------------------------------------------------------------------
3921 Hash Cond: (t1.id = p1.id)
3922 -> Index Scan using t1_pkey on t1
3923 Index Cond: (id < 10)
3927 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3928 -> Seq Scan on p1_c1
3929 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3930 -> Seq Scan on p1_c1_c1
3931 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3932 -> Seq Scan on p1_c1_c2
3933 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3936 SET constraint_exclusion TO off;
3937 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3939 -----------------------------------------------------------------
3941 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3944 SET constraint_exclusion TO on;
3945 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3947 -----------------------------------------------------------------
3949 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3952 SET constraint_exclusion TO off;
3954 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3963 -----------------------------------------------------------------
3965 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3969 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3978 -------------------------------------------
3979 Index Scan using p1_pkey on p1
3980 Index Cond: ((id >= 50) AND (id <= 51))
3981 Filter: (ctid = '(1,1)'::tid)
3985 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3994 -------------------------------------------------
3995 Bitmap Heap Scan on p1
3996 Recheck Cond: ((id >= 50) AND (id <= 51))
3997 Filter: (ctid = '(1,1)'::tid)
3998 -> Bitmap Index Scan on p1_pkey
3999 Index Cond: ((id >= 50) AND (id <= 51))
4003 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4012 ---------------------------------------
4014 TID Cond: (ctid = '(1,1)'::tid)
4015 Filter: ((id >= 50) AND (id <= 51))
4018 /*+NestLoop(p1 t1)*/
4019 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4028 -----------------------------------------------------------------------
4030 Join Filter: (p1.id = t1.id)
4031 -> Index Scan using t1_pkey on t1
4032 Index Cond: (id < 10)
4034 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4037 /*+MergeJoin(p1 t1)*/
4038 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4047 -----------------------------------------------------------------------------
4049 Merge Cond: (p1.id = t1.id)
4053 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4054 -> Index Scan using t1_pkey on t1
4055 Index Cond: (id < 10)
4058 /*+HashJoin(p1 t1)*/
4059 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4068 -----------------------------------------------------------------------------
4070 Hash Cond: (t1.id = p1.id)
4071 -> Index Scan using t1_pkey on t1
4072 Index Cond: (id < 10)
4075 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4078 SET constraint_exclusion TO on;
4080 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4089 -----------------------------------------------------------------
4091 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4095 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4104 -------------------------------------------
4105 Index Scan using p1_pkey on p1
4106 Index Cond: ((id >= 50) AND (id <= 51))
4107 Filter: (ctid = '(1,1)'::tid)
4111 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4120 -------------------------------------------------
4121 Bitmap Heap Scan on p1
4122 Recheck Cond: ((id >= 50) AND (id <= 51))
4123 Filter: (ctid = '(1,1)'::tid)
4124 -> Bitmap Index Scan on p1_pkey
4125 Index Cond: ((id >= 50) AND (id <= 51))
4129 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4138 ---------------------------------------
4140 TID Cond: (ctid = '(1,1)'::tid)
4141 Filter: ((id >= 50) AND (id <= 51))
4144 /*+NestLoop(p1 t1)*/
4145 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4154 -----------------------------------------------------------------------
4156 Join Filter: (p1.id = t1.id)
4157 -> Index Scan using t1_pkey on t1
4158 Index Cond: (id < 10)
4160 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4163 /*+MergeJoin(p1 t1)*/
4164 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4173 -----------------------------------------------------------------------------
4175 Merge Cond: (p1.id = t1.id)
4179 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4180 -> Index Scan using t1_pkey on t1
4181 Index Cond: (id < 10)
4184 /*+HashJoin(p1 t1)*/
4185 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4194 -----------------------------------------------------------------------------
4196 Hash Cond: (t1.id = p1.id)
4197 -> Index Scan using t1_pkey on t1
4198 Index Cond: (id < 10)
4201 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4204 SET constraint_exclusion TO off;
4205 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4207 -----------------------------------------------------------------------
4209 Join Filter: (p1.id = t1.id)
4210 -> Index Scan using t1_pkey on t1
4211 Index Cond: (id < 10)
4213 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4216 SET constraint_exclusion TO on;
4217 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4219 -----------------------------------------------------------------------
4221 Join Filter: (p1.id = t1.id)
4222 -> Index Scan using t1_pkey on t1
4223 Index Cond: (id < 10)
4225 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4228 SET constraint_exclusion TO off;
4230 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4239 -----------------------------------------------------------------------
4241 Join Filter: (p1.id = t1.id)
4242 -> Index Scan using t1_pkey on t1
4243 Index Cond: (id < 10)
4245 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4249 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4258 -------------------------------------------------
4260 Merge Cond: (p1.id = t1.id)
4261 -> Index Scan using p1_pkey on p1
4262 Index Cond: ((id >= 50) AND (id <= 51))
4263 Filter: (ctid = '(1,1)'::tid)
4264 -> Index Scan using t1_pkey on t1
4265 Index Cond: (id < 10)
4269 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4278 -------------------------------------------------------------
4280 Join Filter: (p1.id = t1.id)
4281 -> Index Scan using t1_pkey on t1
4282 Index Cond: (id < 10)
4284 -> Bitmap Heap Scan on p1
4285 Recheck Cond: ((id >= 50) AND (id <= 51))
4286 Filter: (ctid = '(1,1)'::tid)
4287 -> Bitmap Index Scan on p1_pkey
4288 Index Cond: ((id >= 50) AND (id <= 51))
4292 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4301 ---------------------------------------------------
4303 Join Filter: (p1.id = t1.id)
4304 -> Index Scan using t1_pkey on t1
4305 Index Cond: (id < 10)
4308 TID Cond: (ctid = '(1,1)'::tid)
4309 Filter: ((id >= 50) AND (id <= 51))
4312 SET constraint_exclusion TO on;
4314 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4323 -----------------------------------------------------------------------
4325 Join Filter: (p1.id = t1.id)
4326 -> Index Scan using t1_pkey on t1
4327 Index Cond: (id < 10)
4329 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4333 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4342 -------------------------------------------------
4344 Merge Cond: (p1.id = t1.id)
4345 -> Index Scan using p1_pkey on p1
4346 Index Cond: ((id >= 50) AND (id <= 51))
4347 Filter: (ctid = '(1,1)'::tid)
4348 -> Index Scan using t1_pkey on t1
4349 Index Cond: (id < 10)
4353 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4362 -------------------------------------------------------------
4364 Join Filter: (p1.id = t1.id)
4365 -> Index Scan using t1_pkey on t1
4366 Index Cond: (id < 10)
4368 -> Bitmap Heap Scan on p1
4369 Recheck Cond: ((id >= 50) AND (id <= 51))
4370 Filter: (ctid = '(1,1)'::tid)
4371 -> Bitmap Index Scan on p1_pkey
4372 Index Cond: ((id >= 50) AND (id <= 51))
4376 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4385 ---------------------------------------------------
4387 Join Filter: (p1.id = t1.id)
4388 -> Index Scan using t1_pkey on t1
4389 Index Cond: (id < 10)
4392 TID Cond: (ctid = '(1,1)'::tid)
4393 Filter: ((id >= 50) AND (id <= 51))
4397 /*+SeqScan("""t1 ) ")IndexScan("t 2 """)HashJoin("""t1 ) "T3"t 2 """)Leading("""t1 ) "T3"t 2 """)Set(application_name"a a a"" a A")*/
4398 EXPLAIN (COSTS false) SELECT * FROM t1 """t1 ) ", t2 "t 2 """, t3 "T3" WHERE """t1 ) ".id = "t 2 """.id AND """t1 ) ".id = "T3".id;
4403 HashJoin("""t1 ) " T3 "t 2 """)
4404 Leading("""t1 ) " T3 "t 2 """)
4405 Set(application_name "a a a"" a A")
4411 ---------------------------------------------------------
4413 Hash Cond: ("t 2 """.id = """t1 ) ".id)
4414 -> Index Scan using t2_pkey on t2 "t 2 """
4417 Hash Cond: ("""t1 ) ".id = "T3".id)
4418 -> Seq Scan on t1 """t1 ) "
4420 -> Seq Scan on t3 "T3"
4423 -- duplicate hint test
4424 /*+SeqScan(t1)SeqScan(t2)IndexScan(t1)IndexScan(t2)BitmapScan(t1)BitmapScan(t2)TidScan(t1)TidScan(t2)HashJoin(t1 t2)NestLoop(t2 t1)MergeJoin(t1 t2)Leading(t1 t2)Leading(t2 t1)Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)*/
4425 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
4426 INFO: pg_hint_plan: hint syntax error at or near "SeqScan(t1)SeqScan(t2)IndexScan(t1)IndexScan(t2)BitmapScan(t1)BitmapScan(t2)TidScan(t1)TidScan(t2)HashJoin(t1 t2)NestLoop(t2 t1)MergeJoin(t1 t2)Leading(t1 t2)Leading(t2 t1)Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4427 DETAIL: Conflict scan method hint.
4428 INFO: pg_hint_plan: hint syntax error at or near "IndexScan(t1)IndexScan(t2)BitmapScan(t1)BitmapScan(t2)TidScan(t1)TidScan(t2)HashJoin(t1 t2)NestLoop(t2 t1)MergeJoin(t1 t2)Leading(t1 t2)Leading(t2 t1)Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4429 DETAIL: Conflict scan method hint.
4430 INFO: pg_hint_plan: hint syntax error at or near "BitmapScan(t1)BitmapScan(t2)TidScan(t1)TidScan(t2)HashJoin(t1 t2)NestLoop(t2 t1)MergeJoin(t1 t2)Leading(t1 t2)Leading(t2 t1)Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4431 DETAIL: Conflict scan method hint.
4432 INFO: pg_hint_plan: hint syntax error at or near "SeqScan(t2)IndexScan(t1)IndexScan(t2)BitmapScan(t1)BitmapScan(t2)TidScan(t1)TidScan(t2)HashJoin(t1 t2)NestLoop(t2 t1)MergeJoin(t1 t2)Leading(t1 t2)Leading(t2 t1)Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4433 DETAIL: Conflict scan method hint.
4434 INFO: pg_hint_plan: hint syntax error at or near "IndexScan(t2)BitmapScan(t1)BitmapScan(t2)TidScan(t1)TidScan(t2)HashJoin(t1 t2)NestLoop(t2 t1)MergeJoin(t1 t2)Leading(t1 t2)Leading(t2 t1)Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4435 DETAIL: Conflict scan method hint.
4436 INFO: pg_hint_plan: hint syntax error at or near "BitmapScan(t2)TidScan(t1)TidScan(t2)HashJoin(t1 t2)NestLoop(t2 t1)MergeJoin(t1 t2)Leading(t1 t2)Leading(t2 t1)Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4437 DETAIL: Conflict scan method hint.
4438 INFO: pg_hint_plan: hint syntax error at or near "HashJoin(t1 t2)NestLoop(t2 t1)MergeJoin(t1 t2)Leading(t1 t2)Leading(t2 t1)Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4439 DETAIL: Conflict join method hint.
4440 INFO: pg_hint_plan: hint syntax error at or near "NestLoop(t2 t1)MergeJoin(t1 t2)Leading(t1 t2)Leading(t2 t1)Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4441 DETAIL: Conflict join method hint.
4442 INFO: pg_hint_plan: hint syntax error at or near "Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4443 DETAIL: Conflict set hint.
4444 INFO: pg_hint_plan: hint syntax error at or near "Leading(t1 t2)Leading(t2 t1)Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4445 DETAIL: Conflict leading hint.
4452 Set(enable_mergejoin on)
4453 Set(enable_seqscan on)
4465 Set(enable_seqscan off)
4469 -----------------------------------------------
4471 Merge Cond: (t1.id = t2.id)
4475 TID Cond: (ctid = '(1,1)'::tid)
4479 TID Cond: (ctid = '(1,1)'::tid)
4482 -- sub query Leading hint test
4483 SET from_collapse_limit TO 100;
4484 SET geqo_threshold TO 100;
4485 EXPLAIN (COSTS false)
4487 SELECT max(t1_5.id) FROM t1 t1_5, t2 t2_5, t3 t3_5 WHERE t1_5.id = t2_5.id AND t2_5.id = t3_5.id
4490 SELECT max(t1_2.id) FROM t1 t1_2, t2 t2_2, t3 t3_2 WHERE t1_2.id = t2_2.id AND t2_2.id = t3_2.id
4491 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4492 SELECT t1_3.id FROM t1 t1_3, t2 t2_3, t3 t3_3 WHERE t1_3.id = t2_3.id AND t2_3.id = t3_3.id
4493 ) v1_1(id), c1_1 WHERE t1_1.id = t2_1.id AND t2_1.id = t3_1.id AND t2_1.id = v1_1.id AND v1_1.id = c1_1.id AND t1_1.id = (
4494 SELECT max(t1_4.id) FROM t1 t1_4, t2 t2_4, t3 t3_4 WHERE t1_4.id = t2_4.id AND t2_4.id = t3_4.id
4497 ------------------------------------------------------------------------------
4502 Merge Cond: (t1_5.id = t3_5.id)
4504 Merge Cond: (t1_5.id = t2_5.id)
4505 -> Index Only Scan using t1_pkey on t1 t1_5
4506 -> Index Only Scan using t2_pkey on t2 t2_5
4509 -> Seq Scan on t3 t3_5
4510 InitPlan 2 (returns $1)
4513 Merge Cond: (t1_2.id = t3_2.id)
4515 Merge Cond: (t1_2.id = t2_2.id)
4516 -> Index Only Scan using t1_pkey on t1 t1_2
4517 -> Index Only Scan using t2_pkey on t2 t2_2
4520 -> Seq Scan on t3 t3_2
4521 InitPlan 3 (returns $2)
4524 Merge Cond: (t1_4.id = t3_4.id)
4526 Merge Cond: (t1_4.id = t2_4.id)
4527 -> Index Only Scan using t1_pkey on t1 t1_4
4528 -> Index Only Scan using t2_pkey on t2 t2_4
4531 -> Seq Scan on t3 t3_4
4537 -> Index Only Scan using t1_pkey on t1 t1_1
4538 Index Cond: (id = $2)
4539 -> Index Only Scan using t2_pkey on t2 t2_1
4540 Index Cond: (id = $2)
4541 -> Seq Scan on t3 t3_1
4543 -> Index Only Scan using t1_pkey on t1 t1_3
4544 Index Cond: (id = $2)
4545 -> Index Only Scan using t2_pkey on t2 t2_3
4546 Index Cond: (id = $2)
4547 -> Seq Scan on t3 t3_3
4553 /*+HashJoin(t1_1 t3_1)MergeJoin(t1_3 t3_3)NestLoop(t1_2 t2_2)NestLoop(t1_4 t2_4)NestLoop(t1_5 t2_5)*/
4554 EXPLAIN (COSTS false)
4556 SELECT max(t1_5.id) FROM t1 t1_5, t2 t2_5, t3 t3_5 WHERE t1_5.id = t2_5.id AND t2_5.id = t3_5.id
4559 SELECT max(t1_2.id) FROM t1 t1_2, t2 t2_2, t3 t3_2 WHERE t1_2.id = t2_2.id AND t2_2.id = t3_2.id
4560 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4561 SELECT t1_3.id FROM t1 t1_3, t2 t2_3, t3 t3_3 WHERE t1_3.id = t2_3.id AND t2_3.id = t3_3.id
4562 ) v1_1(id), c1_1 WHERE t1_1.id = t2_1.id AND t2_1.id = t3_1.id AND t2_1.id = v1_1.id AND v1_1.id = c1_1.id AND t1_1.id = (
4563 SELECT max(t1_4.id) FROM t1 t1_4, t2 t2_4, t3 t3_4 WHERE t1_4.id = t2_4.id AND t2_4.id = t3_4.id
4569 MergeJoin(t1_3 t3_3)
4577 ------------------------------------------------------------------------------
4582 Merge Cond: (t1_5.id = t3_5.id)
4584 -> Index Only Scan using t2_pkey on t2 t2_5
4585 -> Index Only Scan using t1_pkey on t1 t1_5
4586 Index Cond: (id = t2_5.id)
4589 -> Seq Scan on t3 t3_5
4590 InitPlan 2 (returns $3)
4593 Merge Cond: (t1_2.id = t3_2.id)
4595 -> Index Only Scan using t2_pkey on t2 t2_2
4596 -> Index Only Scan using t1_pkey on t1 t1_2
4597 Index Cond: (id = t2_2.id)
4600 -> Seq Scan on t3 t3_2
4601 InitPlan 3 (returns $5)
4604 Merge Cond: (t1_4.id = t3_4.id)
4606 -> Index Only Scan using t2_pkey on t2 t2_4
4607 -> Index Only Scan using t1_pkey on t1 t1_4
4608 Index Cond: (id = t2_4.id)
4611 -> Seq Scan on t3 t3_4
4617 -> Index Only Scan using t1_pkey on t1 t1_1
4618 Index Cond: (id = $5)
4619 -> Index Only Scan using t2_pkey on t2 t2_1
4620 Index Cond: (id = $5)
4621 -> Seq Scan on t3 t3_1
4623 -> Index Only Scan using t1_pkey on t1 t1_3
4624 Index Cond: (id = $5)
4625 -> Index Only Scan using t2_pkey on t2 t2_3
4626 Index Cond: (id = $5)
4627 -> Seq Scan on t3 t3_3
4633 /*+HashJoin(t1_1 t3_1)MergeJoin(t1_3 t3_3)NestLoop(t1_2 t2_2)NestLoop(t1_4 t2_4)NestLoop(t1_5 t2_5)Leading(a t1_1 t1_2 t1_4 t1_5)*/
4634 EXPLAIN (COSTS false)
4636 SELECT max(t1_5.id) FROM t1 t1_5, t2 t2_5, t3 t3_5 WHERE t1_5.id = t2_5.id AND t2_5.id = t3_5.id
4639 SELECT max(t1_2.id) FROM t1 t1_2, t2 t2_2, t3 t3_2 WHERE t1_2.id = t2_2.id AND t2_2.id = t3_2.id
4640 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4641 SELECT t1_3.id FROM t1 t1_3, t2 t2_3, t3 t3_3 WHERE t1_3.id = t2_3.id AND t2_3.id = t3_3.id
4642 ) v1_1(id), c1_1 WHERE t1_1.id = t2_1.id AND t2_1.id = t3_1.id AND t2_1.id = v1_1.id AND v1_1.id = c1_1.id AND t1_1.id = (
4643 SELECT max(t1_4.id) FROM t1 t1_4, t2 t2_4, t3 t3_4 WHERE t1_4.id = t2_4.id AND t2_4.id = t3_4.id
4649 MergeJoin(t1_3 t3_3)
4653 Leading(a t1_1 t1_2 t1_4 t1_5)
4658 ------------------------------------------------------------------------------
4663 Merge Cond: (t1_5.id = t3_5.id)
4665 -> Index Only Scan using t2_pkey on t2 t2_5
4666 -> Index Only Scan using t1_pkey on t1 t1_5
4667 Index Cond: (id = t2_5.id)
4670 -> Seq Scan on t3 t3_5
4671 InitPlan 2 (returns $3)
4674 Merge Cond: (t1_2.id = t3_2.id)
4676 -> Index Only Scan using t2_pkey on t2 t2_2
4677 -> Index Only Scan using t1_pkey on t1 t1_2
4678 Index Cond: (id = t2_2.id)
4681 -> Seq Scan on t3 t3_2
4682 InitPlan 3 (returns $5)
4685 Merge Cond: (t1_4.id = t3_4.id)
4687 -> Index Only Scan using t2_pkey on t2 t2_4
4688 -> Index Only Scan using t1_pkey on t1 t1_4
4689 Index Cond: (id = t2_4.id)
4692 -> Seq Scan on t3 t3_4
4698 -> Index Only Scan using t1_pkey on t1 t1_1
4699 Index Cond: (id = $5)
4700 -> Index Only Scan using t2_pkey on t2 t2_1
4701 Index Cond: (id = $5)
4702 -> Seq Scan on t3 t3_1
4704 -> Index Only Scan using t1_pkey on t1 t1_3
4705 Index Cond: (id = $5)
4706 -> Index Only Scan using t2_pkey on t2 t2_3
4707 Index Cond: (id = $5)
4708 -> Seq Scan on t3 t3_3
4714 /*+HashJoin(t1_1 t3_1)MergeJoin(t1_3 t3_3)NestLoop(t1_2 t2_2)NestLoop(t1_4 t2_4)NestLoop(t1_5 t2_5)Leading(a t3_2 t3_5 t2_2 c1_1 t3_4 t3_3 t2_3 t2_4 t1_3 t2_5 t1_2 t3_1 t1_4 t2_1 t1_5 t1_1)*/
4715 EXPLAIN (COSTS false)
4717 SELECT max(t1_5.id) FROM t1 t1_5, t2 t2_5, t3 t3_5 WHERE t1_5.id = t2_5.id AND t2_5.id = t3_5.id
4720 SELECT max(t1_2.id) FROM t1 t1_2, t2 t2_2, t3 t3_2 WHERE t1_2.id = t2_2.id AND t2_2.id = t3_2.id
4721 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4722 SELECT t1_3.id FROM t1 t1_3, t2 t2_3, t3 t3_3 WHERE t1_3.id = t2_3.id AND t2_3.id = t3_3.id
4723 ) v1_1(id), c1_1 WHERE t1_1.id = t2_1.id AND t2_1.id = t3_1.id AND t2_1.id = v1_1.id AND v1_1.id = c1_1.id AND t1_1.id = (
4724 SELECT max(t1_4.id) FROM t1 t1_4, t2 t2_4, t3 t3_4 WHERE t1_4.id = t2_4.id AND t2_4.id = t3_4.id
4730 MergeJoin(t1_3 t3_3)
4734 Leading(a t3_2 t3_5 t2_2 c1_1 t3_4 t3_3 t2_3 t2_4 t1_3 t2_5 t1_2 t3_1 t1_4 t2_1 t1_5 t1_1)
4739 ------------------------------------------------------------------------------
4744 Merge Cond: (t1_5.id = t3_5.id)
4746 -> Index Only Scan using t2_pkey on t2 t2_5
4747 -> Index Only Scan using t1_pkey on t1 t1_5
4748 Index Cond: (id = t2_5.id)
4751 -> Seq Scan on t3 t3_5
4752 InitPlan 2 (returns $3)
4755 Merge Cond: (t1_2.id = t3_2.id)
4757 -> Index Only Scan using t2_pkey on t2 t2_2
4758 -> Index Only Scan using t1_pkey on t1 t1_2
4759 Index Cond: (id = t2_2.id)
4762 -> Seq Scan on t3 t3_2
4763 InitPlan 3 (returns $5)
4766 Merge Cond: (t1_4.id = t3_4.id)
4768 -> Index Only Scan using t2_pkey on t2 t2_4
4769 -> Index Only Scan using t1_pkey on t1 t1_4
4770 Index Cond: (id = t2_4.id)
4773 -> Seq Scan on t3 t3_4
4779 -> Index Only Scan using t1_pkey on t1 t1_1
4780 Index Cond: (id = $5)
4781 -> Index Only Scan using t2_pkey on t2 t2_1
4782 Index Cond: (id = $5)
4783 -> Seq Scan on t3 t3_1
4785 -> Index Only Scan using t1_pkey on t1 t1_3
4786 Index Cond: (id = $5)
4787 -> Index Only Scan using t2_pkey on t2 t2_3
4788 Index Cond: (id = $5)
4789 -> Seq Scan on t3 t3_3
4795 /*+HashJoin(t1_1 t3_1)MergeJoin(t1_3 t3_3)NestLoop(t1_2 t2_2)NestLoop(t1_4 t2_4)NestLoop(t1_5 t2_5)Leading(t3_5 t2_5 t1_5)Leading(t3_2 t2_2 t1_2)Leading(t3_4 t2_4 t1_4)Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)*/
4796 EXPLAIN (COSTS false)
4798 SELECT max(t1_5.id) FROM t1 t1_5, t2 t2_5, t3 t3_5 WHERE t1_5.id = t2_5.id AND t2_5.id = t3_5.id
4801 SELECT max(t1_2.id) FROM t1 t1_2, t2 t2_2, t3 t3_2 WHERE t1_2.id = t2_2.id AND t2_2.id = t3_2.id
4802 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4803 SELECT t1_3.id FROM t1 t1_3, t2 t2_3, t3 t3_3 WHERE t1_3.id = t2_3.id AND t2_3.id = t3_3.id
4804 ) v1_1(id), c1_1 WHERE t1_1.id = t2_1.id AND t2_1.id = t3_1.id AND t2_1.id = v1_1.id AND v1_1.id = c1_1.id AND t1_1.id = (
4805 SELECT max(t1_4.id) FROM t1 t1_4, t2 t2_4, t3 t3_4 WHERE t1_4.id = t2_4.id AND t2_4.id = t3_4.id
4809 Leading(t3_5 t2_5 t1_5)
4810 Leading(t3_2 t2_2 t1_2)
4811 Leading(t3_4 t2_4 t1_4)
4812 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
4816 MergeJoin(t1_3 t3_3)
4823 ------------------------------------------------------------------------
4828 Merge Cond: (t2_5.id = t1_5.id)
4830 Merge Cond: (t2_5.id = t3_5.id)
4831 -> Index Only Scan using t2_pkey on t2 t2_5
4834 -> Seq Scan on t3 t3_5
4835 -> Index Only Scan using t1_pkey on t1 t1_5
4836 InitPlan 2 (returns $1)
4839 Merge Cond: (t2_2.id = t1_2.id)
4841 Merge Cond: (t2_2.id = t3_2.id)
4842 -> Index Only Scan using t2_pkey on t2 t2_2
4845 -> Seq Scan on t3 t3_2
4846 -> Index Only Scan using t1_pkey on t1 t1_2
4847 InitPlan 3 (returns $2)
4850 Merge Cond: (t2_4.id = t1_4.id)
4852 Merge Cond: (t2_4.id = t3_4.id)
4853 -> Index Only Scan using t2_pkey on t2 t2_4
4856 -> Seq Scan on t3 t3_4
4857 -> Index Only Scan using t1_pkey on t1 t1_4
4863 -> Seq Scan on t3 t3_3
4867 -> Index Only Scan using t2_pkey on t2 t2_3
4868 Index Cond: (id = $2)
4869 -> Index Only Scan using t1_pkey on t1 t1_3
4870 Index Cond: (id = $2)
4871 -> Seq Scan on t3 t3_1
4873 -> Index Only Scan using t2_pkey on t2 t2_1
4874 Index Cond: (id = $2)
4875 -> Index Only Scan using t1_pkey on t1 t1_1
4876 Index Cond: (id = $2)
4879 SET from_collapse_limit TO 1;
4880 EXPLAIN (COSTS false)
4882 SELECT max(t1_5.id) FROM t1 t1_5, t2 t2_5, t3 t3_5 WHERE t1_5.id = t2_5.id AND t2_5.id = t3_5.id
4885 SELECT max(t1_2.id) FROM t1 t1_2, t2 t2_2, t3 t3_2 WHERE t1_2.id = t2_2.id AND t2_2.id = t3_2.id
4886 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4887 SELECT t1_3.id FROM t1 t1_3, t2 t2_3, t3 t3_3 WHERE t1_3.id = t2_3.id AND t2_3.id = t3_3.id
4888 ) v1_1(id), c1_1 WHERE t1_1.id = t2_1.id AND t2_1.id = t3_1.id AND t2_1.id = v1_1.id AND v1_1.id = c1_1.id AND t1_1.id = (
4889 SELECT max(t1_4.id) FROM t1 t1_4, t2 t2_4, t3 t3_4 WHERE t1_4.id = t2_4.id AND t2_4.id = t3_4.id
4892 --------------------------------------------------------------------
4897 Merge Cond: (t1_5.id = t3_5.id)
4899 Merge Cond: (t1_5.id = t2_5.id)
4900 -> Index Only Scan using t1_pkey on t1 t1_5
4901 -> Index Only Scan using t2_pkey on t2 t2_5
4904 -> Seq Scan on t3 t3_5
4905 InitPlan 2 (returns $1)
4908 Merge Cond: (t1_2.id = t3_2.id)
4910 Merge Cond: (t1_2.id = t2_2.id)
4911 -> Index Only Scan using t1_pkey on t1 t1_2
4912 -> Index Only Scan using t2_pkey on t2 t2_2
4915 -> Seq Scan on t3 t3_2
4916 InitPlan 3 (returns $2)
4919 Merge Cond: (t1_4.id = t3_4.id)
4921 Merge Cond: (t1_4.id = t2_4.id)
4922 -> Index Only Scan using t1_pkey on t1 t1_4
4923 -> Index Only Scan using t2_pkey on t2 t2_4
4926 -> Seq Scan on t3 t3_4
4930 -> Index Only Scan using t1_pkey on t1 t1_1
4931 Index Cond: (id = $2)
4932 -> Index Only Scan using t2_pkey on t2 t2_1
4933 Index Cond: (id = $2)
4934 -> Seq Scan on t3 t3_1
4938 -> Index Only Scan using t1_pkey on t1 t1_3
4939 Index Cond: (id = $2)
4940 -> Index Only Scan using t2_pkey on t2 t2_3
4941 Index Cond: (id = $2)
4942 -> Seq Scan on t3 t3_3
4948 /*+HashJoin(t1_1 t3_1)MergeJoin(t1_3 t3_3)NestLoop(t1_2 t2_2)NestLoop(t1_4 t2_4)NestLoop(t1_5 t2_5)*/
4949 EXPLAIN (COSTS false)
4951 SELECT max(t1_5.id) FROM t1 t1_5, t2 t2_5, t3 t3_5 WHERE t1_5.id = t2_5.id AND t2_5.id = t3_5.id
4954 SELECT max(t1_2.id) FROM t1 t1_2, t2 t2_2, t3 t3_2 WHERE t1_2.id = t2_2.id AND t2_2.id = t3_2.id
4955 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4956 SELECT t1_3.id FROM t1 t1_3, t2 t2_3, t3 t3_3 WHERE t1_3.id = t2_3.id AND t2_3.id = t3_3.id
4957 ) v1_1(id), c1_1 WHERE t1_1.id = t2_1.id AND t2_1.id = t3_1.id AND t2_1.id = v1_1.id AND v1_1.id = c1_1.id AND t1_1.id = (
4958 SELECT max(t1_4.id) FROM t1 t1_4, t2 t2_4, t3 t3_4 WHERE t1_4.id = t2_4.id AND t2_4.id = t3_4.id
4964 MergeJoin(t1_3 t3_3)
4972 --------------------------------------------------------------------
4977 Merge Cond: (t1_5.id = t3_5.id)
4979 -> Index Only Scan using t2_pkey on t2 t2_5
4980 -> Index Only Scan using t1_pkey on t1 t1_5
4981 Index Cond: (id = t2_5.id)
4984 -> Seq Scan on t3 t3_5
4985 InitPlan 2 (returns $3)
4988 Merge Cond: (t1_2.id = t3_2.id)
4990 -> Index Only Scan using t2_pkey on t2 t2_2
4991 -> Index Only Scan using t1_pkey on t1 t1_2
4992 Index Cond: (id = t2_2.id)
4995 -> Seq Scan on t3 t3_2
4996 InitPlan 3 (returns $5)
4999 Merge Cond: (t1_4.id = t3_4.id)
5001 -> Index Only Scan using t2_pkey on t2 t2_4
5002 -> Index Only Scan using t1_pkey on t1 t1_4
5003 Index Cond: (id = t2_4.id)
5006 -> Seq Scan on t3 t3_4
5010 -> Index Only Scan using t1_pkey on t1 t1_1
5011 Index Cond: (id = $5)
5012 -> Index Only Scan using t2_pkey on t2 t2_1
5013 Index Cond: (id = $5)
5014 -> Seq Scan on t3 t3_1
5018 -> Index Only Scan using t1_pkey on t1 t1_3
5019 Index Cond: (id = $5)
5020 -> Index Only Scan using t2_pkey on t2 t2_3
5021 Index Cond: (id = $5)
5022 -> Seq Scan on t3 t3_3
5028 /*+HashJoin(t1_1 t3_1)MergeJoin(t1_3 t3_3)NestLoop(t1_2 t2_2)NestLoop(t1_4 t2_4)NestLoop(t1_5 t2_5)Leading(a t1_1 t1_2 t1_4 t1_5)*/
5029 EXPLAIN (COSTS false)
5031 SELECT max(t1_5.id) FROM t1 t1_5, t2 t2_5, t3 t3_5 WHERE t1_5.id = t2_5.id AND t2_5.id = t3_5.id
5034 SELECT max(t1_2.id) FROM t1 t1_2, t2 t2_2, t3 t3_2 WHERE t1_2.id = t2_2.id AND t2_2.id = t3_2.id
5035 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5036 SELECT t1_3.id FROM t1 t1_3, t2 t2_3, t3 t3_3 WHERE t1_3.id = t2_3.id AND t2_3.id = t3_3.id
5037 ) v1_1(id), c1_1 WHERE t1_1.id = t2_1.id AND t2_1.id = t3_1.id AND t2_1.id = v1_1.id AND v1_1.id = c1_1.id AND t1_1.id = (
5038 SELECT max(t1_4.id) FROM t1 t1_4, t2 t2_4, t3 t3_4 WHERE t1_4.id = t2_4.id AND t2_4.id = t3_4.id
5044 MergeJoin(t1_3 t3_3)
5048 Leading(a t1_1 t1_2 t1_4 t1_5)
5053 --------------------------------------------------------------------
5058 Merge Cond: (t1_5.id = t3_5.id)
5060 -> Index Only Scan using t2_pkey on t2 t2_5
5061 -> Index Only Scan using t1_pkey on t1 t1_5
5062 Index Cond: (id = t2_5.id)
5065 -> Seq Scan on t3 t3_5
5066 InitPlan 2 (returns $3)
5069 Merge Cond: (t1_2.id = t3_2.id)
5071 -> Index Only Scan using t2_pkey on t2 t2_2
5072 -> Index Only Scan using t1_pkey on t1 t1_2
5073 Index Cond: (id = t2_2.id)
5076 -> Seq Scan on t3 t3_2
5077 InitPlan 3 (returns $5)
5080 Merge Cond: (t1_4.id = t3_4.id)
5082 -> Index Only Scan using t2_pkey on t2 t2_4
5083 -> Index Only Scan using t1_pkey on t1 t1_4
5084 Index Cond: (id = t2_4.id)
5087 -> Seq Scan on t3 t3_4
5091 -> Index Only Scan using t1_pkey on t1 t1_1
5092 Index Cond: (id = $5)
5093 -> Index Only Scan using t2_pkey on t2 t2_1
5094 Index Cond: (id = $5)
5095 -> Seq Scan on t3 t3_1
5099 -> Index Only Scan using t1_pkey on t1 t1_3
5100 Index Cond: (id = $5)
5101 -> Index Only Scan using t2_pkey on t2 t2_3
5102 Index Cond: (id = $5)
5103 -> Seq Scan on t3 t3_3
5109 /*+HashJoin(t1_1 t3_1)MergeJoin(t1_3 t3_3)NestLoop(t1_2 t2_2)NestLoop(t1_4 t2_4)NestLoop(t1_5 t2_5)Leading(a t3_2 t3_5 t2_2 c1_1 t3_4 t3_3 t2_3 t2_4 t1_3 t2_5 t1_2 t3_1 t1_4 t2_1 t1_5 t1_1)*/
5110 EXPLAIN (COSTS false)
5112 SELECT max(t1_5.id) FROM t1 t1_5, t2 t2_5, t3 t3_5 WHERE t1_5.id = t2_5.id AND t2_5.id = t3_5.id
5115 SELECT max(t1_2.id) FROM t1 t1_2, t2 t2_2, t3 t3_2 WHERE t1_2.id = t2_2.id AND t2_2.id = t3_2.id
5116 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5117 SELECT t1_3.id FROM t1 t1_3, t2 t2_3, t3 t3_3 WHERE t1_3.id = t2_3.id AND t2_3.id = t3_3.id
5118 ) v1_1(id), c1_1 WHERE t1_1.id = t2_1.id AND t2_1.id = t3_1.id AND t2_1.id = v1_1.id AND v1_1.id = c1_1.id AND t1_1.id = (
5119 SELECT max(t1_4.id) FROM t1 t1_4, t2 t2_4, t3 t3_4 WHERE t1_4.id = t2_4.id AND t2_4.id = t3_4.id
5125 MergeJoin(t1_3 t3_3)
5129 Leading(a t3_2 t3_5 t2_2 c1_1 t3_4 t3_3 t2_3 t2_4 t1_3 t2_5 t1_2 t3_1 t1_4 t2_1 t1_5 t1_1)
5134 --------------------------------------------------------------------
5139 Merge Cond: (t1_5.id = t3_5.id)
5141 -> Index Only Scan using t2_pkey on t2 t2_5
5142 -> Index Only Scan using t1_pkey on t1 t1_5
5143 Index Cond: (id = t2_5.id)
5146 -> Seq Scan on t3 t3_5
5147 InitPlan 2 (returns $3)
5150 Merge Cond: (t1_2.id = t3_2.id)
5152 -> Index Only Scan using t2_pkey on t2 t2_2
5153 -> Index Only Scan using t1_pkey on t1 t1_2
5154 Index Cond: (id = t2_2.id)
5157 -> Seq Scan on t3 t3_2
5158 InitPlan 3 (returns $5)
5161 Merge Cond: (t1_4.id = t3_4.id)
5163 -> Index Only Scan using t2_pkey on t2 t2_4
5164 -> Index Only Scan using t1_pkey on t1 t1_4
5165 Index Cond: (id = t2_4.id)
5168 -> Seq Scan on t3 t3_4
5172 -> Index Only Scan using t1_pkey on t1 t1_1
5173 Index Cond: (id = $5)
5174 -> Index Only Scan using t2_pkey on t2 t2_1
5175 Index Cond: (id = $5)
5176 -> Seq Scan on t3 t3_1
5180 -> Index Only Scan using t1_pkey on t1 t1_3
5181 Index Cond: (id = $5)
5182 -> Index Only Scan using t2_pkey on t2 t2_3
5183 Index Cond: (id = $5)
5184 -> Seq Scan on t3 t3_3
5190 /*+HashJoin(t1_1 t3_1)MergeJoin(t1_3 t3_3)NestLoop(t1_2 t2_2)NestLoop(t1_4 t2_4)NestLoop(t1_5 t2_5)Leading(t3_5 t2_5 t1_5)Leading(t3_2 t2_2 t1_2)Leading(t3_4 t2_4 t1_4)Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)*/
5191 EXPLAIN (COSTS false)
5193 SELECT max(t1_5.id) FROM t1 t1_5, t2 t2_5, t3 t3_5 WHERE t1_5.id = t2_5.id AND t2_5.id = t3_5.id
5196 SELECT max(t1_2.id) FROM t1 t1_2, t2 t2_2, t3 t3_2 WHERE t1_2.id = t2_2.id AND t2_2.id = t3_2.id
5197 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5198 SELECT t1_3.id FROM t1 t1_3, t2 t2_3, t3 t3_3 WHERE t1_3.id = t2_3.id AND t2_3.id = t3_3.id
5199 ) v1_1(id), c1_1 WHERE t1_1.id = t2_1.id AND t2_1.id = t3_1.id AND t2_1.id = v1_1.id AND v1_1.id = c1_1.id AND t1_1.id = (
5200 SELECT max(t1_4.id) FROM t1 t1_4, t2 t2_4, t3 t3_4 WHERE t1_4.id = t2_4.id AND t2_4.id = t3_4.id
5204 MergeJoin(t1_3 t3_3)
5205 Leading(t3_5 t2_5 t1_5)
5206 Leading(t3_2 t2_2 t1_2)
5207 Leading(t3_4 t2_4 t1_4)
5208 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
5218 ------------------------------------------------------------------------------
5223 Merge Cond: (t2_5.id = t1_5.id)
5225 Merge Cond: (t2_5.id = t3_5.id)
5226 -> Index Only Scan using t2_pkey on t2 t2_5
5229 -> Seq Scan on t3 t3_5
5230 -> Index Only Scan using t1_pkey on t1 t1_5
5231 InitPlan 2 (returns $1)
5234 Merge Cond: (t2_2.id = t1_2.id)
5236 Merge Cond: (t2_2.id = t3_2.id)
5237 -> Index Only Scan using t2_pkey on t2 t2_2
5240 -> Seq Scan on t3 t3_2
5241 -> Index Only Scan using t1_pkey on t1 t1_2
5242 InitPlan 3 (returns $2)
5245 Merge Cond: (t2_4.id = t1_4.id)
5247 Merge Cond: (t2_4.id = t3_4.id)
5248 -> Index Only Scan using t2_pkey on t2 t2_4
5251 -> Seq Scan on t3 t3_4
5252 -> Index Only Scan using t1_pkey on t1 t1_4
5258 -> Index Only Scan using t1_pkey on t1 t1_3
5259 Index Cond: (id = $2)
5260 -> Index Only Scan using t2_pkey on t2 t2_3
5261 Index Cond: (id = $2)
5262 -> Seq Scan on t3 t3_3
5266 -> Seq Scan on t3 t3_1
5268 -> Index Only Scan using t2_pkey on t2 t2_1
5269 Index Cond: (id = $2)
5270 -> Index Only Scan using t1_pkey on t1 t1_1
5271 Index Cond: (id = $2)
5275 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5277 -------------------------------------------------
5279 Merge Cond: (t1.id = t2.id)
5281 Merge Cond: (t1.id = t1_1.id)
5282 -> Index Scan using t1_pkey on t1
5283 -> Index Scan using t1_pkey on t1 t1_1
5284 -> Index Scan using t2_pkey on t2
5287 /*+NestLoop(t1 t2)*/
5288 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5289 INFO: pg_hint_plan: hint syntax error at or near "NestLoop(t1 t2)"
5290 DETAIL: Relation name "t1" is ambiguous.
5299 -------------------------------------------------
5301 Merge Cond: (t1.id = t2.id)
5303 Merge Cond: (t1.id = t1_1.id)
5304 -> Index Scan using t1_pkey on t1
5305 -> Index Scan using t1_pkey on t1 t1_1
5306 -> Index Scan using t2_pkey on t2
5309 /*+Leading(t1 t2 t1)*/
5310 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5311 INFO: pg_hint_plan: hint syntax error at or near "Leading(t1 t2 t1)"
5312 DETAIL: Relation name "t1" is ambiguous.
5321 -------------------------------------------------
5323 Merge Cond: (t1.id = t2.id)
5325 Merge Cond: (t1.id = t1_1.id)
5326 -> Index Scan using t1_pkey on t1
5327 -> Index Scan using t1_pkey on t1 t1_1
5328 -> Index Scan using t2_pkey on t2
5331 -- identifier length test
5332 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5334 --------------------------------------------------------------------------------------------------------------
5336 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5338 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id)
5339 -> Index Scan using t1_pkey on t1 "123456789012345678901234567890123456789012345678901234567890123"
5340 -> Index Scan using t2_pkey on t2
5347 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5348 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5349 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5350 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5352 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5353 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5356 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5357 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5358 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5362 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5365 ----------------------------------------------------------------------------------------------------
5367 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5369 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5370 -> Index Scan using t2_pkey on t2
5372 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5373 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5380 Leading(1234567890123456789012345678901234567890123456789012345678901234 t2 t3)
5381 SeqScan(1234567890123456789012345678901234567890123456789012345678901234)
5382 MergeJoin(1234567890123456789012345678901234567890123456789012345678901234 t2)
5383 Set(1234567890123456789012345678901234567890123456789012345678901234 1)
5384 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5386 EXPLAIN (COSTS false) SELECT * FROM t1 "1234567890123456789012345678901234567890123456789012345678901234" JOIN t2 ON ("1234567890123456789012345678901234567890123456789012345678901234".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5387 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5388 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5389 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5390 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5391 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5392 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5393 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5396 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5397 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5398 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5399 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5403 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5406 ----------------------------------------------------------------------------------------------------
5408 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5410 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5411 -> Index Scan using t2_pkey on t2
5413 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5414 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5420 SET "123456789012345678901234567890123456789012345678901234567890123" TO 1;
5421 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5422 SET "1234567890123456789012345678901234567890123456789012345678901234" TO 1;
5423 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5424 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5425 SET cursor_tuple_fraction TO 1234567890123456789012345678901234567890123456789012345678901234;
5426 ERROR: 1.23457e+63 is outside the valid range for parameter "cursor_tuple_fraction" (0 .. 1)
5428 /*+ Set(enable_seqscan 100)Set(seq_page_cost on)*/
5429 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
5430 INFO: parameter "enable_seqscan" requires a Boolean value
5431 INFO: parameter "seq_page_cost" requires a numeric value
5437 Set(enable_seqscan 100)
5438 Set(seq_page_cost on)
5441 --------------------------------------
5443 Merge Cond: (t1.id = t2.id)
5444 -> Index Scan using t1_pkey on t1
5445 -> Index Scan using t2_pkey on t2
5448 -- debug log of candidate index to use IndexScan
5449 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5451 ----------------------------------------------------------------------------------------
5452 Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
5453 Index Cond: (id = 1)
5456 /*+IndexScan(t5 t5_id2)*/
5457 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5458 LOG: available indexes for IndexScan(t5): t5_id2
5461 IndexScan(t5 t5_id2)
5467 -------------------------------
5468 Index Scan using t5_id2 on t5
5469 Index Cond: (id = 1)
5472 /*+IndexScan(t5 no_exist)*/
5473 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5474 LOG: available indexes for IndexScan(t5):
5477 IndexScan(t5 no_exist)
5483 --------------------
5488 /*+IndexScan(t5 t5_id1 t5_id2)*/
5489 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5490 LOG: available indexes for IndexScan(t5): t5_id2 t5_id1
5493 IndexScan(t5 t5_id1 t5_id2)
5499 -------------------------------
5500 Index Scan using t5_id2 on t5
5501 Index Cond: (id = 1)
5504 /*+IndexScan(t5 no_exist t5_id2)*/
5505 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5506 LOG: available indexes for IndexScan(t5): t5_id2
5509 IndexScan(t5 no_exist t5_id2)
5515 -------------------------------
5516 Index Scan using t5_id2 on t5
5517 Index Cond: (id = 1)
5520 /*+IndexScan(t5 no_exist5 no_exist2)*/
5521 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5522 LOG: available indexes for IndexScan(t5):
5525 IndexScan(t5 no_exist5 no_exist2)
5531 --------------------
5537 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5539 --------------------------------------------------------
5541 Hash Cond: (t3.val = t2.val)
5545 Hash Cond: (t2.id = t1.id)
5548 -> Index Scan using t1_pkey on t1
5549 Index Cond: (id < 10)
5553 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5554 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1))"
5555 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5564 --------------------------------------------------------
5566 Hash Cond: (t3.val = t2.val)
5570 Hash Cond: (t2.id = t1.id)
5573 -> Index Scan using t1_pkey on t1
5574 Index Cond: (id < 10)
5577 /*+Leading((t1 t2))*/
5578 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5587 --------------------------------------------
5589 Join Filter: (t2.val = t3.val)
5591 Hash Cond: (t1.id = t2.id)
5592 -> Index Scan using t1_pkey on t1
5593 Index Cond: (id < 10)
5599 /*+Leading((t1 t2 t3))*/
5600 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5601 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1 t2 t3))"
5602 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5611 --------------------------------------------------------
5613 Hash Cond: (t3.val = t2.val)
5617 Hash Cond: (t2.id = t1.id)
5620 -> Index Scan using t1_pkey on t1
5621 Index Cond: (id < 10)
5624 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5626 --------------------------------------------
5628 Hash Cond: (t2.id = t1.id)
5631 -> Index Scan using t1_pkey on t1
5632 Index Cond: (id < 10)
5635 /*+Leading((t1 t2))*/
5636 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5645 --------------------------------------
5647 Hash Cond: (t1.id = t2.id)
5648 -> Index Scan using t1_pkey on t1
5649 Index Cond: (id < 10)
5654 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5656 --------------------------------------------------------
5658 Hash Cond: (t3.val = t2.val)
5662 Hash Cond: (t2.id = t1.id)
5665 -> Index Scan using t1_pkey on t1
5666 Index Cond: (id < 10)
5669 /*+Leading(((t1 t2) t3))*/
5670 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5673 Leading(((t1 t2) t3))
5679 --------------------------------------------
5681 Join Filter: (t2.val = t3.val)
5683 Hash Cond: (t1.id = t2.id)
5684 -> Index Scan using t1_pkey on t1
5685 Index Cond: (id < 10)
5691 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t3.id = t4.id AND t1.val = t3.val AND t1.id < 10;
5693 --------------------------------------------------------
5696 Merge Cond: (t3.id = t4.id)
5698 Join Filter: (t1.val = t3.val)
5699 -> Index Scan using t3_pkey on t3
5701 -> Index Scan using t1_pkey on t1
5702 Index Cond: (id < 10)
5706 -> Index Scan using t2_pkey on t2
5707 Index Cond: (id = t1.id)
5710 /*+Leading((((t1 t2) t3) t4))*/
5711 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t3.id = t4.id AND t1.val = t3.val AND t1.id < 10;
5714 Leading((((t1 t2) t3) t4))
5720 --------------------------------------------------
5723 Join Filter: (t1.val = t3.val)
5725 Hash Cond: (t1.id = t2.id)
5726 -> Index Scan using t1_pkey on t1
5727 Index Cond: (id < 10)
5731 -> Index Scan using t4_pkey on t4
5732 Index Cond: (id = t3.id)
5735 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5737 --------------------------------------------------------
5739 Hash Cond: (t3.val = t2.val)
5743 Hash Cond: (t2.id = t1.id)
5746 -> Index Scan using t1_pkey on t1
5747 Index Cond: (id < 10)
5750 /*+Leading(((t1 t2) t3))*/
5751 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5754 Leading(((t1 t2) t3))
5760 --------------------------------------------
5762 Join Filter: (t2.val = t3.val)
5764 Hash Cond: (t1.id = t2.id)
5765 -> Index Scan using t1_pkey on t1
5766 Index Cond: (id < 10)
5772 /*+Leading((t1 (t2 t3)))*/
5773 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5776 Leading((t1 (t2 t3)))
5782 --------------------------------------------
5784 Hash Cond: (t1.id = t2.id)
5785 -> Index Scan using t1_pkey on t1
5786 Index Cond: (id < 10)
5789 Hash Cond: (t2.val = t3.val)
5795 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t3.id = t4.id AND t1.val = t3.val AND t1.id < 10;
5797 --------------------------------------------------------
5800 Merge Cond: (t3.id = t4.id)
5802 Join Filter: (t1.val = t3.val)
5803 -> Index Scan using t3_pkey on t3
5805 -> Index Scan using t1_pkey on t1
5806 Index Cond: (id < 10)
5810 -> Index Scan using t2_pkey on t2
5811 Index Cond: (id = t1.id)
5814 /*+Leading(((t1 t2) (t3 t4)))*/
5815 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t3.id = t4.id AND t1.val = t3.val AND t1.id < 10;
5818 Leading(((t1 t2) (t3 t4)))
5824 --------------------------------------------
5826 Join Filter: (t1.val = t3.val)
5828 Hash Cond: (t1.id = t2.id)
5829 -> Index Scan using t1_pkey on t1
5830 Index Cond: (id < 10)
5834 Merge Cond: (t3.id = t4.id)
5835 -> Index Scan using t3_pkey on t3
5841 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < ( SELECT t1_2.id FROM t1 t1_2, t2 t2_2 WHERE t1_2.id = t2_2.id AND t2_2.val > 100 ORDER BY t1_2.id LIMIT 1);
5843 --------------------------------------------------------------------
5845 Hash Cond: (t2.val = t3.val)
5846 InitPlan 1 (returns $1)
5851 -> Index Scan using t2_val on t2 t2_2
5852 Index Cond: (val > 100)
5853 -> Index Only Scan using t1_pkey on t1 t1_2
5854 Index Cond: (id = t2_2.id)
5856 Merge Cond: (t1.id = t2.id)
5857 -> Index Scan using t1_pkey on t1
5858 Index Cond: (id < $1)
5859 -> Index Scan using t2_pkey on t2
5864 /*+Leading(((t1 t2) t3)) Leading(((t3 t1) t2))*/
5865 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t1.val = t3.val AND t1.id < ( SELECT t1_2.id FROM t1 t1_2, t2 t2_2 WHERE t1_2.id = t2_2.id AND t2_2.val > 100 ORDER BY t1_2.id LIMIT 1);
5866 INFO: pg_hint_plan: hint syntax error at or near "Leading(((t1 t2) t3)) Leading(((t3 t1) t2))"
5867 DETAIL: Conflict leading hint.
5870 Leading(((t3 t1) t2))
5873 Leading(((t1 t2) t3))
5877 --------------------------------------------------------------------
5879 Hash Cond: (t1.id = t2.id)
5880 InitPlan 1 (returns $1)
5885 -> Index Scan using t2_val on t2 t2_2
5886 Index Cond: (val > 100)
5887 -> Index Only Scan using t1_pkey on t1 t1_2
5888 Index Cond: (id = t2_2.id)
5890 Hash Cond: (t3.val = t1.val)
5893 -> Index Scan using t1_pkey on t1
5894 Index Cond: (id < $1)
5899 /*+Leading(((t1 t2) t3)) Leading((t1_2 t2_2))*/
5900 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < ( SELECT t1_2.id FROM t1 t1_2, t2 t2_2 WHERE t1_2.id = t2_2.id AND t2_2.val > 100 ORDER BY t1_2.id LIMIT 1);
5903 Leading(((t1 t2) t3))
5904 Leading((t1_2 t2_2))
5910 --------------------------------------------------------------
5912 Hash Cond: (t2.val = t3.val)
5913 InitPlan 1 (returns $0)
5916 Merge Cond: (t1_2.id = t2_2.id)
5917 -> Index Only Scan using t1_pkey on t1 t1_2
5920 -> Index Scan using t2_val on t2 t2_2
5921 Index Cond: (val > 100)
5923 Merge Cond: (t1.id = t2.id)
5924 -> Index Scan using t1_pkey on t1
5925 Index Cond: (id < $0)
5926 -> Index Scan using t2_pkey on t2
5931 /*+Leading(((((t1 t2) t3) t1_2) t2_2))*/
5932 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < ( SELECT t1_2.id FROM t1 t1_2, t2 t2_2 WHERE t1_2.id = t2_2.id AND t2_2.val > 100 ORDER BY t1_2.id LIMIT 1);
5936 Leading(((((t1 t2) t3) t1_2) t2_2))
5941 --------------------------------------------------------------------
5943 Hash Cond: (t2.val = t3.val)
5944 InitPlan 1 (returns $1)
5949 -> Index Scan using t2_val on t2 t2_2
5950 Index Cond: (val > 100)
5951 -> Index Only Scan using t1_pkey on t1 t1_2
5952 Index Cond: (id = t2_2.id)
5954 Merge Cond: (t1.id = t2.id)
5955 -> Index Scan using t1_pkey on t1
5956 Index Cond: (id < $1)
5957 -> Index Scan using t2_pkey on t2
5962 -- Specified outer/inner leading hint and join method hint at the same time
5963 /*+Leading(((t1 t2) t3))*/
5964 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5967 Leading(((t1 t2) t3))
5973 --------------------------------------------
5975 Join Filter: (t2.val = t3.val)
5977 Hash Cond: (t1.id = t2.id)
5978 -> Index Scan using t1_pkey on t1
5979 Index Cond: (id < 10)
5985 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2)*/
5986 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5990 Leading(((t1 t2) t3))
5996 --------------------------------------------
5998 Join Filter: (t2.val = t3.val)
6000 Merge Cond: (t1.id = t2.id)
6001 -> Index Scan using t1_pkey on t1
6002 Index Cond: (id < 10)
6003 -> Index Scan using t2_pkey on t2
6007 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3)*/
6008 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6012 Leading(((t1 t2) t3))
6018 --------------------------------------------------
6020 Merge Cond: (t2.val = t3.val)
6024 Hash Cond: (t1.id = t2.id)
6025 -> Index Scan using t1_pkey on t1
6026 Index Cond: (id < 10)
6034 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t3)*/
6035 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6038 Leading(((t1 t2) t3))
6045 --------------------------------------------
6047 Join Filter: (t2.val = t3.val)
6049 Hash Cond: (t1.id = t2.id)
6050 -> Index Scan using t1_pkey on t1
6051 Index Cond: (id < 10)
6057 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t3.id = t4.id AND t1.val = t3.val AND t1.id < 10;
6059 --------------------------------------------------------
6062 Merge Cond: (t3.id = t4.id)
6064 Join Filter: (t1.val = t3.val)
6065 -> Index Scan using t3_pkey on t3
6067 -> Index Scan using t1_pkey on t1
6068 Index Cond: (id < 10)
6072 -> Index Scan using t2_pkey on t2
6073 Index Cond: (id = t1.id)
6076 /*+Leading(((t1 t2) t3)) MergeJoin(t3 t4)*/
6077 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t3.id = t4.id AND t1.val = t3.val AND t1.id < 10;
6080 Leading(((t1 t2) t3))
6087 --------------------------------------------------
6090 Join Filter: (t1.val = t3.val)
6092 Hash Cond: (t1.id = t2.id)
6093 -> Index Scan using t1_pkey on t1
6094 Index Cond: (id < 10)
6098 -> Index Scan using t4_pkey on t4
6099 Index Cond: (id = t3.id)
6102 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3 t4)*/
6103 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t3.id = t4.id AND t1.val = t3.val AND t1.id < 10;
6106 MergeJoin(t1 t2 t3 t4)
6107 Leading(((t1 t2) t3))
6113 --------------------------------------------------------
6115 Merge Cond: (t3.id = t4.id)
6119 Join Filter: (t1.val = t3.val)
6121 Hash Cond: (t1.id = t2.id)
6122 -> Index Scan using t1_pkey on t1
6123 Index Cond: (id < 10)
6132 /*+ Leading ( ( t1 ( t2 t3 ) ) ) */
6133 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6136 Leading((t1 (t2 t3)))
6142 --------------------------------------------
6144 Hash Cond: (t1.id = t2.id)
6145 -> Index Scan using t1_pkey on t1
6146 Index Cond: (id < 10)
6149 Hash Cond: (t2.val = t3.val)
6155 /*+Leading((t1(t2 t3)))*/
6156 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6159 Leading((t1 (t2 t3)))
6165 --------------------------------------------
6167 Hash Cond: (t1.id = t2.id)
6168 -> Index Scan using t1_pkey on t1
6169 Index Cond: (id < 10)
6172 Hash Cond: (t2.val = t3.val)
6178 /*+Leading(("t1(t2" "t3)"))*/
6179 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6183 Leading(("t1(t2" "t3)"))
6188 --------------------------------------------------------
6190 Hash Cond: (t3.val = t2.val)
6194 Hash Cond: (t2.id = t1.id)
6197 -> Index Scan using t1_pkey on t1
6198 Index Cond: (id < 10)
6201 /*+ Leading ( ( ( t1 t2 ) t3 ) ) */
6202 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6205 Leading(((t1 t2) t3))
6211 --------------------------------------------
6213 Join Filter: (t2.val = t3.val)
6215 Hash Cond: (t1.id = t2.id)
6216 -> Index Scan using t1_pkey on t1
6217 Index Cond: (id < 10)
6223 /*+Leading(((t1 t2)t3))*/
6224 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6227 Leading(((t1 t2) t3))
6233 --------------------------------------------
6235 Join Filter: (t2.val = t3.val)
6237 Hash Cond: (t1.id = t2.id)
6238 -> Index Scan using t1_pkey on t1
6239 Index Cond: (id < 10)
6245 /*+Leading(("(t1" "t2)t3"))*/
6246 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6250 Leading(("(t1" "t2)t3"))
6255 --------------------------------------------------------
6257 Hash Cond: (t3.val = t2.val)
6261 Hash Cond: (t2.id = t1.id)
6264 -> Index Scan using t1_pkey on t1
6265 Index Cond: (id < 10)
6268 /*+Leading((t1(t2(t3(t4 t5)))))*/
6269 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4, t5 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id AND t1.id = t5.id;
6272 Leading((t1 (t2 (t3 (t4 t5)))))
6278 ----------------------------------------------------------------------------------------------------------------------------------
6280 Merge Cond: (t1.id = t2.id)
6281 -> Index Scan using t1_pkey on t1
6284 Merge Cond: (t2.id = t3.id)
6285 -> Index Scan using t2_pkey on t2
6288 Merge Cond: (t3.id = t4.id)
6289 -> Index Scan using t3_pkey on t3
6292 Merge Cond: (t4.id = t5.id)
6293 -> Index Scan using t4_pkey on t4
6294 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6297 /*+Leading((t5(t4(t3(t2 t1)))))*/
6298 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4, t5 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id AND t1.id = t5.id;
6301 Leading((t5 (t4 (t3 (t2 t1)))))
6307 --------------------------------------------------------------------------
6309 Hash Cond: (t5.id = t1.id)
6313 Merge Cond: (t4.id = t1.id)
6319 Merge Cond: (t3.id = t1.id)
6325 Merge Cond: (t2.id = t1.id)
6326 -> Index Scan using t2_pkey on t2
6327 -> Index Scan using t1_pkey on t1
6330 /*+Leading(((((t1 t2)t3)t4)t5))*/
6331 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4, t5 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id AND t1.id = t5.id;
6334 Leading(((((t1 t2) t3) t4) t5))
6340 ----------------------------------------------------------------------------------------------
6343 Merge Cond: (t1.id = t4.id)
6345 Merge Cond: (t1.id = t3.id)
6347 Merge Cond: (t1.id = t2.id)
6348 -> Index Scan using t1_pkey on t1
6349 -> Index Scan using t2_pkey on t2
6356 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6357 Index Cond: (id = t1.id)
6360 /*+Leading(((((t5 t4)t3)t2)t1))*/
6361 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4, t5 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id AND t1.id = t5.id;
6364 Leading(((((t5 t4) t3) t2) t1))
6370 ----------------------------------------------------------------------------------------------------------------
6372 Join Filter: (t2.id = t1.id)
6374 Join Filter: (t3.id = t2.id)
6376 Merge Cond: (t4.id = t3.id)
6378 Merge Cond: (t5.id = t4.id)
6379 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6383 -> Index Scan using t3_pkey on t3
6384 -> Index Scan using t2_pkey on t2
6385 Index Cond: (id = t5.id)
6386 -> Index Scan using t1_pkey on t1
6387 Index Cond: (id = t5.id)
6390 /*+Leading(((t1 t2)(t3(t4 t5))))*/
6391 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4, t5 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id AND t1.id = t5.id;
6394 Leading(((t1 t2) (t3 (t4 t5))))
6400 ----------------------------------------------------------------------------------------------------------------------
6402 Merge Cond: (t1.id = t3.id)
6404 Merge Cond: (t1.id = t2.id)
6405 -> Index Scan using t1_pkey on t1
6406 -> Index Scan using t2_pkey on t2
6409 Merge Cond: (t3.id = t4.id)
6410 -> Index Scan using t3_pkey on t3
6413 Merge Cond: (t4.id = t5.id)
6414 -> Index Scan using t4_pkey on t4
6415 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6418 /*+Leading(((t5 t4)(t3(t2 t1))))*/
6419 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4, t5 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id AND t1.id = t5.id;
6422 Leading(((t5 t4) (t3 (t2 t1))))
6428 ----------------------------------------------------------------------------------------------------
6430 Merge Cond: (t4.id = t1.id)
6432 Merge Cond: (t5.id = t4.id)
6433 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6439 Merge Cond: (t3.id = t1.id)
6445 Merge Cond: (t2.id = t1.id)
6446 -> Index Scan using t2_pkey on t2
6447 -> Index Scan using t1_pkey on t1
6450 /*+Leading((((t1 t2)t3)(t4 t5)))*/
6451 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4, t5 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id AND t1.id = t5.id;
6454 Leading((((t1 t2) t3) (t4 t5)))
6460 ----------------------------------------------------------------------------------------------------------
6462 Merge Cond: (t1.id = t4.id)
6464 Merge Cond: (t1.id = t3.id)
6466 Merge Cond: (t1.id = t2.id)
6467 -> Index Scan using t1_pkey on t1
6468 -> Index Scan using t2_pkey on t2
6474 Merge Cond: (t4.id = t5.id)
6475 -> Index Scan using t4_pkey on t4
6476 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6479 /*+Leading((((t5 t4)t3)(t2 t1)))*/
6480 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4, t5 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id AND t1.id = t5.id;
6483 Leading((((t5 t4) t3) (t2 t1)))
6489 ----------------------------------------------------------------------------------------------------------
6491 Merge Cond: (t3.id = t1.id)
6493 Merge Cond: (t4.id = t3.id)
6495 Merge Cond: (t5.id = t4.id)
6496 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6500 -> Index Scan using t3_pkey on t3
6503 Merge Cond: (t2.id = t1.id)
6504 -> Index Scan using t2_pkey on t2
6505 -> Index Scan using t1_pkey on t1
6508 -- inherite table test to specify the index's name
6509 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6511 -----------------------------------------------------------------------
6514 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6515 -> Seq Scan on p2_c1
6516 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6517 -> Seq Scan on p2_c1_c1
6518 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6519 -> Seq Scan on p2_c1_c2
6520 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6523 /*+IndexScan(p2 p2_pkey)*/
6524 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6525 LOG: available indexes for IndexScan(p2): p2_pkey
6526 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6527 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6528 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6531 IndexScan(p2 p2_pkey)
6537 --------------------------------------------------
6539 -> Index Scan using p2_pkey on p2
6540 Index Cond: ((id >= 50) AND (id <= 51))
6541 Filter: (ctid = '(1,1)'::tid)
6542 -> Index Scan using p2_c1_pkey on p2_c1
6543 Index Cond: ((id >= 50) AND (id <= 51))
6544 Filter: (ctid = '(1,1)'::tid)
6545 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6546 Index Cond: ((id >= 50) AND (id <= 51))
6547 Filter: (ctid = '(1,1)'::tid)
6548 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6549 Index Cond: ((id >= 50) AND (id <= 51))
6550 Filter: (ctid = '(1,1)'::tid)
6553 /*+IndexScan(p2 p2_id_val_idx)*/
6554 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6555 LOG: available indexes for IndexScan(p2): p2_id_val_idx
6556 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6557 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
6558 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
6561 IndexScan(p2 p2_id_val_idx)
6567 --------------------------------------------------------
6569 -> Index Scan using p2_id_val_idx on p2
6570 Index Cond: ((id >= 50) AND (id <= 51))
6571 Filter: (ctid = '(1,1)'::tid)
6572 -> Index Scan using p2_c1_id_val_idx on p2_c1
6573 Index Cond: ((id >= 50) AND (id <= 51))
6574 Filter: (ctid = '(1,1)'::tid)
6575 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
6576 Index Cond: ((id >= 50) AND (id <= 51))
6577 Filter: (ctid = '(1,1)'::tid)
6578 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
6579 Index Cond: ((id >= 50) AND (id <= 51))
6580 Filter: (ctid = '(1,1)'::tid)
6583 /*+IndexScan(p2 p2_val_id_idx)*/
6584 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6585 LOG: available indexes for IndexScan(p2): p2_val_id_idx
6586 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_id_idx
6587 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_id_idx
6588 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_id_idx
6591 IndexScan(p2 p2_val_id_idx)
6597 --------------------------------------------------------
6599 -> Index Scan using p2_val_id_idx on p2
6600 Index Cond: ((id >= 50) AND (id <= 51))
6601 Filter: (ctid = '(1,1)'::tid)
6602 -> Index Scan using p2_c1_val_id_idx on p2_c1
6603 Index Cond: ((id >= 50) AND (id <= 51))
6604 Filter: (ctid = '(1,1)'::tid)
6605 -> Index Scan using p2_c1_c1_val_id_idx on p2_c1_c1
6606 Index Cond: ((id >= 50) AND (id <= 51))
6607 Filter: (ctid = '(1,1)'::tid)
6608 -> Index Scan using p2_c1_c2_val_id_idx on p2_c1_c2
6609 Index Cond: ((id >= 50) AND (id <= 51))
6610 Filter: (ctid = '(1,1)'::tid)
6613 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6615 -----------------------------------------------------------------------------------------
6618 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6619 -> Seq Scan on p2_c1
6620 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6621 -> Seq Scan on p2_c2
6622 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6623 -> Seq Scan on p2_c3
6624 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6625 -> Seq Scan on p2_c4
6626 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6627 -> Seq Scan on p2_c1_c1
6628 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6629 -> Seq Scan on p2_c1_c2
6630 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6631 -> Seq Scan on p2_c3_c1
6632 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6633 -> Seq Scan on p2_c3_c2
6634 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6637 -- Inhibit parallel exection to avoid interfaring the hint
6638 set max_parallel_workers_per_gather to 0;
6639 /*+ IndexScan(p2 p2_val)*/
6640 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6641 LOG: available indexes for IndexScan(p2):
6642 LOG: available indexes for IndexScan(p2_c1):
6643 LOG: available indexes for IndexScan(p2_c2):
6644 LOG: available indexes for IndexScan(p2_c3):
6645 LOG: available indexes for IndexScan(p2_c4):
6646 LOG: available indexes for IndexScan(p2_c1_c1):
6647 LOG: available indexes for IndexScan(p2_c1_c2):
6648 LOG: available indexes for IndexScan(p2_c3_c1):
6649 LOG: available indexes for IndexScan(p2_c3_c2):
6652 IndexScan(p2 p2_val)
6658 -----------------------------------------------------------------------------------------
6661 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6662 -> Seq Scan on p2_c1
6663 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6664 -> Seq Scan on p2_c2
6665 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6666 -> Seq Scan on p2_c3
6667 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6668 -> Seq Scan on p2_c4
6669 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6670 -> Seq Scan on p2_c1_c1
6671 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6672 -> Seq Scan on p2_c1_c2
6673 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6674 -> Seq Scan on p2_c3_c1
6675 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6676 -> Seq Scan on p2_c3_c2
6677 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6680 /*+IndexScan(p2 p2_pkey)*/
6681 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6682 LOG: available indexes for IndexScan(p2): p2_pkey
6683 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6684 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6685 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6688 IndexScan(p2 p2_pkey)
6694 --------------------------------------------------
6696 -> Index Scan using p2_pkey on p2
6697 Index Cond: ((id >= 50) AND (id <= 51))
6698 Filter: (ctid = '(1,1)'::tid)
6699 -> Index Scan using p2_c1_pkey on p2_c1
6700 Index Cond: ((id >= 50) AND (id <= 51))
6701 Filter: (ctid = '(1,1)'::tid)
6702 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6703 Index Cond: ((id >= 50) AND (id <= 51))
6704 Filter: (ctid = '(1,1)'::tid)
6705 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6706 Index Cond: ((id >= 50) AND (id <= 51))
6707 Filter: (ctid = '(1,1)'::tid)
6710 /*+IndexScan(p2 p2_id2_val)*/
6711 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6712 LOG: available indexes for IndexScan(p2): p2_id2_val
6713 LOG: available indexes for IndexScan(p2_c1): p2_c1_id2_val
6714 LOG: available indexes for IndexScan(p2_c1_c1):
6715 LOG: available indexes for IndexScan(p2_c1_c2):
6718 IndexScan(p2 p2_id2_val)
6724 -----------------------------------------------------------------------
6726 -> Index Scan using p2_id2_val on p2
6727 Index Cond: ((id >= 50) AND (id <= 51))
6728 Filter: (ctid = '(1,1)'::tid)
6729 -> Index Scan using p2_c1_id2_val on p2_c1
6730 Index Cond: ((id >= 50) AND (id <= 51))
6731 Filter: (ctid = '(1,1)'::tid)
6732 -> Seq Scan on p2_c1_c1
6733 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6734 -> Seq Scan on p2_c1_c2
6735 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6738 /*+IndexScan(p2 p2_val2_id)*/
6739 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6740 LOG: available indexes for IndexScan(p2): p2_val2_id
6741 LOG: available indexes for IndexScan(p2_c1):
6742 LOG: available indexes for IndexScan(p2_c1_c1):
6743 LOG: available indexes for IndexScan(p2_c1_c2):
6746 IndexScan(p2 p2_val2_id)
6752 -----------------------------------------------------------------------
6754 -> Index Scan using p2_val2_id on p2
6755 Index Cond: ((id >= 50) AND (id <= 51))
6756 Filter: (ctid = '(1,1)'::tid)
6757 -> Seq Scan on p2_c1
6758 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6759 -> Seq Scan on p2_c1_c1
6760 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6761 -> Seq Scan on p2_c1_c2
6762 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6765 /*+IndexScan(p2 p2_pkey)*/
6766 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6767 LOG: available indexes for IndexScan(p2): p2_pkey
6768 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6769 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6770 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6773 IndexScan(p2 p2_pkey)
6779 --------------------------------------------------
6781 -> Index Scan using p2_pkey on p2
6782 Index Cond: ((id >= 50) AND (id <= 51))
6783 Filter: (ctid = '(1,1)'::tid)
6784 -> Index Scan using p2_c1_pkey on p2_c1
6785 Index Cond: ((id >= 50) AND (id <= 51))
6786 Filter: (ctid = '(1,1)'::tid)
6787 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6788 Index Cond: ((id >= 50) AND (id <= 51))
6789 Filter: (ctid = '(1,1)'::tid)
6790 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6791 Index Cond: ((id >= 50) AND (id <= 51))
6792 Filter: (ctid = '(1,1)'::tid)
6795 /*+IndexScan(p2 p2_c1_id_val_idx)*/
6796 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6797 LOG: available indexes for IndexScan(p2):
6798 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6799 LOG: available indexes for IndexScan(p2_c1_c1):
6800 LOG: available indexes for IndexScan(p2_c1_c2):
6803 IndexScan(p2 p2_c1_id_val_idx)
6809 -----------------------------------------------------------------------
6812 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6813 -> Index Scan using p2_c1_id_val_idx on p2_c1
6814 Index Cond: ((id >= 50) AND (id <= 51))
6815 Filter: (ctid = '(1,1)'::tid)
6816 -> Seq Scan on p2_c1_c1
6817 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6818 -> Seq Scan on p2_c1_c2
6819 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6822 /*+IndexScan(p2 no_exist)*/
6823 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6824 LOG: available indexes for IndexScan(p2):
6825 LOG: available indexes for IndexScan(p2_c1):
6826 LOG: available indexes for IndexScan(p2_c1_c1):
6827 LOG: available indexes for IndexScan(p2_c1_c2):
6830 IndexScan(p2 no_exist)
6836 -----------------------------------------------------------------------
6839 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6840 -> Seq Scan on p2_c1
6841 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6842 -> Seq Scan on p2_c1_c1
6843 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6844 -> Seq Scan on p2_c1_c2
6845 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6848 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx)*/
6849 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6850 LOG: available indexes for IndexScan(p2): p2_pkey
6851 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6852 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6853 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6856 IndexScan(p2 p2_pkey p2_c1_id_val_idx)
6862 --------------------------------------------------
6864 -> Index Scan using p2_pkey on p2
6865 Index Cond: ((id >= 50) AND (id <= 51))
6866 Filter: (ctid = '(1,1)'::tid)
6867 -> Index Scan using p2_c1_id_val_idx on p2_c1
6868 Index Cond: ((id >= 50) AND (id <= 51))
6869 Filter: (ctid = '(1,1)'::tid)
6870 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6871 Index Cond: ((id >= 50) AND (id <= 51))
6872 Filter: (ctid = '(1,1)'::tid)
6873 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6874 Index Cond: ((id >= 50) AND (id <= 51))
6875 Filter: (ctid = '(1,1)'::tid)
6878 /*+IndexScan(p2 p2_pkey no_exist)*/
6879 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6880 LOG: available indexes for IndexScan(p2): p2_pkey
6881 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6882 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6883 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6886 IndexScan(p2 p2_pkey no_exist)
6892 --------------------------------------------------
6894 -> Index Scan using p2_pkey on p2
6895 Index Cond: ((id >= 50) AND (id <= 51))
6896 Filter: (ctid = '(1,1)'::tid)
6897 -> Index Scan using p2_c1_pkey on p2_c1
6898 Index Cond: ((id >= 50) AND (id <= 51))
6899 Filter: (ctid = '(1,1)'::tid)
6900 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6901 Index Cond: ((id >= 50) AND (id <= 51))
6902 Filter: (ctid = '(1,1)'::tid)
6903 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6904 Index Cond: ((id >= 50) AND (id <= 51))
6905 Filter: (ctid = '(1,1)'::tid)
6908 /*+IndexScan(p2 p2_c1_id_val_idx no_exist)*/
6909 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6910 LOG: available indexes for IndexScan(p2):
6911 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6912 LOG: available indexes for IndexScan(p2_c1_c1):
6913 LOG: available indexes for IndexScan(p2_c1_c2):
6916 IndexScan(p2 p2_c1_id_val_idx no_exist)
6922 -----------------------------------------------------------------------
6925 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6926 -> Index Scan using p2_c1_id_val_idx on p2_c1
6927 Index Cond: ((id >= 50) AND (id <= 51))
6928 Filter: (ctid = '(1,1)'::tid)
6929 -> Seq Scan on p2_c1_c1
6930 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6931 -> Seq Scan on p2_c1_c2
6932 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6935 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)*/
6936 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6937 LOG: available indexes for IndexScan(p2): p2_pkey
6938 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6939 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6940 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6943 IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)
6949 --------------------------------------------------
6951 -> Index Scan using p2_pkey on p2
6952 Index Cond: ((id >= 50) AND (id <= 51))
6953 Filter: (ctid = '(1,1)'::tid)
6954 -> Index Scan using p2_c1_id_val_idx on p2_c1
6955 Index Cond: ((id >= 50) AND (id <= 51))
6956 Filter: (ctid = '(1,1)'::tid)
6957 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6958 Index Cond: ((id >= 50) AND (id <= 51))
6959 Filter: (ctid = '(1,1)'::tid)
6960 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6961 Index Cond: ((id >= 50) AND (id <= 51))
6962 Filter: (ctid = '(1,1)'::tid)
6965 /*+IndexScan(p2 p2_val_idx)*/
6966 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6967 LOG: available indexes for IndexScan(p2): p2_val_idx
6968 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx
6969 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx
6970 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx
6971 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx
6972 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx
6973 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx
6974 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx
6975 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx
6978 IndexScan(p2 p2_val_idx)
6984 -------------------------------------------------------------------
6986 -> Index Scan using p2_val_idx on p2
6987 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6988 Filter: (ctid = '(1,1)'::tid)
6989 -> Index Scan using p2_c1_val_idx on p2_c1
6990 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6991 Filter: (ctid = '(1,1)'::tid)
6992 -> Index Scan using p2_c2_val_idx on p2_c2
6993 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6994 Filter: (ctid = '(1,1)'::tid)
6995 -> Index Scan using p2_c3_val_idx on p2_c3
6996 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6997 Filter: (ctid = '(1,1)'::tid)
6998 -> Index Scan using p2_c4_val_idx on p2_c4
6999 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7000 Filter: (ctid = '(1,1)'::tid)
7001 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
7002 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7003 Filter: (ctid = '(1,1)'::tid)
7004 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
7005 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7006 Filter: (ctid = '(1,1)'::tid)
7007 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
7008 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7009 Filter: (ctid = '(1,1)'::tid)
7010 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
7011 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7012 Filter: (ctid = '(1,1)'::tid)
7015 /*+IndexScan(p2 p2_expr)*/
7016 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7017 LOG: available indexes for IndexScan(p2): p2_expr
7018 LOG: available indexes for IndexScan(p2_c1): p2_c1_expr_idx
7019 LOG: available indexes for IndexScan(p2_c2): p2_c2_expr_idx
7020 LOG: available indexes for IndexScan(p2_c3): p2_c3_expr_idx
7021 LOG: available indexes for IndexScan(p2_c4): p2_c4_expr_idx
7022 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_expr_idx
7023 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_expr_idx
7024 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_expr_idx
7025 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_expr_idx
7028 IndexScan(p2 p2_expr)
7034 -----------------------------------------------------------------------------------------
7037 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7038 -> Seq Scan on p2_c1
7039 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7040 -> Seq Scan on p2_c2
7041 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7042 -> Seq Scan on p2_c3
7043 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7044 -> Seq Scan on p2_c4
7045 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7046 -> Seq Scan on p2_c1_c1
7047 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7048 -> Seq Scan on p2_c1_c2
7049 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7050 -> Seq Scan on p2_c3_c1
7051 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7052 -> Seq Scan on p2_c3_c2
7053 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7056 /*+IndexScan(p2 p2_val_idx6)*/
7057 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7058 LOG: available indexes for IndexScan(p2): p2_val_idx6
7059 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx6
7060 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx6
7061 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx6
7062 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx6
7063 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx6
7064 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx6
7065 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx6
7066 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx6
7069 IndexScan(p2 p2_val_idx6)
7075 -----------------------------------------------------------------------------------------
7078 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7079 -> Seq Scan on p2_c1
7080 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7081 -> Seq Scan on p2_c2
7082 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7083 -> Seq Scan on p2_c3
7084 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7085 -> Seq Scan on p2_c4
7086 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7087 -> Seq Scan on p2_c1_c1
7088 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7089 -> Seq Scan on p2_c1_c2
7090 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7091 -> Seq Scan on p2_c3_c1
7092 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7093 -> Seq Scan on p2_c3_c2
7094 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7097 /*+IndexScan(p2 p2_val_idx p2_val_idx6)*/
7098 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7099 LOG: available indexes for IndexScan(p2): p2_val_idx6 p2_val_idx
7100 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx6 p2_c1_val_idx
7101 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx6 p2_c2_val_idx
7102 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx6 p2_c3_val_idx
7103 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx6 p2_c4_val_idx
7104 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx6 p2_c1_c1_val_idx
7105 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx6 p2_c1_c2_val_idx
7106 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx6 p2_c3_c1_val_idx
7107 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx6 p2_c3_c2_val_idx
7110 IndexScan(p2 p2_val_idx p2_val_idx6)
7116 -------------------------------------------------------------------
7118 -> Index Scan using p2_val_idx on p2
7119 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7120 Filter: (ctid = '(1,1)'::tid)
7121 -> Index Scan using p2_c1_val_idx on p2_c1
7122 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7123 Filter: (ctid = '(1,1)'::tid)
7124 -> Index Scan using p2_c2_val_idx on p2_c2
7125 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7126 Filter: (ctid = '(1,1)'::tid)
7127 -> Index Scan using p2_c3_val_idx on p2_c3
7128 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7129 Filter: (ctid = '(1,1)'::tid)
7130 -> Index Scan using p2_c4_val_idx on p2_c4
7131 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7132 Filter: (ctid = '(1,1)'::tid)
7133 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
7134 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7135 Filter: (ctid = '(1,1)'::tid)
7136 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
7137 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7138 Filter: (ctid = '(1,1)'::tid)
7139 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
7140 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7141 Filter: (ctid = '(1,1)'::tid)
7142 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
7143 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7144 Filter: (ctid = '(1,1)'::tid)
7147 -- regular expression
7149 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7151 ---------------------------------------------------------------------------------------------
7152 Index Only Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
7153 Index Cond: (id = 1)
7156 /*+ IndexScanRegexp(t5 t5_[^i].*)*/
7157 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7158 LOG: available indexes for IndexScanRegexp(t5): t5_val t5_pkey
7161 IndexScanRegexp(t5 t5_[^i].*)
7167 --------------------------------
7168 Index Scan using t5_pkey on t5
7169 Index Cond: (id = 1)
7172 /*+ IndexScanRegexp(t5 t5_id[0-9].*)*/
7173 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7174 LOG: available indexes for IndexScanRegexp(t5): t5_id3 t5_id2 t5_id1
7177 IndexScanRegexp(t5 t5_id[0-9].*)
7183 -------------------------------
7184 Index Scan using t5_id3 on t5
7185 Index Cond: (id = 1)
7188 /*+ IndexScanRegexp(t5 t5[^_].*)*/
7189 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7190 LOG: available indexes for IndexScanRegexp(t5):
7193 IndexScanRegexp(t5 t5[^_].*)
7199 --------------------
7204 /*+ IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7205 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7206 LOG: available indexes for IndexScanRegexp(t5):
7209 IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7215 --------------------
7220 /*+ IndexScan(t5 t5_id[0-9].*)*/
7221 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7222 LOG: available indexes for IndexScan(t5):
7225 IndexScan(t5 t5_id[0-9].*)
7231 --------------------
7236 /*+ IndexOnlyScanRegexp(t5 t5_[^i].*)*/
7237 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7238 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_val t5_pkey
7241 IndexOnlyScanRegexp(t5 t5_[^i].*)
7247 -------------------------------------
7248 Index Only Scan using t5_pkey on t5
7249 Index Cond: (id = 1)
7252 /*+ IndexOnlyScanRegexp(t5 t5_id[0-9].*)*/
7253 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7254 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_id3 t5_id2 t5_id1
7257 IndexOnlyScanRegexp(t5 t5_id[0-9].*)
7263 ------------------------------------
7264 Index Only Scan using t5_id3 on t5
7265 Index Cond: (id = 1)
7268 /*+ IndexOnlyScanRegexp(t5 t5[^_].*)*/
7269 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7270 LOG: available indexes for IndexOnlyScanRegexp(t5):
7273 IndexOnlyScanRegexp(t5 t5[^_].*)
7279 --------------------
7284 /*+ IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7285 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7286 LOG: available indexes for IndexOnlyScanRegexp(t5):
7289 IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7295 --------------------
7300 /*+ IndexOnlyScan(t5 t5_id[0-9].*)*/
7301 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7302 LOG: available indexes for IndexOnlyScan(t5):
7305 IndexOnlyScan(t5 t5_id[0-9].*)
7311 --------------------
7316 /*+ BitmapScanRegexp(t5 t5_[^i].*)*/
7317 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7318 LOG: available indexes for BitmapScanRegexp(t5): t5_val t5_pkey
7321 BitmapScanRegexp(t5 t5_[^i].*)
7327 ------------------------------------
7328 Bitmap Heap Scan on t5
7329 Recheck Cond: (id = 1)
7330 -> Bitmap Index Scan on t5_pkey
7331 Index Cond: (id = 1)
7334 /*+ BitmapScanRegexp(t5 t5_id[0-9].*)*/
7335 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7336 LOG: available indexes for BitmapScanRegexp(t5): t5_id3 t5_id2 t5_id1
7339 BitmapScanRegexp(t5 t5_id[0-9].*)
7345 -----------------------------------
7346 Bitmap Heap Scan on t5
7347 Recheck Cond: (id = 1)
7348 -> Bitmap Index Scan on t5_id3
7349 Index Cond: (id = 1)
7352 /*+ BitmapScanRegexp(t5 t5[^_].*)*/
7353 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7354 LOG: available indexes for BitmapScanRegexp(t5):
7357 BitmapScanRegexp(t5 t5[^_].*)
7363 --------------------
7368 /*+ BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7369 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7370 LOG: available indexes for BitmapScanRegexp(t5):
7373 BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7379 --------------------
7384 /*+ BitmapScan(t5 t5_id[0-9].*)*/
7385 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7386 LOG: available indexes for BitmapScan(t5):
7389 BitmapScan(t5 t5_id[0-9].*)
7395 --------------------
7401 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7403 ----------------------------
7407 -> Seq Scan on p1_c1
7409 -> Seq Scan on p1_c2
7411 -> Seq Scan on p1_c3
7413 -> Seq Scan on p1_c4
7415 -> Seq Scan on p1_c1_c1
7417 -> Seq Scan on p1_c1_c2
7419 -> Seq Scan on p1_c3_c1
7421 -> Seq Scan on p1_c3_c2
7425 /*+ IndexScanRegexp(p1 p1_.*[^0-9]$)*/
7426 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7427 LOG: available indexes for IndexScanRegexp(p1): p1_pkey
7428 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_pkey
7429 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_pkey
7430 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_pkey
7431 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_pkey
7432 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7433 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7434 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7435 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7438 IndexScanRegexp(p1 p1_.*[^0-9]$)
7444 ----------------------------
7448 -> Seq Scan on p1_c1
7450 -> Seq Scan on p1_c2
7452 -> Seq Scan on p1_c3
7454 -> Seq Scan on p1_c4
7456 -> Seq Scan on p1_c1_c1
7458 -> Seq Scan on p1_c1_c2
7460 -> Seq Scan on p1_c3_c1
7462 -> Seq Scan on p1_c3_c2
7466 /*+ IndexScanRegexp(p1 p1_.*val2.*)*/
7467 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7468 LOG: available indexes for IndexScanRegexp(p1): p1_val2
7469 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_val2
7470 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_val2
7471 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_val2
7472 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_val2
7473 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_val2
7474 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_val2
7475 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_val2
7476 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_val2
7479 IndexScanRegexp(p1 p1_.*val2.*)
7485 --------------------------------------------------
7487 -> Index Scan using p1_val2 on p1
7488 Index Cond: (val = 1)
7489 -> Index Scan using p1_c1_val2 on p1_c1
7490 Index Cond: (val = 1)
7491 -> Index Scan using p1_c2_val2 on p1_c2
7492 Index Cond: (val = 1)
7493 -> Index Scan using p1_c3_val2 on p1_c3
7494 Index Cond: (val = 1)
7495 -> Index Scan using p1_c4_val2 on p1_c4
7496 Index Cond: (val = 1)
7497 -> Index Scan using p1_c1_c1_val2 on p1_c1_c1
7498 Index Cond: (val = 1)
7499 -> Index Scan using p1_c1_c2_val2 on p1_c1_c2
7500 Index Cond: (val = 1)
7501 -> Index Scan using p1_c3_c1_val2 on p1_c3_c1
7502 Index Cond: (val = 1)
7503 -> Index Scan using p1_c3_c2_val2 on p1_c3_c2
7504 Index Cond: (val = 1)
7507 /*+ IndexScanRegexp(p1 p1[^_].*)*/
7508 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7509 LOG: available indexes for IndexScanRegexp(p1):
7510 LOG: available indexes for IndexScanRegexp(p1_c1):
7511 LOG: available indexes for IndexScanRegexp(p1_c2):
7512 LOG: available indexes for IndexScanRegexp(p1_c3):
7513 LOG: available indexes for IndexScanRegexp(p1_c4):
7514 LOG: available indexes for IndexScanRegexp(p1_c1_c1):
7515 LOG: available indexes for IndexScanRegexp(p1_c1_c2):
7516 LOG: available indexes for IndexScanRegexp(p1_c3_c1):
7517 LOG: available indexes for IndexScanRegexp(p1_c3_c2):
7520 IndexScanRegexp(p1 p1[^_].*)
7526 ----------------------------
7530 -> Seq Scan on p1_c1
7532 -> Seq Scan on p1_c2
7534 -> Seq Scan on p1_c3
7536 -> Seq Scan on p1_c4
7538 -> Seq Scan on p1_c1_c1
7540 -> Seq Scan on p1_c1_c2
7542 -> Seq Scan on p1_c3_c1
7544 -> Seq Scan on p1_c3_c2
7548 /*+ IndexScan(p1 p1_.*val2.*)*/
7549 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7550 LOG: available indexes for IndexScan(p1):
7551 LOG: available indexes for IndexScan(p1_c1):
7552 LOG: available indexes for IndexScan(p1_c2):
7553 LOG: available indexes for IndexScan(p1_c3):
7554 LOG: available indexes for IndexScan(p1_c4):
7555 LOG: available indexes for IndexScan(p1_c1_c1):
7556 LOG: available indexes for IndexScan(p1_c1_c2):
7557 LOG: available indexes for IndexScan(p1_c3_c1):
7558 LOG: available indexes for IndexScan(p1_c3_c2):
7561 IndexScan(p1 p1_.*val2.*)
7567 ----------------------------
7571 -> Seq Scan on p1_c1
7573 -> Seq Scan on p1_c2
7575 -> Seq Scan on p1_c3
7577 -> Seq Scan on p1_c4
7579 -> Seq Scan on p1_c1_c1
7581 -> Seq Scan on p1_c1_c2
7583 -> Seq Scan on p1_c3_c1
7585 -> Seq Scan on p1_c3_c2
7589 /*+ IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)*/
7590 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7591 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_pkey
7592 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_pkey
7593 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_pkey
7594 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_pkey
7595 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_pkey
7596 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7597 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7598 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7599 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7602 IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)
7608 ----------------------------
7612 -> Seq Scan on p1_c1
7614 -> Seq Scan on p1_c2
7616 -> Seq Scan on p1_c3
7618 -> Seq Scan on p1_c4
7620 -> Seq Scan on p1_c1_c1
7622 -> Seq Scan on p1_c1_c2
7624 -> Seq Scan on p1_c3_c1
7626 -> Seq Scan on p1_c3_c2
7630 /*+ IndexOnlyScanRegexp(p1 p1_.*val2.*)*/
7631 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7632 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_val2
7633 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_val2
7634 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_val2
7635 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_val2
7636 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_val2
7637 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_val2
7638 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_val2
7639 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_val2
7640 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_val2
7643 IndexOnlyScanRegexp(p1 p1_.*val2.*)
7649 -------------------------------------------------------
7651 -> Index Only Scan using p1_val2 on p1
7652 Index Cond: (val = 1)
7653 -> Index Only Scan using p1_c1_val2 on p1_c1
7654 Index Cond: (val = 1)
7655 -> Index Only Scan using p1_c2_val2 on p1_c2
7656 Index Cond: (val = 1)
7657 -> Index Only Scan using p1_c3_val2 on p1_c3
7658 Index Cond: (val = 1)
7659 -> Index Only Scan using p1_c4_val2 on p1_c4
7660 Index Cond: (val = 1)
7661 -> Index Only Scan using p1_c1_c1_val2 on p1_c1_c1
7662 Index Cond: (val = 1)
7663 -> Index Only Scan using p1_c1_c2_val2 on p1_c1_c2
7664 Index Cond: (val = 1)
7665 -> Index Only Scan using p1_c3_c1_val2 on p1_c3_c1
7666 Index Cond: (val = 1)
7667 -> Index Only Scan using p1_c3_c2_val2 on p1_c3_c2
7668 Index Cond: (val = 1)
7671 /*+ IndexOnlyScanRegexp(p1 p1[^_].*)*/
7672 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7673 LOG: available indexes for IndexOnlyScanRegexp(p1):
7674 LOG: available indexes for IndexOnlyScanRegexp(p1_c1):
7675 LOG: available indexes for IndexOnlyScanRegexp(p1_c2):
7676 LOG: available indexes for IndexOnlyScanRegexp(p1_c3):
7677 LOG: available indexes for IndexOnlyScanRegexp(p1_c4):
7678 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1):
7679 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2):
7680 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1):
7681 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2):
7684 IndexOnlyScanRegexp(p1 p1[^_].*)
7690 ----------------------------
7694 -> Seq Scan on p1_c1
7696 -> Seq Scan on p1_c2
7698 -> Seq Scan on p1_c3
7700 -> Seq Scan on p1_c4
7702 -> Seq Scan on p1_c1_c1
7704 -> Seq Scan on p1_c1_c2
7706 -> Seq Scan on p1_c3_c1
7708 -> Seq Scan on p1_c3_c2
7712 /*+ IndexOnlyScan(p1 p1_.*val2.*)*/
7713 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7714 LOG: available indexes for IndexOnlyScan(p1):
7715 LOG: available indexes for IndexOnlyScan(p1_c1):
7716 LOG: available indexes for IndexOnlyScan(p1_c2):
7717 LOG: available indexes for IndexOnlyScan(p1_c3):
7718 LOG: available indexes for IndexOnlyScan(p1_c4):
7719 LOG: available indexes for IndexOnlyScan(p1_c1_c1):
7720 LOG: available indexes for IndexOnlyScan(p1_c1_c2):
7721 LOG: available indexes for IndexOnlyScan(p1_c3_c1):
7722 LOG: available indexes for IndexOnlyScan(p1_c3_c2):
7725 IndexOnlyScan(p1 p1_.*val2.*)
7731 ----------------------------
7735 -> Seq Scan on p1_c1
7737 -> Seq Scan on p1_c2
7739 -> Seq Scan on p1_c3
7741 -> Seq Scan on p1_c4
7743 -> Seq Scan on p1_c1_c1
7745 -> Seq Scan on p1_c1_c2
7747 -> Seq Scan on p1_c3_c1
7749 -> Seq Scan on p1_c3_c2
7753 /*+ BitmapScanRegexp(p1 p1_.*[^0-9]$)*/
7754 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7755 LOG: available indexes for BitmapScanRegexp(p1): p1_pkey
7756 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_pkey
7757 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_pkey
7758 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_pkey
7759 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_pkey
7760 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7761 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7762 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7763 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7766 BitmapScanRegexp(p1 p1_.*[^0-9]$)
7772 ----------------------------
7776 -> Seq Scan on p1_c1
7778 -> Seq Scan on p1_c2
7780 -> Seq Scan on p1_c3
7782 -> Seq Scan on p1_c4
7784 -> Seq Scan on p1_c1_c1
7786 -> Seq Scan on p1_c1_c2
7788 -> Seq Scan on p1_c3_c1
7790 -> Seq Scan on p1_c3_c2
7794 /*+ BitmapScanRegexp(p1 p1_.*val2.*)*/
7795 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7796 LOG: available indexes for BitmapScanRegexp(p1): p1_val2
7797 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_val2
7798 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_val2
7799 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_val2
7800 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_val2
7801 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_val2
7802 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_val2
7803 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_val2
7804 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_val2
7807 BitmapScanRegexp(p1 p1_.*val2.*)
7813 ------------------------------------------------
7815 -> Bitmap Heap Scan on p1
7816 Recheck Cond: (val = 1)
7817 -> Bitmap Index Scan on p1_val2
7818 Index Cond: (val = 1)
7819 -> Bitmap Heap Scan on p1_c1
7820 Recheck Cond: (val = 1)
7821 -> Bitmap Index Scan on p1_c1_val2
7822 Index Cond: (val = 1)
7823 -> Bitmap Heap Scan on p1_c2
7824 Recheck Cond: (val = 1)
7825 -> Bitmap Index Scan on p1_c2_val2
7826 Index Cond: (val = 1)
7827 -> Bitmap Heap Scan on p1_c3
7828 Recheck Cond: (val = 1)
7829 -> Bitmap Index Scan on p1_c3_val2
7830 Index Cond: (val = 1)
7831 -> Bitmap Heap Scan on p1_c4
7832 Recheck Cond: (val = 1)
7833 -> Bitmap Index Scan on p1_c4_val2
7834 Index Cond: (val = 1)
7835 -> Bitmap Heap Scan on p1_c1_c1
7836 Recheck Cond: (val = 1)
7837 -> Bitmap Index Scan on p1_c1_c1_val2
7838 Index Cond: (val = 1)
7839 -> Bitmap Heap Scan on p1_c1_c2
7840 Recheck Cond: (val = 1)
7841 -> Bitmap Index Scan on p1_c1_c2_val2
7842 Index Cond: (val = 1)
7843 -> Bitmap Heap Scan on p1_c3_c1
7844 Recheck Cond: (val = 1)
7845 -> Bitmap Index Scan on p1_c3_c1_val2
7846 Index Cond: (val = 1)
7847 -> Bitmap Heap Scan on p1_c3_c2
7848 Recheck Cond: (val = 1)
7849 -> Bitmap Index Scan on p1_c3_c2_val2
7850 Index Cond: (val = 1)
7853 /*+ BitmapScanRegexp(p1 p1[^_].*)*/
7854 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7855 LOG: available indexes for BitmapScanRegexp(p1):
7856 LOG: available indexes for BitmapScanRegexp(p1_c1):
7857 LOG: available indexes for BitmapScanRegexp(p1_c2):
7858 LOG: available indexes for BitmapScanRegexp(p1_c3):
7859 LOG: available indexes for BitmapScanRegexp(p1_c4):
7860 LOG: available indexes for BitmapScanRegexp(p1_c1_c1):
7861 LOG: available indexes for BitmapScanRegexp(p1_c1_c2):
7862 LOG: available indexes for BitmapScanRegexp(p1_c3_c1):
7863 LOG: available indexes for BitmapScanRegexp(p1_c3_c2):
7866 BitmapScanRegexp(p1 p1[^_].*)
7872 ----------------------------
7876 -> Seq Scan on p1_c1
7878 -> Seq Scan on p1_c2
7880 -> Seq Scan on p1_c3
7882 -> Seq Scan on p1_c4
7884 -> Seq Scan on p1_c1_c1
7886 -> Seq Scan on p1_c1_c2
7888 -> Seq Scan on p1_c3_c1
7890 -> Seq Scan on p1_c3_c2
7894 /*+ BitmapScan(p1 p1_.*val2.*)*/
7895 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7896 LOG: available indexes for BitmapScan(p1):
7897 LOG: available indexes for BitmapScan(p1_c1):
7898 LOG: available indexes for BitmapScan(p1_c2):
7899 LOG: available indexes for BitmapScan(p1_c3):
7900 LOG: available indexes for BitmapScan(p1_c4):
7901 LOG: available indexes for BitmapScan(p1_c1_c1):
7902 LOG: available indexes for BitmapScan(p1_c1_c2):
7903 LOG: available indexes for BitmapScan(p1_c3_c1):
7904 LOG: available indexes for BitmapScan(p1_c3_c2):
7907 BitmapScan(p1 p1_.*val2.*)
7913 ----------------------------
7917 -> Seq Scan on p1_c1
7919 -> Seq Scan on p1_c2
7921 -> Seq Scan on p1_c3
7923 -> Seq Scan on p1_c4
7925 -> Seq Scan on p1_c1_c1
7927 -> Seq Scan on p1_c1_c2
7929 -> Seq Scan on p1_c3_c1
7931 -> Seq Scan on p1_c3_c2
7935 -- search from hint table
7936 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?;', '', 'SeqScan(t1)');
7937 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?;', '', 'IndexScan(t1)');
7938 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN SELECT * FROM t1 WHERE t1.id = ?;', '', 'BitmapScan(t1)');
7939 SELECT * FROM hint_plan.hints ORDER BY id;
7940 id | norm_query_string | application_name | hints
7941 ----+----------------------------------------------------------+------------------+----------------
7942 1 | EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?; | | SeqScan(t1)
7943 2 | EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?; | | IndexScan(t1)
7944 3 | EXPLAIN SELECT * FROM t1 WHERE t1.id = ?; | | BitmapScan(t1)
7947 SET pg_hint_plan.enable_hint_table = on;
7948 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7957 --------------------
7962 SET pg_hint_plan.enable_hint_table = off;
7963 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7965 --------------------------------
7966 Index Scan using t1_pkey on t1
7967 Index Cond: (id = 1)
7970 TRUNCATE hint_plan.hints;
7971 VACUUM ANALYZE hint_plan.hints;
7973 EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = 1;
7975 -------------------------------------
7976 Index Only Scan using t1_pkey on t1
7977 Index Cond: (id = 1)
7981 CREATE FUNCTION testfunc() RETURNS RECORD AS $$
7985 SELECT /*+ SeqScan(t1) */ * INTO ret FROM t1 LIMIT 1;
7988 $$ LANGUAGE plpgsql;
7997 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 LIMIT 1"
7998 PL/pgSQL function testfunc() line 5 at SQL statement
8005 DROP FUNCTION testfunc();
8006 CREATE FUNCTION testfunc() RETURNS void AS $$
8008 EXECUTE format('/*+ SeqScan(t1) */ SELECT * FROM t1');
8010 $$ LANGUAGE plpgsql;
8019 CONTEXT: SQL statement "/*+ SeqScan(t1) */ SELECT * FROM t1"
8020 PL/pgSQL function testfunc() line 3 at EXECUTE
8026 -- This should not use SeqScan(t1)
8027 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8041 DROP FUNCTION testfunc();
8042 CREATE FUNCTION testfunc() RETURNS void AS $$
8044 PERFORM 1, /*+ SeqScan(t1) */ * from t1;
8046 $$ LANGUAGE plpgsql;
8055 CONTEXT: SQL statement "SELECT 1, /*+ SeqScan(t1) */ * from t1"
8056 PL/pgSQL function testfunc() line 3 at PERFORM
8063 DROP FUNCTION testfunc();
8064 CREATE FUNCTION testfunc() RETURNS int AS $$
8070 FOR v IN SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id LOOP
8075 $$ LANGUAGE plpgsql;
8084 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id"
8085 PL/pgSQL function testfunc() line 7 at FOR over SELECT rows
8092 DROP FUNCTION testfunc();
8093 CREATE FUNCTION testfunc() RETURNS int AS $$
8100 FOR v IN EXECUTE 'SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id' LOOP
8105 $$ LANGUAGE plpgsql;
8114 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id"
8115 PL/pgSQL function testfunc() line 8 at FOR over EXECUTE statement
8122 DROP FUNCTION testfunc();
8123 CREATE FUNCTION testfunc() RETURNS int AS $$
8125 ref CURSOR FOR SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8130 sum := sum + rec.val;
8134 $$ LANGUAGE plpgsql;
8143 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8144 PL/pgSQL function testfunc() line 7 at FOR over cursor
8151 DROP FUNCTION testfunc();
8152 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8154 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8156 $$ LANGUAGE plpgsql;
8157 SELECT * FROM testfunc() LIMIT 1;
8165 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8166 PL/pgSQL function testfunc() line 3 at RETURN QUERY
8172 -- Test for error exit from inner SQL statement.
8173 DROP FUNCTION testfunc();
8174 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8176 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id;
8178 $$ LANGUAGE plpgsql;
8179 SELECT * FROM testfunc() LIMIT 1;
8180 ERROR: relation "ttx" does not exist
8181 LINE 1: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8183 QUERY: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8184 CONTEXT: PL/pgSQL function testfunc() line 3 at RETURN QUERY
8185 -- this should not use SeqScan(t1) hint.
8186 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8199 DROP FUNCTION testfunc();
8200 DROP EXTENSION pg_hint_plan;
8204 -- Explain result includes "Planning time" if COSTS is enabled, but
8205 -- this test needs it enabled for get rows count. So do tests via psql
8206 -- and grep -v the mutable line.
8208 \o results/pg_hint_plan.tmpout
8209 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8211 \! sql/maskout.sh results/pg_hint_plan.tmpout
8213 ------------------------------------------------------------------------------
8214 Merge Join (cost=xxx rows=1000 width=xxx)
8215 Merge Cond: (t1.id = t2.id)
8216 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8217 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8220 \o results/pg_hint_plan.tmpout
8221 /*+ Rows(t1 t2 #99) */
8222 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8231 \! sql/maskout.sh results/pg_hint_plan.tmpout
8233 ------------------------------------------------------------------------------
8234 Merge Join (cost=xxx rows=99 width=xxx)
8235 Merge Cond: (t1.id = t2.id)
8236 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8237 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8240 \o results/pg_hint_plan.tmpout
8241 /*+ Rows(t1 t2 +99) */
8242 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8251 \! sql/maskout.sh results/pg_hint_plan.tmpout
8253 ------------------------------------------------------------------------------
8254 Merge Join (cost=xxx rows=1099 width=xxx)
8255 Merge Cond: (t1.id = t2.id)
8256 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8257 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8260 \o results/pg_hint_plan.tmpout
8261 /*+ Rows(t1 t2 -99) */
8262 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8271 \! sql/maskout.sh results/pg_hint_plan.tmpout
8273 ------------------------------------------------------------------------------
8274 Merge Join (cost=xxx rows=901 width=xxx)
8275 Merge Cond: (t1.id = t2.id)
8276 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8277 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8280 \o results/pg_hint_plan.tmpout
8281 /*+ Rows(t1 t2 *99) */
8282 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8291 \! sql/maskout.sh results/pg_hint_plan.tmpout
8293 ------------------------------------------------------------------------------
8294 Merge Join (cost=xxx rows=99000 width=xxx)
8295 Merge Cond: (t1.id = t2.id)
8296 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8297 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8300 \o results/pg_hint_plan.tmpout
8301 /*+ Rows(t1 t2 *0.01) */
8302 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8311 \! sql/maskout.sh results/pg_hint_plan.tmpout
8313 ------------------------------------------------------------------------------
8314 Merge Join (cost=xxx rows=10 width=xxx)
8315 Merge Cond: (t1.id = t2.id)
8316 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8317 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8320 \o results/pg_hint_plan.tmpout
8321 /*+ Rows(t1 t2 #aa) */
8322 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8323 INFO: pg_hint_plan: hint syntax error at or near "aa"
8324 DETAIL: Rows hint requires valid number as rows estimation.
8333 \! sql/maskout.sh results/pg_hint_plan.tmpout
8335 ------------------------------------------------------------------------------
8336 Merge Join (cost=xxx rows=1000 width=xxx)
8337 Merge Cond: (t1.id = t2.id)
8338 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8339 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8342 \o results/pg_hint_plan.tmpout
8343 /*+ Rows(t1 t2 /99) */
8344 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8345 INFO: pg_hint_plan: hint syntax error at or near "/99"
8346 DETAIL: Unrecognized rows value type notation.
8355 \! sql/maskout.sh results/pg_hint_plan.tmpout
8357 ------------------------------------------------------------------------------
8358 Merge Join (cost=xxx rows=1000 width=xxx)
8359 Merge Cond: (t1.id = t2.id)
8360 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8361 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8365 \o results/pg_hint_plan.tmpout
8366 /*+ Rows(t1 t2 -99999) */
8367 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8368 WARNING: Force estimate to be at least one row, to avoid possible divide-by-zero when interpolating costs : Rows(t1 t2 -99999)
8377 \! sql/maskout.sh results/pg_hint_plan.tmpout
8379 ------------------------------------------------------------------------------
8380 Merge Join (cost=xxx rows=1 width=xxx)
8381 Merge Cond: (t1.id = t2.id)
8382 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8383 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8386 -- complex join tree
8387 \o results/pg_hint_plan.tmpout
8388 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8390 \! sql/maskout.sh results/pg_hint_plan.tmpout
8392 ------------------------------------------------------------------------------------
8393 Merge Join (cost=xxx rows=10 width=xxx)
8394 Merge Cond: (t1.id = t3.id)
8395 -> Merge Join (cost=xxx rows=1000 width=xxx)
8396 Merge Cond: (t1.id = t2.id)
8397 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8398 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8399 -> Sort (cost=xxx rows=100 width=xxx)
8401 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
8404 \o results/pg_hint_plan.tmpout
8405 /*+ Rows(t1 t2 #22) */
8406 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8415 \! sql/maskout.sh results/pg_hint_plan.tmpout
8417 ------------------------------------------------------------------------------------
8418 Merge Join (cost=xxx rows=1 width=xxx)
8419 Merge Cond: (t1.id = t3.id)
8420 -> Merge Join (cost=xxx rows=22 width=xxx)
8421 Merge Cond: (t1.id = t2.id)
8422 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8423 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8424 -> Sort (cost=xxx rows=100 width=xxx)
8426 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
8429 \o results/pg_hint_plan.tmpout
8430 /*+ Rows(t1 t3 *10) */
8431 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8440 set max_parallel_workers_per_gather to DEFAULT;
8441 \! sql/maskout.sh results/pg_hint_plan.tmpout
8443 ------------------------------------------------------------------------------------
8444 Merge Join (cost=xxx rows=100 width=xxx)
8445 Merge Cond: (t1.id = t3.id)
8446 -> Merge Join (cost=xxx rows=1000 width=xxx)
8447 Merge Cond: (t1.id = t2.id)
8448 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8449 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8450 -> Sort (cost=xxx rows=100 width=xxx)
8452 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
8455 \! rm results/pg_hint_plan.tmpout