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)
1293 TID Cond: (ctid = '(1,1)'::tid)
1297 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1306 -----------------------------------------
1308 Join Filter: (t1.id = t2.id)
1310 Filter: (ctid = '(1,1)'::tid)
1312 TID Cond: (ctid = '(1,1)'::tid)
1316 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1325 -----------------------------------------
1327 Join Filter: (t1.id = t2.id)
1329 TID Cond: (ctid = '(1,1)'::tid)
1331 Filter: (ctid = '(1,1)'::tid)
1334 /*+SeqScan(t1) SeqScan(t2)*/
1335 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1345 ---------------------------------------
1347 Join Filter: (t1.id = t2.id)
1349 Filter: (ctid = '(1,1)'::tid)
1351 Filter: (ctid = '(1,1)'::tid)
1354 /*+SeqScan(t1) IndexScan(t2)*/
1355 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1365 ---------------------------------------
1368 Filter: (ctid = '(1,1)'::tid)
1369 -> Index Scan using t2_pkey on t2
1370 Index Cond: (id = t1.id)
1371 Filter: (ctid = '(1,1)'::tid)
1374 /*+SeqScan(t1) BitmapScan(t2)*/
1375 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1385 ------------------------------------------
1388 Filter: (ctid = '(1,1)'::tid)
1389 -> Bitmap Heap Scan on t2
1390 Recheck Cond: (id = t1.id)
1391 Filter: (ctid = '(1,1)'::tid)
1392 -> Bitmap Index Scan on t2_pkey
1393 Index Cond: (id = t1.id)
1396 /*+SeqScan(t1) TidScan(t2)*/
1397 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1407 -----------------------------------------
1409 Join Filter: (t1.id = t2.id)
1411 Filter: (ctid = '(1,1)'::tid)
1413 TID Cond: (ctid = '(1,1)'::tid)
1416 /*+SeqScan(t1) NoSeqScan(t2)*/
1417 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1427 -----------------------------------------
1429 Join Filter: (t1.id = t2.id)
1431 Filter: (ctid = '(1,1)'::tid)
1433 TID Cond: (ctid = '(1,1)'::tid)
1436 /*+SeqScan(t1) NoIndexScan(t2)*/
1437 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1447 -----------------------------------------
1449 Join Filter: (t1.id = t2.id)
1451 Filter: (ctid = '(1,1)'::tid)
1453 TID Cond: (ctid = '(1,1)'::tid)
1456 /*+SeqScan(t1) NoBitmapScan(t2)*/
1457 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1467 -----------------------------------------
1469 Join Filter: (t1.id = t2.id)
1471 Filter: (ctid = '(1,1)'::tid)
1473 TID Cond: (ctid = '(1,1)'::tid)
1476 /*+SeqScan(t1) NoTidScan(t2)*/
1477 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1487 ---------------------------------------
1490 Filter: (ctid = '(1,1)'::tid)
1491 -> Index Scan using t2_pkey on t2
1492 Index Cond: (id = t1.id)
1493 Filter: (ctid = '(1,1)'::tid)
1497 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1506 -----------------------------------------
1509 TID Cond: (ctid = '(1,1)'::tid)
1510 -> Index Scan using t1_pkey on t1
1511 Index Cond: (id = t2.id)
1512 Filter: (ctid = '(1,1)'::tid)
1516 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1525 -----------------------------------------
1528 TID Cond: (ctid = '(1,1)'::tid)
1529 -> Index Scan using t2_pkey on t2
1530 Index Cond: (id = t1.id)
1531 Filter: (ctid = '(1,1)'::tid)
1534 /*+IndexScan(t1) SeqScan(t2)*/
1535 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1545 ---------------------------------------
1548 Filter: (ctid = '(1,1)'::tid)
1549 -> Index Scan using t1_pkey on t1
1550 Index Cond: (id = t2.id)
1551 Filter: (ctid = '(1,1)'::tid)
1554 /*+IndexScan(t1) IndexScan(t2)*/
1555 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1565 ---------------------------------------
1567 -> Index Scan using t2_pkey on t2
1568 Filter: (ctid = '(1,1)'::tid)
1569 -> Index Scan using t1_pkey on t1
1570 Index Cond: (id = t2.id)
1571 Filter: (ctid = '(1,1)'::tid)
1574 /*+IndexScan(t1) BitmapScan(t2)*/
1575 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1585 ------------------------------------------
1587 -> Index Scan using t1_pkey on t1
1588 Filter: (ctid = '(1,1)'::tid)
1589 -> Bitmap Heap Scan on t2
1590 Recheck Cond: (id = t1.id)
1591 Filter: (ctid = '(1,1)'::tid)
1592 -> Bitmap Index Scan on t2_pkey
1593 Index Cond: (id = t1.id)
1596 /*+IndexScan(t1) TidScan(t2)*/
1597 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1607 -----------------------------------------
1610 TID Cond: (ctid = '(1,1)'::tid)
1611 -> Index Scan using t1_pkey on t1
1612 Index Cond: (id = t2.id)
1613 Filter: (ctid = '(1,1)'::tid)
1616 /*+IndexScan(t1) NoSeqScan(t2)*/
1617 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1627 -----------------------------------------
1630 TID Cond: (ctid = '(1,1)'::tid)
1631 -> Index Scan using t1_pkey on t1
1632 Index Cond: (id = t2.id)
1633 Filter: (ctid = '(1,1)'::tid)
1636 /*+IndexScan(t1) NoIndexScan(t2)*/
1637 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1647 -----------------------------------------
1650 TID Cond: (ctid = '(1,1)'::tid)
1651 -> Index Scan using t1_pkey on t1
1652 Index Cond: (id = t2.id)
1653 Filter: (ctid = '(1,1)'::tid)
1656 /*+IndexScan(t1) NoBitmapScan(t2)*/
1657 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1667 -----------------------------------------
1670 TID Cond: (ctid = '(1,1)'::tid)
1671 -> Index Scan using t1_pkey on t1
1672 Index Cond: (id = t2.id)
1673 Filter: (ctid = '(1,1)'::tid)
1676 /*+IndexScan(t1) NoTidScan(t2)*/
1677 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1687 ---------------------------------------
1690 Filter: (ctid = '(1,1)'::tid)
1691 -> Index Scan using t1_pkey on t1
1692 Index Cond: (id = t2.id)
1693 Filter: (ctid = '(1,1)'::tid)
1697 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1706 ------------------------------------------
1709 TID Cond: (ctid = '(1,1)'::tid)
1710 -> Bitmap Heap Scan on t1
1711 Recheck Cond: (id = t2.id)
1712 Filter: (ctid = '(1,1)'::tid)
1713 -> Bitmap Index Scan on t1_pkey
1714 Index Cond: (id = t2.id)
1718 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1727 ------------------------------------------
1730 TID Cond: (ctid = '(1,1)'::tid)
1731 -> Bitmap Heap Scan on t2
1732 Recheck Cond: (id = t1.id)
1733 Filter: (ctid = '(1,1)'::tid)
1734 -> Bitmap Index Scan on t2_pkey
1735 Index Cond: (id = t1.id)
1739 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1748 ------------------------------------------
1751 TID Cond: (ctid = '(1,1)'::tid)
1752 -> Bitmap Heap Scan on t2
1753 Recheck Cond: (id = t1.id)
1754 Filter: (ctid = '(1,1)'::tid)
1755 -> Bitmap Index Scan on t2_pkey
1756 Index Cond: (id = t1.id)
1759 /*+BitmapScan(t1) SeqScan(t2)*/
1760 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1770 ------------------------------------------
1773 Filter: (ctid = '(1,1)'::tid)
1774 -> Bitmap Heap Scan on t1
1775 Recheck Cond: (id = t2.id)
1776 Filter: (ctid = '(1,1)'::tid)
1777 -> Bitmap Index Scan on t1_pkey
1778 Index Cond: (id = t2.id)
1781 /*+BitmapScan(t1) IndexScan(t2)*/
1782 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1792 ------------------------------------------
1794 -> Index Scan using t2_pkey on t2
1795 Filter: (ctid = '(1,1)'::tid)
1796 -> Bitmap Heap Scan on t1
1797 Recheck Cond: (id = t2.id)
1798 Filter: (ctid = '(1,1)'::tid)
1799 -> Bitmap Index Scan on t1_pkey
1800 Index Cond: (id = t2.id)
1803 /*+BitmapScan(t1) BitmapScan(t2)*/
1804 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1814 ------------------------------------------
1816 -> Index Scan using t2_pkey on t2
1817 Filter: (ctid = '(1,1)'::tid)
1818 -> Bitmap Heap Scan on t1
1819 Recheck Cond: (id = t2.id)
1820 Filter: (ctid = '(1,1)'::tid)
1821 -> Bitmap Index Scan on t1_pkey
1822 Index Cond: (id = t2.id)
1825 /*+BitmapScan(t1) TidScan(t2)*/
1826 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1836 ------------------------------------------
1839 TID Cond: (ctid = '(1,1)'::tid)
1840 -> Bitmap Heap Scan on t1
1841 Recheck Cond: (id = t2.id)
1842 Filter: (ctid = '(1,1)'::tid)
1843 -> Bitmap Index Scan on t1_pkey
1844 Index Cond: (id = t2.id)
1847 /*+BitmapScan(t1) NoSeqScan(t2)*/
1848 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1858 ------------------------------------------
1861 TID Cond: (ctid = '(1,1)'::tid)
1862 -> Bitmap Heap Scan on t1
1863 Recheck Cond: (id = t2.id)
1864 Filter: (ctid = '(1,1)'::tid)
1865 -> Bitmap Index Scan on t1_pkey
1866 Index Cond: (id = t2.id)
1869 /*+BitmapScan(t1) NoIndexScan(t2)*/
1870 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1880 ------------------------------------------
1883 TID Cond: (ctid = '(1,1)'::tid)
1884 -> Bitmap Heap Scan on t1
1885 Recheck Cond: (id = t2.id)
1886 Filter: (ctid = '(1,1)'::tid)
1887 -> Bitmap Index Scan on t1_pkey
1888 Index Cond: (id = t2.id)
1891 /*+BitmapScan(t1) NoBitmapScan(t2)*/
1892 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1902 ------------------------------------------
1905 TID Cond: (ctid = '(1,1)'::tid)
1906 -> Bitmap Heap Scan on t1
1907 Recheck Cond: (id = t2.id)
1908 Filter: (ctid = '(1,1)'::tid)
1909 -> Bitmap Index Scan on t1_pkey
1910 Index Cond: (id = t2.id)
1913 /*+BitmapScan(t1) NoTidScan(t2)*/
1914 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1924 ------------------------------------------
1927 Filter: (ctid = '(1,1)'::tid)
1928 -> Bitmap Heap Scan on t1
1929 Recheck Cond: (id = t2.id)
1930 Filter: (ctid = '(1,1)'::tid)
1931 -> Bitmap Index Scan on t1_pkey
1932 Index Cond: (id = t2.id)
1936 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1945 -----------------------------------------
1947 Join Filter: (t1.id = t2.id)
1949 TID Cond: (ctid = '(1,1)'::tid)
1951 TID Cond: (ctid = '(1,1)'::tid)
1955 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1964 -----------------------------------------
1966 Join Filter: (t1.id = t2.id)
1968 TID Cond: (ctid = '(1,1)'::tid)
1970 TID Cond: (ctid = '(1,1)'::tid)
1973 /*+TidScan(t1) SeqScan(t2)*/
1974 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1984 -----------------------------------------
1986 Join Filter: (t1.id = t2.id)
1988 TID Cond: (ctid = '(1,1)'::tid)
1990 Filter: (ctid = '(1,1)'::tid)
1993 /*+TidScan(t1) IndexScan(t2)*/
1994 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2004 -----------------------------------------
2007 TID Cond: (ctid = '(1,1)'::tid)
2008 -> Index Scan using t2_pkey on t2
2009 Index Cond: (id = t1.id)
2010 Filter: (ctid = '(1,1)'::tid)
2013 /*+TidScan(t1) BitmapScan(t2)*/
2014 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2024 ------------------------------------------
2027 TID Cond: (ctid = '(1,1)'::tid)
2028 -> Bitmap Heap Scan on t2
2029 Recheck Cond: (id = t1.id)
2030 Filter: (ctid = '(1,1)'::tid)
2031 -> Bitmap Index Scan on t2_pkey
2032 Index Cond: (id = t1.id)
2035 /*+TidScan(t1) TidScan(t2)*/
2036 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2046 -----------------------------------------
2048 Join Filter: (t1.id = t2.id)
2050 TID Cond: (ctid = '(1,1)'::tid)
2052 TID Cond: (ctid = '(1,1)'::tid)
2055 /*+TidScan(t1) NoSeqScan(t2)*/
2056 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2066 -----------------------------------------
2068 Join Filter: (t1.id = t2.id)
2070 TID Cond: (ctid = '(1,1)'::tid)
2072 TID Cond: (ctid = '(1,1)'::tid)
2075 /*+TidScan(t1) NoIndexScan(t2)*/
2076 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2086 -----------------------------------------
2088 Join Filter: (t1.id = t2.id)
2090 TID Cond: (ctid = '(1,1)'::tid)
2092 TID Cond: (ctid = '(1,1)'::tid)
2095 /*+TidScan(t1) NoBitmapScan(t2)*/
2096 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2106 -----------------------------------------
2108 Join Filter: (t1.id = t2.id)
2110 TID Cond: (ctid = '(1,1)'::tid)
2112 TID Cond: (ctid = '(1,1)'::tid)
2115 /*+TidScan(t1) NoTidScan(t2)*/
2116 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2126 -----------------------------------------
2129 TID Cond: (ctid = '(1,1)'::tid)
2130 -> Index Scan using t2_pkey on t2
2131 Index Cond: (id = t1.id)
2132 Filter: (ctid = '(1,1)'::tid)
2136 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2145 -----------------------------------------
2147 Join Filter: (t1.id = t2.id)
2149 TID Cond: (ctid = '(1,1)'::tid)
2151 TID Cond: (ctid = '(1,1)'::tid)
2155 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2164 -----------------------------------------
2166 Join Filter: (t1.id = t2.id)
2168 TID Cond: (ctid = '(1,1)'::tid)
2170 TID Cond: (ctid = '(1,1)'::tid)
2173 /*+NoSeqScan(t1) SeqScan(t2)*/
2174 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2184 -----------------------------------------
2186 Join Filter: (t1.id = t2.id)
2188 TID Cond: (ctid = '(1,1)'::tid)
2190 Filter: (ctid = '(1,1)'::tid)
2193 /*+NoSeqScan(t1) IndexScan(t2)*/
2194 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2204 -----------------------------------------
2207 TID Cond: (ctid = '(1,1)'::tid)
2208 -> Index Scan using t2_pkey on t2
2209 Index Cond: (id = t1.id)
2210 Filter: (ctid = '(1,1)'::tid)
2213 /*+NoSeqScan(t1) BitmapScan(t2)*/
2214 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2224 ------------------------------------------
2227 TID Cond: (ctid = '(1,1)'::tid)
2228 -> Bitmap Heap Scan on t2
2229 Recheck Cond: (id = t1.id)
2230 Filter: (ctid = '(1,1)'::tid)
2231 -> Bitmap Index Scan on t2_pkey
2232 Index Cond: (id = t1.id)
2235 /*+NoSeqScan(t1) TidScan(t2)*/
2236 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2246 -----------------------------------------
2248 Join Filter: (t1.id = t2.id)
2250 TID Cond: (ctid = '(1,1)'::tid)
2252 TID Cond: (ctid = '(1,1)'::tid)
2255 /*+NoSeqScan(t1) NoSeqScan(t2)*/
2256 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2266 -----------------------------------------
2268 Join Filter: (t1.id = t2.id)
2270 TID Cond: (ctid = '(1,1)'::tid)
2272 TID Cond: (ctid = '(1,1)'::tid)
2275 /*+NoSeqScan(t1) NoIndexScan(t2)*/
2276 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2286 -----------------------------------------
2288 Join Filter: (t1.id = t2.id)
2290 TID Cond: (ctid = '(1,1)'::tid)
2292 TID Cond: (ctid = '(1,1)'::tid)
2295 /*+NoSeqScan(t1) NoBitmapScan(t2)*/
2296 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2306 -----------------------------------------
2308 Join Filter: (t1.id = t2.id)
2310 TID Cond: (ctid = '(1,1)'::tid)
2312 TID Cond: (ctid = '(1,1)'::tid)
2315 /*+NoSeqScan(t1) NoTidScan(t2)*/
2316 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2326 -----------------------------------------
2329 TID Cond: (ctid = '(1,1)'::tid)
2330 -> Index Scan using t2_pkey on t2
2331 Index Cond: (id = t1.id)
2332 Filter: (ctid = '(1,1)'::tid)
2335 /*+NoIndexScan(t1)*/
2336 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2345 -----------------------------------------
2347 Join Filter: (t1.id = t2.id)
2349 TID Cond: (ctid = '(1,1)'::tid)
2351 TID Cond: (ctid = '(1,1)'::tid)
2354 /*+NoIndexScan(t2)*/
2355 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2364 -----------------------------------------
2366 Join Filter: (t1.id = t2.id)
2368 TID Cond: (ctid = '(1,1)'::tid)
2370 TID Cond: (ctid = '(1,1)'::tid)
2373 /*+NoIndexScan(t1) SeqScan(t2)*/
2374 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2384 -----------------------------------------
2386 Join Filter: (t1.id = t2.id)
2388 TID Cond: (ctid = '(1,1)'::tid)
2390 Filter: (ctid = '(1,1)'::tid)
2393 /*+NoIndexScan(t1) IndexScan(t2)*/
2394 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2404 -----------------------------------------
2407 TID Cond: (ctid = '(1,1)'::tid)
2408 -> Index Scan using t2_pkey on t2
2409 Index Cond: (id = t1.id)
2410 Filter: (ctid = '(1,1)'::tid)
2413 /*+NoIndexScan(t1) BitmapScan(t2)*/
2414 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2424 ------------------------------------------
2427 TID Cond: (ctid = '(1,1)'::tid)
2428 -> Bitmap Heap Scan on t2
2429 Recheck Cond: (id = t1.id)
2430 Filter: (ctid = '(1,1)'::tid)
2431 -> Bitmap Index Scan on t2_pkey
2432 Index Cond: (id = t1.id)
2435 /*+NoIndexScan(t1) TidScan(t2)*/
2436 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2446 -----------------------------------------
2448 Join Filter: (t1.id = t2.id)
2450 TID Cond: (ctid = '(1,1)'::tid)
2452 TID Cond: (ctid = '(1,1)'::tid)
2455 /*+NoIndexScan(t1) NoSeqScan(t2)*/
2456 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2466 -----------------------------------------
2468 Join Filter: (t1.id = t2.id)
2470 TID Cond: (ctid = '(1,1)'::tid)
2472 TID Cond: (ctid = '(1,1)'::tid)
2475 /*+NoIndexScan(t1) NoIndexScan(t2)*/
2476 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2486 -----------------------------------------
2488 Join Filter: (t1.id = t2.id)
2490 TID Cond: (ctid = '(1,1)'::tid)
2492 TID Cond: (ctid = '(1,1)'::tid)
2495 /*+NoIndexScan(t1) NoBitmapScan(t2)*/
2496 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2506 -----------------------------------------
2508 Join Filter: (t1.id = t2.id)
2510 TID Cond: (ctid = '(1,1)'::tid)
2512 TID Cond: (ctid = '(1,1)'::tid)
2515 /*+NoIndexScan(t1) NoTidScan(t2)*/
2516 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2526 -----------------------------------------
2529 TID Cond: (ctid = '(1,1)'::tid)
2530 -> Index Scan using t2_pkey on t2
2531 Index Cond: (id = t1.id)
2532 Filter: (ctid = '(1,1)'::tid)
2535 /*+NoBitmapScan(t1)*/
2536 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2545 -----------------------------------------
2547 Join Filter: (t1.id = t2.id)
2549 TID Cond: (ctid = '(1,1)'::tid)
2551 TID Cond: (ctid = '(1,1)'::tid)
2554 /*+NoBitmapScan(t2)*/
2555 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2564 -----------------------------------------
2566 Join Filter: (t1.id = t2.id)
2568 TID Cond: (ctid = '(1,1)'::tid)
2570 TID Cond: (ctid = '(1,1)'::tid)
2573 /*+NoBitmapScan(t1) SeqScan(t2)*/
2574 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2584 -----------------------------------------
2586 Join Filter: (t1.id = t2.id)
2588 TID Cond: (ctid = '(1,1)'::tid)
2590 Filter: (ctid = '(1,1)'::tid)
2593 /*+NoBitmapScan(t1) IndexScan(t2)*/
2594 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2604 -----------------------------------------
2607 TID Cond: (ctid = '(1,1)'::tid)
2608 -> Index Scan using t2_pkey on t2
2609 Index Cond: (id = t1.id)
2610 Filter: (ctid = '(1,1)'::tid)
2613 /*+NoBitmapScan(t1) BitmapScan(t2)*/
2614 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2624 ------------------------------------------
2627 TID Cond: (ctid = '(1,1)'::tid)
2628 -> Bitmap Heap Scan on t2
2629 Recheck Cond: (id = t1.id)
2630 Filter: (ctid = '(1,1)'::tid)
2631 -> Bitmap Index Scan on t2_pkey
2632 Index Cond: (id = t1.id)
2635 /*+NoBitmapScan(t1) TidScan(t2)*/
2636 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2646 -----------------------------------------
2648 Join Filter: (t1.id = t2.id)
2650 TID Cond: (ctid = '(1,1)'::tid)
2652 TID Cond: (ctid = '(1,1)'::tid)
2655 /*+NoBitmapScan(t1) NoSeqScan(t2)*/
2656 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2666 -----------------------------------------
2668 Join Filter: (t1.id = t2.id)
2670 TID Cond: (ctid = '(1,1)'::tid)
2672 TID Cond: (ctid = '(1,1)'::tid)
2675 /*+NoBitmapScan(t1) NoIndexScan(t2)*/
2676 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2686 -----------------------------------------
2688 Join Filter: (t1.id = t2.id)
2690 TID Cond: (ctid = '(1,1)'::tid)
2692 TID Cond: (ctid = '(1,1)'::tid)
2695 /*+NoBitmapScan(t1) NoBitmapScan(t2)*/
2696 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2706 -----------------------------------------
2708 Join Filter: (t1.id = t2.id)
2710 TID Cond: (ctid = '(1,1)'::tid)
2712 TID Cond: (ctid = '(1,1)'::tid)
2715 /*+NoBitmapScan(t1) NoTidScan(t2)*/
2716 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2726 -----------------------------------------
2729 TID Cond: (ctid = '(1,1)'::tid)
2730 -> Index Scan using t2_pkey on t2
2731 Index Cond: (id = t1.id)
2732 Filter: (ctid = '(1,1)'::tid)
2736 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2745 -----------------------------------------
2748 TID Cond: (ctid = '(1,1)'::tid)
2749 -> Index Scan using t1_pkey on t1
2750 Index Cond: (id = t2.id)
2751 Filter: (ctid = '(1,1)'::tid)
2755 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2764 -----------------------------------------
2767 TID Cond: (ctid = '(1,1)'::tid)
2768 -> Index Scan using t2_pkey on t2
2769 Index Cond: (id = t1.id)
2770 Filter: (ctid = '(1,1)'::tid)
2773 /*+NoTidScan(t1) SeqScan(t2)*/
2774 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2784 ---------------------------------------
2787 Filter: (ctid = '(1,1)'::tid)
2788 -> Index Scan using t1_pkey on t1
2789 Index Cond: (id = t2.id)
2790 Filter: (ctid = '(1,1)'::tid)
2793 /*+NoTidScan(t1) IndexScan(t2)*/
2794 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2804 ---------------------------------------
2806 -> Index Scan using t2_pkey on t2
2807 Filter: (ctid = '(1,1)'::tid)
2808 -> Index Scan using t1_pkey on t1
2809 Index Cond: (id = t2.id)
2810 Filter: (ctid = '(1,1)'::tid)
2813 /*+NoTidScan(t1) BitmapScan(t2)*/
2814 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2824 ------------------------------------------
2827 Filter: (ctid = '(1,1)'::tid)
2828 -> Bitmap Heap Scan on t2
2829 Recheck Cond: (id = t1.id)
2830 Filter: (ctid = '(1,1)'::tid)
2831 -> Bitmap Index Scan on t2_pkey
2832 Index Cond: (id = t1.id)
2835 /*+NoTidScan(t1) TidScan(t2)*/
2836 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2846 -----------------------------------------
2849 TID Cond: (ctid = '(1,1)'::tid)
2850 -> Index Scan using t1_pkey on t1
2851 Index Cond: (id = t2.id)
2852 Filter: (ctid = '(1,1)'::tid)
2855 /*+NoTidScan(t1) NoSeqScan(t2)*/
2856 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2866 -----------------------------------------
2869 TID Cond: (ctid = '(1,1)'::tid)
2870 -> Index Scan using t1_pkey on t1
2871 Index Cond: (id = t2.id)
2872 Filter: (ctid = '(1,1)'::tid)
2875 /*+NoTidScan(t1) NoIndexScan(t2)*/
2876 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2886 -----------------------------------------
2889 TID Cond: (ctid = '(1,1)'::tid)
2890 -> Index Scan using t1_pkey on t1
2891 Index Cond: (id = t2.id)
2892 Filter: (ctid = '(1,1)'::tid)
2895 /*+NoTidScan(t1) NoBitmapScan(t2)*/
2896 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2906 -----------------------------------------
2909 TID Cond: (ctid = '(1,1)'::tid)
2910 -> Index Scan using t1_pkey on t1
2911 Index Cond: (id = t2.id)
2912 Filter: (ctid = '(1,1)'::tid)
2915 /*+NoTidScan(t1) NoTidScan(t2)*/
2916 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2926 ---------------------------------------
2929 Filter: (ctid = '(1,1)'::tid)
2930 -> Index Scan using t1_pkey on t1
2931 Index Cond: (id = t2.id)
2932 Filter: (ctid = '(1,1)'::tid)
2936 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;
2938 -----------------------------------------
2940 Join Filter: (t1.id = t2.id)
2942 TID Cond: (ctid = '(1,1)'::tid)
2945 TID Cond: (ctid = '(1,1)'::tid)
2949 /*+BitmapScan(t1) BitmapScan(t2)*/
2950 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;
2960 --------------------------------------------------------
2962 -> Bitmap Heap Scan on t2
2963 Recheck Cond: (id < 10)
2964 Filter: (ctid = '(1,1)'::tid)
2965 -> Bitmap Index Scan on t2_pkey
2966 Index Cond: (id < 10)
2967 -> Bitmap Heap Scan on t1
2968 Recheck Cond: ((id = t2.id) AND (id < 10))
2969 Filter: (ctid = '(1,1)'::tid)
2970 -> Bitmap Index Scan on t1_pkey
2971 Index Cond: ((id = t2.id) AND (id < 10))
2975 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
2977 ------------------------------
2979 Hash Cond: (t1.id = t2.id)
2985 /*+MergeJoin(t1 t2)*/
2986 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
2995 --------------------------------------
2997 Merge Cond: (t1.id = t2.id)
2998 -> Index Scan using t1_pkey on t1
2999 -> Index Scan using t2_pkey on t2
3002 /*+NestLoop(t1 t2)*/
3003 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
3012 ------------------------------
3014 Hash Cond: (t1.id = t2.id)
3020 -- inheritance tables test
3021 SET constraint_exclusion TO off;
3022 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3024 -----------------------------------------------------------------------
3027 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3028 -> Seq Scan on p1_c1
3029 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3030 -> Seq Scan on p1_c2
3031 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3032 -> Seq Scan on p1_c3
3033 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3034 -> Seq Scan on p1_c4
3035 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3036 -> Seq Scan on p1_c1_c1
3037 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3038 -> Seq Scan on p1_c1_c2
3039 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3040 -> Seq Scan on p1_c3_c1
3041 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3042 -> Seq Scan on p1_c3_c2
3043 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3046 SET constraint_exclusion TO on;
3047 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3049 -----------------------------------------------------------------------
3052 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3053 -> Seq Scan on p1_c1
3054 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3055 -> Seq Scan on p1_c1_c1
3056 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3057 -> Seq Scan on p1_c1_c2
3058 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3061 SET constraint_exclusion TO off;
3063 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3072 -----------------------------------------------------------------------
3075 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3076 -> Seq Scan on p1_c1
3077 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3078 -> Seq Scan on p1_c2
3079 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3080 -> Seq Scan on p1_c3
3081 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3082 -> Seq Scan on p1_c4
3083 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3084 -> Seq Scan on p1_c1_c1
3085 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3086 -> Seq Scan on p1_c1_c2
3087 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3088 -> Seq Scan on p1_c3_c1
3089 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3090 -> Seq Scan on p1_c3_c2
3091 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3095 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3104 --------------------------------------------------
3106 -> Index Scan using p1_pkey on p1
3107 Index Cond: ((id >= 50) AND (id <= 51))
3108 Filter: (ctid = '(1,1)'::tid)
3109 -> Index Scan using p1_c1_pkey on p1_c1
3110 Index Cond: ((id >= 50) AND (id <= 51))
3111 Filter: (ctid = '(1,1)'::tid)
3112 -> Index Scan using p1_c2_pkey on p1_c2
3113 Index Cond: ((id >= 50) AND (id <= 51))
3114 Filter: (ctid = '(1,1)'::tid)
3115 -> Index Scan using p1_c3_pkey on p1_c3
3116 Index Cond: ((id >= 50) AND (id <= 51))
3117 Filter: (ctid = '(1,1)'::tid)
3118 -> Index Scan using p1_c4_pkey on p1_c4
3119 Index Cond: ((id >= 50) AND (id <= 51))
3120 Filter: (ctid = '(1,1)'::tid)
3121 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3122 Index Cond: ((id >= 50) AND (id <= 51))
3123 Filter: (ctid = '(1,1)'::tid)
3124 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3125 Index Cond: ((id >= 50) AND (id <= 51))
3126 Filter: (ctid = '(1,1)'::tid)
3127 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
3128 Index Cond: ((id >= 50) AND (id <= 51))
3129 Filter: (ctid = '(1,1)'::tid)
3130 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
3131 Index Cond: ((id >= 50) AND (id <= 51))
3132 Filter: (ctid = '(1,1)'::tid)
3136 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3145 -------------------------------------------------------
3147 -> Bitmap Heap Scan on p1
3148 Recheck Cond: ((id >= 50) AND (id <= 51))
3149 Filter: (ctid = '(1,1)'::tid)
3150 -> Bitmap Index Scan on p1_pkey
3151 Index Cond: ((id >= 50) AND (id <= 51))
3152 -> Bitmap Heap Scan on p1_c1
3153 Recheck Cond: ((id >= 50) AND (id <= 51))
3154 Filter: (ctid = '(1,1)'::tid)
3155 -> Bitmap Index Scan on p1_c1_pkey
3156 Index Cond: ((id >= 50) AND (id <= 51))
3157 -> Bitmap Heap Scan on p1_c2
3158 Recheck Cond: ((id >= 50) AND (id <= 51))
3159 Filter: (ctid = '(1,1)'::tid)
3160 -> Bitmap Index Scan on p1_c2_pkey
3161 Index Cond: ((id >= 50) AND (id <= 51))
3162 -> Bitmap Heap Scan on p1_c3
3163 Recheck Cond: ((id >= 50) AND (id <= 51))
3164 Filter: (ctid = '(1,1)'::tid)
3165 -> Bitmap Index Scan on p1_c3_pkey
3166 Index Cond: ((id >= 50) AND (id <= 51))
3167 -> Bitmap Heap Scan on p1_c4
3168 Recheck Cond: ((id >= 50) AND (id <= 51))
3169 Filter: (ctid = '(1,1)'::tid)
3170 -> Bitmap Index Scan on p1_c4_pkey
3171 Index Cond: ((id >= 50) AND (id <= 51))
3172 -> Bitmap Heap Scan on p1_c1_c1
3173 Recheck Cond: ((id >= 50) AND (id <= 51))
3174 Filter: (ctid = '(1,1)'::tid)
3175 -> Bitmap Index Scan on p1_c1_c1_pkey
3176 Index Cond: ((id >= 50) AND (id <= 51))
3177 -> Bitmap Heap Scan on p1_c1_c2
3178 Recheck Cond: ((id >= 50) AND (id <= 51))
3179 Filter: (ctid = '(1,1)'::tid)
3180 -> Bitmap Index Scan on p1_c1_c2_pkey
3181 Index Cond: ((id >= 50) AND (id <= 51))
3182 -> Bitmap Heap Scan on p1_c3_c1
3183 Recheck Cond: ((id >= 50) AND (id <= 51))
3184 Filter: (ctid = '(1,1)'::tid)
3185 -> Bitmap Index Scan on p1_c3_c1_pkey
3186 Index Cond: ((id >= 50) AND (id <= 51))
3187 -> Bitmap Heap Scan on p1_c3_c2
3188 Recheck Cond: ((id >= 50) AND (id <= 51))
3189 Filter: (ctid = '(1,1)'::tid)
3190 -> Bitmap Index Scan on p1_c3_c2_pkey
3191 Index Cond: ((id >= 50) AND (id <= 51))
3195 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3204 ---------------------------------------------
3207 TID Cond: (ctid = '(1,1)'::tid)
3208 Filter: ((id >= 50) AND (id <= 51))
3209 -> Tid Scan on p1_c1
3210 TID Cond: (ctid = '(1,1)'::tid)
3211 Filter: ((id >= 50) AND (id <= 51))
3212 -> Tid Scan on p1_c2
3213 TID Cond: (ctid = '(1,1)'::tid)
3214 Filter: ((id >= 50) AND (id <= 51))
3215 -> Tid Scan on p1_c3
3216 TID Cond: (ctid = '(1,1)'::tid)
3217 Filter: ((id >= 50) AND (id <= 51))
3218 -> Tid Scan on p1_c4
3219 TID Cond: (ctid = '(1,1)'::tid)
3220 Filter: ((id >= 50) AND (id <= 51))
3221 -> Tid Scan on p1_c1_c1
3222 TID Cond: (ctid = '(1,1)'::tid)
3223 Filter: ((id >= 50) AND (id <= 51))
3224 -> Tid Scan on p1_c1_c2
3225 TID Cond: (ctid = '(1,1)'::tid)
3226 Filter: ((id >= 50) AND (id <= 51))
3227 -> Tid Scan on p1_c3_c1
3228 TID Cond: (ctid = '(1,1)'::tid)
3229 Filter: ((id >= 50) AND (id <= 51))
3230 -> Tid Scan on p1_c3_c2
3231 TID Cond: (ctid = '(1,1)'::tid)
3232 Filter: ((id >= 50) AND (id <= 51))
3235 SET constraint_exclusion TO on;
3237 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3246 -----------------------------------------------------------------------
3249 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3250 -> Seq Scan on p1_c1
3251 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3252 -> Seq Scan on p1_c1_c1
3253 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3254 -> Seq Scan on p1_c1_c2
3255 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3259 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3268 --------------------------------------------------
3270 -> Index Scan using p1_pkey on p1
3271 Index Cond: ((id >= 50) AND (id <= 51))
3272 Filter: (ctid = '(1,1)'::tid)
3273 -> Index Scan using p1_c1_pkey on p1_c1
3274 Index Cond: ((id >= 50) AND (id <= 51))
3275 Filter: (ctid = '(1,1)'::tid)
3276 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3277 Index Cond: ((id >= 50) AND (id <= 51))
3278 Filter: (ctid = '(1,1)'::tid)
3279 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3280 Index Cond: ((id >= 50) AND (id <= 51))
3281 Filter: (ctid = '(1,1)'::tid)
3285 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3294 -------------------------------------------------------
3296 -> Bitmap Heap Scan on p1
3297 Recheck Cond: ((id >= 50) AND (id <= 51))
3298 Filter: (ctid = '(1,1)'::tid)
3299 -> Bitmap Index Scan on p1_pkey
3300 Index Cond: ((id >= 50) AND (id <= 51))
3301 -> Bitmap Heap Scan on p1_c1
3302 Recheck Cond: ((id >= 50) AND (id <= 51))
3303 Filter: (ctid = '(1,1)'::tid)
3304 -> Bitmap Index Scan on p1_c1_pkey
3305 Index Cond: ((id >= 50) AND (id <= 51))
3306 -> Bitmap Heap Scan on p1_c1_c1
3307 Recheck Cond: ((id >= 50) AND (id <= 51))
3308 Filter: (ctid = '(1,1)'::tid)
3309 -> Bitmap Index Scan on p1_c1_c1_pkey
3310 Index Cond: ((id >= 50) AND (id <= 51))
3311 -> Bitmap Heap Scan on p1_c1_c2
3312 Recheck Cond: ((id >= 50) AND (id <= 51))
3313 Filter: (ctid = '(1,1)'::tid)
3314 -> Bitmap Index Scan on p1_c1_c2_pkey
3315 Index Cond: ((id >= 50) AND (id <= 51))
3319 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3328 ---------------------------------------------
3331 TID Cond: (ctid = '(1,1)'::tid)
3332 Filter: ((id >= 50) AND (id <= 51))
3333 -> Tid Scan on p1_c1
3334 TID Cond: (ctid = '(1,1)'::tid)
3335 Filter: ((id >= 50) AND (id <= 51))
3336 -> Tid Scan on p1_c1_c1
3337 TID Cond: (ctid = '(1,1)'::tid)
3338 Filter: ((id >= 50) AND (id <= 51))
3339 -> Tid Scan on p1_c1_c2
3340 TID Cond: (ctid = '(1,1)'::tid)
3341 Filter: ((id >= 50) AND (id <= 51))
3344 SET constraint_exclusion TO off;
3345 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;
3347 -----------------------------------------------------------------------------------
3349 Merge Cond: (p1.id = t1.id)
3354 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3355 -> Seq Scan on p1_c1
3356 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3357 -> Seq Scan on p1_c2
3358 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3359 -> Seq Scan on p1_c3
3360 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3361 -> Seq Scan on p1_c4
3362 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3363 -> Seq Scan on p1_c1_c1
3364 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3365 -> Seq Scan on p1_c1_c2
3366 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3367 -> Seq Scan on p1_c3_c1
3368 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3369 -> Seq Scan on p1_c3_c2
3370 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3371 -> Index Scan using t1_pkey on t1
3372 Index Cond: (id < 10)
3375 SET constraint_exclusion TO on;
3376 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;
3378 -----------------------------------------------------------------------------------
3380 Merge Cond: (p1.id = t1.id)
3385 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3386 -> Seq Scan on p1_c1
3387 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3388 -> Seq Scan on p1_c1_c1
3389 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3390 -> Seq Scan on p1_c1_c2
3391 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3392 -> Index Scan using t1_pkey on t1
3393 Index Cond: (id < 10)
3396 SET constraint_exclusion TO off;
3398 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;
3407 -----------------------------------------------------------------------------------
3409 Merge Cond: (p1.id = t1.id)
3414 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3415 -> Seq Scan on p1_c1
3416 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3417 -> Seq Scan on p1_c2
3418 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3419 -> Seq Scan on p1_c3
3420 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3421 -> Seq Scan on p1_c4
3422 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3423 -> Seq Scan on p1_c1_c1
3424 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3425 -> Seq Scan on p1_c1_c2
3426 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3427 -> Seq Scan on p1_c3_c1
3428 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3429 -> Seq Scan on p1_c3_c2
3430 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3431 -> Index Scan using t1_pkey on t1
3432 Index Cond: (id < 10)
3436 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;
3445 --------------------------------------------------------
3447 Merge Cond: (p1.id = t1.id)
3450 -> Index Scan using p1_pkey on p1
3451 Index Cond: ((id >= 50) AND (id <= 51))
3452 Filter: (ctid = '(1,1)'::tid)
3453 -> Index Scan using p1_c1_pkey on p1_c1
3454 Index Cond: ((id >= 50) AND (id <= 51))
3455 Filter: (ctid = '(1,1)'::tid)
3456 -> Index Scan using p1_c2_pkey on p1_c2
3457 Index Cond: ((id >= 50) AND (id <= 51))
3458 Filter: (ctid = '(1,1)'::tid)
3459 -> Index Scan using p1_c3_pkey on p1_c3
3460 Index Cond: ((id >= 50) AND (id <= 51))
3461 Filter: (ctid = '(1,1)'::tid)
3462 -> Index Scan using p1_c4_pkey on p1_c4
3463 Index Cond: ((id >= 50) AND (id <= 51))
3464 Filter: (ctid = '(1,1)'::tid)
3465 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3466 Index Cond: ((id >= 50) AND (id <= 51))
3467 Filter: (ctid = '(1,1)'::tid)
3468 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3469 Index Cond: ((id >= 50) AND (id <= 51))
3470 Filter: (ctid = '(1,1)'::tid)
3471 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
3472 Index Cond: ((id >= 50) AND (id <= 51))
3473 Filter: (ctid = '(1,1)'::tid)
3474 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
3475 Index Cond: ((id >= 50) AND (id <= 51))
3476 Filter: (ctid = '(1,1)'::tid)
3477 -> Index Scan using t1_pkey on t1
3478 Index Cond: (id < 10)
3482 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;
3491 -------------------------------------------------------------------
3493 Merge Cond: (p1.id = t1.id)
3497 -> Bitmap Heap Scan on p1
3498 Recheck Cond: ((id >= 50) AND (id <= 51))
3499 Filter: (ctid = '(1,1)'::tid)
3500 -> Bitmap Index Scan on p1_pkey
3501 Index Cond: ((id >= 50) AND (id <= 51))
3502 -> Bitmap Heap Scan on p1_c1
3503 Recheck Cond: ((id >= 50) AND (id <= 51))
3504 Filter: (ctid = '(1,1)'::tid)
3505 -> Bitmap Index Scan on p1_c1_pkey
3506 Index Cond: ((id >= 50) AND (id <= 51))
3507 -> Bitmap Heap Scan on p1_c2
3508 Recheck Cond: ((id >= 50) AND (id <= 51))
3509 Filter: (ctid = '(1,1)'::tid)
3510 -> Bitmap Index Scan on p1_c2_pkey
3511 Index Cond: ((id >= 50) AND (id <= 51))
3512 -> Bitmap Heap Scan on p1_c3
3513 Recheck Cond: ((id >= 50) AND (id <= 51))
3514 Filter: (ctid = '(1,1)'::tid)
3515 -> Bitmap Index Scan on p1_c3_pkey
3516 Index Cond: ((id >= 50) AND (id <= 51))
3517 -> Bitmap Heap Scan on p1_c4
3518 Recheck Cond: ((id >= 50) AND (id <= 51))
3519 Filter: (ctid = '(1,1)'::tid)
3520 -> Bitmap Index Scan on p1_c4_pkey
3521 Index Cond: ((id >= 50) AND (id <= 51))
3522 -> Bitmap Heap Scan on p1_c1_c1
3523 Recheck Cond: ((id >= 50) AND (id <= 51))
3524 Filter: (ctid = '(1,1)'::tid)
3525 -> Bitmap Index Scan on p1_c1_c1_pkey
3526 Index Cond: ((id >= 50) AND (id <= 51))
3527 -> Bitmap Heap Scan on p1_c1_c2
3528 Recheck Cond: ((id >= 50) AND (id <= 51))
3529 Filter: (ctid = '(1,1)'::tid)
3530 -> Bitmap Index Scan on p1_c1_c2_pkey
3531 Index Cond: ((id >= 50) AND (id <= 51))
3532 -> Bitmap Heap Scan on p1_c3_c1
3533 Recheck Cond: ((id >= 50) AND (id <= 51))
3534 Filter: (ctid = '(1,1)'::tid)
3535 -> Bitmap Index Scan on p1_c3_c1_pkey
3536 Index Cond: ((id >= 50) AND (id <= 51))
3537 -> Bitmap Heap Scan on p1_c3_c2
3538 Recheck Cond: ((id >= 50) AND (id <= 51))
3539 Filter: (ctid = '(1,1)'::tid)
3540 -> Bitmap Index Scan on p1_c3_c2_pkey
3541 Index Cond: ((id >= 50) AND (id <= 51))
3542 -> Index Scan using t1_pkey on t1
3543 Index Cond: (id < 10)
3547 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;
3556 ---------------------------------------------------------
3558 Merge Cond: (p1.id = t1.id)
3563 TID Cond: (ctid = '(1,1)'::tid)
3564 Filter: ((id >= 50) AND (id <= 51))
3565 -> Tid Scan on p1_c1
3566 TID Cond: (ctid = '(1,1)'::tid)
3567 Filter: ((id >= 50) AND (id <= 51))
3568 -> Tid Scan on p1_c2
3569 TID Cond: (ctid = '(1,1)'::tid)
3570 Filter: ((id >= 50) AND (id <= 51))
3571 -> Tid Scan on p1_c3
3572 TID Cond: (ctid = '(1,1)'::tid)
3573 Filter: ((id >= 50) AND (id <= 51))
3574 -> Tid Scan on p1_c4
3575 TID Cond: (ctid = '(1,1)'::tid)
3576 Filter: ((id >= 50) AND (id <= 51))
3577 -> Tid Scan on p1_c1_c1
3578 TID Cond: (ctid = '(1,1)'::tid)
3579 Filter: ((id >= 50) AND (id <= 51))
3580 -> Tid Scan on p1_c1_c2
3581 TID Cond: (ctid = '(1,1)'::tid)
3582 Filter: ((id >= 50) AND (id <= 51))
3583 -> Tid Scan on p1_c3_c1
3584 TID Cond: (ctid = '(1,1)'::tid)
3585 Filter: ((id >= 50) AND (id <= 51))
3586 -> Tid Scan on p1_c3_c2
3587 TID Cond: (ctid = '(1,1)'::tid)
3588 Filter: ((id >= 50) AND (id <= 51))
3589 -> Index Scan using t1_pkey on t1
3590 Index Cond: (id < 10)
3593 /*+NestLoop(p1 t1)*/
3594 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;
3603 -----------------------------------------------------------------------------
3605 Join Filter: (p1.id = t1.id)
3608 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3609 -> Seq Scan on p1_c1
3610 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3611 -> Seq Scan on p1_c2
3612 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3613 -> Seq Scan on p1_c3
3614 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3615 -> Seq Scan on p1_c4
3616 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3617 -> Seq Scan on p1_c1_c1
3618 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3619 -> Seq Scan on p1_c1_c2
3620 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3621 -> Seq Scan on p1_c3_c1
3622 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3623 -> Seq Scan on p1_c3_c2
3624 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3626 -> Index Scan using t1_pkey on t1
3627 Index Cond: (id < 10)
3630 /*+MergeJoin(p1 t1)*/
3631 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;
3640 -----------------------------------------------------------------------------------
3642 Merge Cond: (p1.id = t1.id)
3647 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3648 -> Seq Scan on p1_c1
3649 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3650 -> Seq Scan on p1_c2
3651 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3652 -> Seq Scan on p1_c3
3653 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3654 -> Seq Scan on p1_c4
3655 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3656 -> Seq Scan on p1_c1_c1
3657 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3658 -> Seq Scan on p1_c1_c2
3659 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3660 -> Seq Scan on p1_c3_c1
3661 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3662 -> Seq Scan on p1_c3_c2
3663 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3664 -> Index Scan using t1_pkey on t1
3665 Index Cond: (id < 10)
3668 /*+HashJoin(p1 t1)*/
3669 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;
3678 -----------------------------------------------------------------------------
3680 Hash Cond: (p1.id = t1.id)
3683 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3684 -> Seq Scan on p1_c1
3685 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3686 -> Seq Scan on p1_c2
3687 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3688 -> Seq Scan on p1_c3
3689 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3690 -> Seq Scan on p1_c4
3691 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3692 -> Seq Scan on p1_c1_c1
3693 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3694 -> Seq Scan on p1_c1_c2
3695 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3696 -> Seq Scan on p1_c3_c1
3697 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3698 -> Seq Scan on p1_c3_c2
3699 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3701 -> Index Scan using t1_pkey on t1
3702 Index Cond: (id < 10)
3705 SET constraint_exclusion TO on;
3707 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;
3716 -----------------------------------------------------------------------------------
3718 Merge Cond: (p1.id = t1.id)
3723 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3724 -> Seq Scan on p1_c1
3725 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3726 -> Seq Scan on p1_c1_c1
3727 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3728 -> Seq Scan on p1_c1_c2
3729 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3730 -> Index Scan using t1_pkey on t1
3731 Index Cond: (id < 10)
3735 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;
3744 --------------------------------------------------------
3746 Merge Cond: (p1.id = t1.id)
3749 -> Index Scan using p1_pkey on p1
3750 Index Cond: ((id >= 50) AND (id <= 51))
3751 Filter: (ctid = '(1,1)'::tid)
3752 -> Index Scan using p1_c1_pkey on p1_c1
3753 Index Cond: ((id >= 50) AND (id <= 51))
3754 Filter: (ctid = '(1,1)'::tid)
3755 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3756 Index Cond: ((id >= 50) AND (id <= 51))
3757 Filter: (ctid = '(1,1)'::tid)
3758 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3759 Index Cond: ((id >= 50) AND (id <= 51))
3760 Filter: (ctid = '(1,1)'::tid)
3761 -> Index Scan using t1_pkey on t1
3762 Index Cond: (id < 10)
3766 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;
3775 -------------------------------------------------------------------
3777 Merge Cond: (p1.id = t1.id)
3781 -> Bitmap Heap Scan on p1
3782 Recheck Cond: ((id >= 50) AND (id <= 51))
3783 Filter: (ctid = '(1,1)'::tid)
3784 -> Bitmap Index Scan on p1_pkey
3785 Index Cond: ((id >= 50) AND (id <= 51))
3786 -> Bitmap Heap Scan on p1_c1
3787 Recheck Cond: ((id >= 50) AND (id <= 51))
3788 Filter: (ctid = '(1,1)'::tid)
3789 -> Bitmap Index Scan on p1_c1_pkey
3790 Index Cond: ((id >= 50) AND (id <= 51))
3791 -> Bitmap Heap Scan on p1_c1_c1
3792 Recheck Cond: ((id >= 50) AND (id <= 51))
3793 Filter: (ctid = '(1,1)'::tid)
3794 -> Bitmap Index Scan on p1_c1_c1_pkey
3795 Index Cond: ((id >= 50) AND (id <= 51))
3796 -> Bitmap Heap Scan on p1_c1_c2
3797 Recheck Cond: ((id >= 50) AND (id <= 51))
3798 Filter: (ctid = '(1,1)'::tid)
3799 -> Bitmap Index Scan on p1_c1_c2_pkey
3800 Index Cond: ((id >= 50) AND (id <= 51))
3801 -> Index Scan using t1_pkey on t1
3802 Index Cond: (id < 10)
3806 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;
3815 ---------------------------------------------------------
3817 Merge Cond: (p1.id = t1.id)
3822 TID Cond: (ctid = '(1,1)'::tid)
3823 Filter: ((id >= 50) AND (id <= 51))
3824 -> Tid Scan on p1_c1
3825 TID Cond: (ctid = '(1,1)'::tid)
3826 Filter: ((id >= 50) AND (id <= 51))
3827 -> Tid Scan on p1_c1_c1
3828 TID Cond: (ctid = '(1,1)'::tid)
3829 Filter: ((id >= 50) AND (id <= 51))
3830 -> Tid Scan on p1_c1_c2
3831 TID Cond: (ctid = '(1,1)'::tid)
3832 Filter: ((id >= 50) AND (id <= 51))
3833 -> Index Scan using t1_pkey on t1
3834 Index Cond: (id < 10)
3837 /*+NestLoop(p1 t1)*/
3838 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;
3847 -----------------------------------------------------------------------------------
3849 Join Filter: (p1.id = t1.id)
3850 -> Index Scan using t1_pkey on t1
3851 Index Cond: (id < 10)
3855 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3856 -> Seq Scan on p1_c1
3857 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3858 -> Seq Scan on p1_c1_c1
3859 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3860 -> Seq Scan on p1_c1_c2
3861 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3864 /*+MergeJoin(p1 t1)*/
3865 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;
3874 -----------------------------------------------------------------------------------
3876 Merge Cond: (p1.id = t1.id)
3881 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3882 -> Seq Scan on p1_c1
3883 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3884 -> Seq Scan on p1_c1_c1
3885 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3886 -> Seq Scan on p1_c1_c2
3887 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3888 -> Index Scan using t1_pkey on t1
3889 Index Cond: (id < 10)
3892 /*+HashJoin(p1 t1)*/
3893 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;
3902 -----------------------------------------------------------------------------------
3904 Hash Cond: (t1.id = p1.id)
3905 -> Index Scan using t1_pkey on t1
3906 Index Cond: (id < 10)
3910 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3911 -> Seq Scan on p1_c1
3912 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3913 -> Seq Scan on p1_c1_c1
3914 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3915 -> Seq Scan on p1_c1_c2
3916 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3919 SET constraint_exclusion TO off;
3920 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3922 -----------------------------------------------------------------
3924 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3927 SET constraint_exclusion TO on;
3928 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3930 -----------------------------------------------------------------
3932 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3935 SET constraint_exclusion TO off;
3937 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3946 -----------------------------------------------------------------
3948 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3952 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3961 -------------------------------------------
3962 Index Scan using p1_pkey on p1
3963 Index Cond: ((id >= 50) AND (id <= 51))
3964 Filter: (ctid = '(1,1)'::tid)
3968 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3977 -------------------------------------------------
3978 Bitmap Heap Scan on p1
3979 Recheck Cond: ((id >= 50) AND (id <= 51))
3980 Filter: (ctid = '(1,1)'::tid)
3981 -> Bitmap Index Scan on p1_pkey
3982 Index Cond: ((id >= 50) AND (id <= 51))
3986 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3995 ---------------------------------------
3997 TID Cond: (ctid = '(1,1)'::tid)
3998 Filter: ((id >= 50) AND (id <= 51))
4001 /*+NestLoop(p1 t1)*/
4002 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;
4011 -----------------------------------------------------------------------
4014 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4015 -> Index Scan using t1_pkey on t1
4016 Index Cond: ((id = p1.id) AND (id < 10))
4019 /*+MergeJoin(p1 t1)*/
4020 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;
4029 -----------------------------------------------------------------------------
4031 Merge Cond: (p1.id = t1.id)
4035 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4036 -> Index Scan using t1_pkey on t1
4037 Index Cond: (id < 10)
4040 /*+HashJoin(p1 t1)*/
4041 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;
4050 -----------------------------------------------------------------------------
4052 Hash Cond: (t1.id = p1.id)
4053 -> Index Scan using t1_pkey on t1
4054 Index Cond: (id < 10)
4057 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4060 SET constraint_exclusion TO on;
4062 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4071 -----------------------------------------------------------------
4073 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4077 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4086 -------------------------------------------
4087 Index Scan using p1_pkey on p1
4088 Index Cond: ((id >= 50) AND (id <= 51))
4089 Filter: (ctid = '(1,1)'::tid)
4093 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4102 -------------------------------------------------
4103 Bitmap Heap Scan on p1
4104 Recheck Cond: ((id >= 50) AND (id <= 51))
4105 Filter: (ctid = '(1,1)'::tid)
4106 -> Bitmap Index Scan on p1_pkey
4107 Index Cond: ((id >= 50) AND (id <= 51))
4111 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4120 ---------------------------------------
4122 TID Cond: (ctid = '(1,1)'::tid)
4123 Filter: ((id >= 50) AND (id <= 51))
4126 /*+NestLoop(p1 t1)*/
4127 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;
4136 -----------------------------------------------------------------------
4139 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4140 -> Index Scan using t1_pkey on t1
4141 Index Cond: ((id = p1.id) AND (id < 10))
4144 /*+MergeJoin(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 Merge Cond: (p1.id = t1.id)
4160 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4161 -> Index Scan using t1_pkey on t1
4162 Index Cond: (id < 10)
4165 /*+HashJoin(p1 t1)*/
4166 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;
4175 -----------------------------------------------------------------------------
4177 Hash Cond: (t1.id = p1.id)
4178 -> Index Scan using t1_pkey on t1
4179 Index Cond: (id < 10)
4182 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4185 SET constraint_exclusion TO off;
4186 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;
4188 -----------------------------------------------------------------------
4191 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4192 -> Index Scan using t1_pkey on t1
4193 Index Cond: ((id = p1.id) AND (id < 10))
4196 SET constraint_exclusion TO on;
4197 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;
4199 -----------------------------------------------------------------------
4202 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4203 -> Index Scan using t1_pkey on t1
4204 Index Cond: ((id = p1.id) AND (id < 10))
4207 SET constraint_exclusion TO off;
4209 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;
4218 -----------------------------------------------------------------------
4221 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4222 -> Index Scan using t1_pkey on t1
4223 Index Cond: ((id = p1.id) AND (id < 10))
4227 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;
4236 --------------------------------------------------
4238 -> Index Scan using p1_pkey on p1
4239 Index Cond: ((id >= 50) AND (id <= 51))
4240 Filter: (ctid = '(1,1)'::tid)
4241 -> Index Scan using t1_pkey on t1
4242 Index Cond: ((id = p1.id) AND (id < 10))
4246 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;
4255 -------------------------------------------------------
4257 -> Bitmap Heap Scan on p1
4258 Recheck Cond: ((id >= 50) AND (id <= 51))
4259 Filter: (ctid = '(1,1)'::tid)
4260 -> Bitmap Index Scan on p1_pkey
4261 Index Cond: ((id >= 50) AND (id <= 51))
4262 -> Index Scan using t1_pkey on t1
4263 Index Cond: ((id = p1.id) AND (id < 10))
4267 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;
4276 --------------------------------------------------
4279 TID Cond: (ctid = '(1,1)'::tid)
4280 Filter: ((id >= 50) AND (id <= 51))
4281 -> Index Scan using t1_pkey on t1
4282 Index Cond: ((id = p1.id) AND (id < 10))
4285 SET constraint_exclusion TO on;
4287 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;
4296 -----------------------------------------------------------------------
4299 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4300 -> Index Scan using t1_pkey on t1
4301 Index Cond: ((id = p1.id) AND (id < 10))
4305 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;
4314 --------------------------------------------------
4316 -> Index Scan using p1_pkey on p1
4317 Index Cond: ((id >= 50) AND (id <= 51))
4318 Filter: (ctid = '(1,1)'::tid)
4319 -> Index Scan using t1_pkey on t1
4320 Index Cond: ((id = p1.id) AND (id < 10))
4324 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;
4333 -------------------------------------------------------
4335 -> Bitmap Heap Scan on p1
4336 Recheck Cond: ((id >= 50) AND (id <= 51))
4337 Filter: (ctid = '(1,1)'::tid)
4338 -> Bitmap Index Scan on p1_pkey
4339 Index Cond: ((id >= 50) AND (id <= 51))
4340 -> Index Scan using t1_pkey on t1
4341 Index Cond: ((id = p1.id) AND (id < 10))
4345 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;
4354 --------------------------------------------------
4357 TID Cond: (ctid = '(1,1)'::tid)
4358 Filter: ((id >= 50) AND (id <= 51))
4359 -> Index Scan using t1_pkey on t1
4360 Index Cond: ((id = p1.id) AND (id < 10))
4364 /*+SeqScan("""t1 ) ")IndexScan("t 2 """)HashJoin("""t1 ) "T3"t 2 """)Leading("""t1 ) "T3"t 2 """)Set(application_name"a a a"" a A")*/
4365 EXPLAIN (COSTS false) SELECT * FROM t1 """t1 ) ", t2 "t 2 """, t3 "T3" WHERE """t1 ) ".id = "t 2 """.id AND """t1 ) ".id = "T3".id;
4370 HashJoin("""t1 ) " T3 "t 2 """)
4371 Leading("""t1 ) " T3 "t 2 """)
4372 Set(application_name "a a a"" a A")
4378 ---------------------------------------------------------
4380 Hash Cond: ("t 2 """.id = """t1 ) ".id)
4381 -> Index Scan using t2_pkey on t2 "t 2 """
4384 Hash Cond: ("""t1 ) ".id = "T3".id)
4385 -> Seq Scan on t1 """t1 ) "
4387 -> Seq Scan on t3 "T3"
4390 -- duplicate hint test
4391 /*+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)*/
4392 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
4393 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)"
4394 DETAIL: Conflict scan method hint.
4395 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)"
4396 DETAIL: Conflict scan method hint.
4397 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)"
4398 DETAIL: Conflict scan method hint.
4399 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)"
4400 DETAIL: Conflict scan method hint.
4401 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)"
4402 DETAIL: Conflict scan method hint.
4403 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)"
4404 DETAIL: Conflict scan method hint.
4405 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)"
4406 DETAIL: Conflict join method hint.
4407 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)"
4408 DETAIL: Conflict join method hint.
4409 INFO: pg_hint_plan: hint syntax error at or near "Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4410 DETAIL: Conflict set hint.
4411 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)"
4412 DETAIL: Conflict leading hint.
4419 Set(enable_mergejoin on)
4420 Set(enable_seqscan on)
4432 Set(enable_seqscan off)
4436 -----------------------------------------------
4438 Merge Cond: (t1.id = t2.id)
4442 TID Cond: (ctid = '(1,1)'::tid)
4446 TID Cond: (ctid = '(1,1)'::tid)
4449 -- sub query Leading hint test
4450 SET from_collapse_limit TO 100;
4451 SET geqo_threshold TO 100;
4452 EXPLAIN (COSTS false)
4454 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
4457 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
4458 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4459 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
4460 ) 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 = (
4461 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
4464 ------------------------------------------------------------------------------
4469 Merge Cond: (t1_5.id = t3_5.id)
4471 Merge Cond: (t1_5.id = t2_5.id)
4472 -> Index Only Scan using t1_pkey on t1 t1_5
4473 -> Index Only Scan using t2_pkey on t2 t2_5
4476 -> Seq Scan on t3 t3_5
4477 InitPlan 2 (returns $1)
4480 Merge Cond: (t1_2.id = t3_2.id)
4482 Merge Cond: (t1_2.id = t2_2.id)
4483 -> Index Only Scan using t1_pkey on t1 t1_2
4484 -> Index Only Scan using t2_pkey on t2 t2_2
4487 -> Seq Scan on t3 t3_2
4488 InitPlan 3 (returns $2)
4491 Merge Cond: (t1_4.id = t3_4.id)
4493 Merge Cond: (t1_4.id = t2_4.id)
4494 -> Index Only Scan using t1_pkey on t1 t1_4
4495 -> Index Only Scan using t2_pkey on t2 t2_4
4498 -> Seq Scan on t3 t3_4
4504 -> Index Only Scan using t1_pkey on t1 t1_1
4505 Index Cond: (id = $2)
4506 -> Index Only Scan using t2_pkey on t2 t2_1
4507 Index Cond: (id = $2)
4508 -> Seq Scan on t3 t3_1
4510 -> Index Only Scan using t1_pkey on t1 t1_3
4511 Index Cond: (id = $2)
4512 -> Index Only Scan using t2_pkey on t2 t2_3
4513 Index Cond: (id = $2)
4514 -> Seq Scan on t3 t3_3
4520 /*+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)*/
4521 EXPLAIN (COSTS false)
4523 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
4526 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
4527 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4528 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
4529 ) 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 = (
4530 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
4536 MergeJoin(t1_3 t3_3)
4544 ------------------------------------------------------------------------------
4549 Merge Cond: (t1_5.id = t3_5.id)
4551 -> Index Only Scan using t2_pkey on t2 t2_5
4552 -> Index Only Scan using t1_pkey on t1 t1_5
4553 Index Cond: (id = t2_5.id)
4556 -> Seq Scan on t3 t3_5
4557 InitPlan 2 (returns $3)
4560 Merge Cond: (t1_2.id = t3_2.id)
4562 -> Index Only Scan using t2_pkey on t2 t2_2
4563 -> Index Only Scan using t1_pkey on t1 t1_2
4564 Index Cond: (id = t2_2.id)
4567 -> Seq Scan on t3 t3_2
4568 InitPlan 3 (returns $5)
4571 Merge Cond: (t1_4.id = t3_4.id)
4573 -> Index Only Scan using t2_pkey on t2 t2_4
4574 -> Index Only Scan using t1_pkey on t1 t1_4
4575 Index Cond: (id = t2_4.id)
4578 -> Seq Scan on t3 t3_4
4584 -> Index Only Scan using t1_pkey on t1 t1_1
4585 Index Cond: (id = $5)
4586 -> Index Only Scan using t2_pkey on t2 t2_1
4587 Index Cond: (id = $5)
4588 -> Seq Scan on t3 t3_1
4590 -> Index Only Scan using t1_pkey on t1 t1_3
4591 Index Cond: (id = $5)
4592 -> Index Only Scan using t2_pkey on t2 t2_3
4593 Index Cond: (id = $5)
4594 -> Seq Scan on t3 t3_3
4600 /*+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)*/
4601 EXPLAIN (COSTS false)
4603 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
4606 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
4607 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4608 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
4609 ) 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 = (
4610 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
4616 MergeJoin(t1_3 t3_3)
4620 Leading(a t1_1 t1_2 t1_4 t1_5)
4625 ------------------------------------------------------------------------------
4630 Merge Cond: (t1_5.id = t3_5.id)
4632 -> Index Only Scan using t2_pkey on t2 t2_5
4633 -> Index Only Scan using t1_pkey on t1 t1_5
4634 Index Cond: (id = t2_5.id)
4637 -> Seq Scan on t3 t3_5
4638 InitPlan 2 (returns $3)
4641 Merge Cond: (t1_2.id = t3_2.id)
4643 -> Index Only Scan using t2_pkey on t2 t2_2
4644 -> Index Only Scan using t1_pkey on t1 t1_2
4645 Index Cond: (id = t2_2.id)
4648 -> Seq Scan on t3 t3_2
4649 InitPlan 3 (returns $5)
4652 Merge Cond: (t1_4.id = t3_4.id)
4654 -> Index Only Scan using t2_pkey on t2 t2_4
4655 -> Index Only Scan using t1_pkey on t1 t1_4
4656 Index Cond: (id = t2_4.id)
4659 -> Seq Scan on t3 t3_4
4665 -> Index Only Scan using t1_pkey on t1 t1_1
4666 Index Cond: (id = $5)
4667 -> Index Only Scan using t2_pkey on t2 t2_1
4668 Index Cond: (id = $5)
4669 -> Seq Scan on t3 t3_1
4671 -> Index Only Scan using t1_pkey on t1 t1_3
4672 Index Cond: (id = $5)
4673 -> Index Only Scan using t2_pkey on t2 t2_3
4674 Index Cond: (id = $5)
4675 -> Seq Scan on t3 t3_3
4681 /*+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)*/
4682 EXPLAIN (COSTS false)
4684 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
4687 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
4688 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4689 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
4690 ) 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 = (
4691 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
4697 MergeJoin(t1_3 t3_3)
4701 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)
4706 ------------------------------------------------------------------------------
4711 Merge Cond: (t1_5.id = t3_5.id)
4713 -> Index Only Scan using t2_pkey on t2 t2_5
4714 -> Index Only Scan using t1_pkey on t1 t1_5
4715 Index Cond: (id = t2_5.id)
4718 -> Seq Scan on t3 t3_5
4719 InitPlan 2 (returns $3)
4722 Merge Cond: (t1_2.id = t3_2.id)
4724 -> Index Only Scan using t2_pkey on t2 t2_2
4725 -> Index Only Scan using t1_pkey on t1 t1_2
4726 Index Cond: (id = t2_2.id)
4729 -> Seq Scan on t3 t3_2
4730 InitPlan 3 (returns $5)
4733 Merge Cond: (t1_4.id = t3_4.id)
4735 -> Index Only Scan using t2_pkey on t2 t2_4
4736 -> Index Only Scan using t1_pkey on t1 t1_4
4737 Index Cond: (id = t2_4.id)
4740 -> Seq Scan on t3 t3_4
4746 -> Index Only Scan using t1_pkey on t1 t1_1
4747 Index Cond: (id = $5)
4748 -> Index Only Scan using t2_pkey on t2 t2_1
4749 Index Cond: (id = $5)
4750 -> Seq Scan on t3 t3_1
4752 -> Index Only Scan using t1_pkey on t1 t1_3
4753 Index Cond: (id = $5)
4754 -> Index Only Scan using t2_pkey on t2 t2_3
4755 Index Cond: (id = $5)
4756 -> Seq Scan on t3 t3_3
4762 /*+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)*/
4763 EXPLAIN (COSTS false)
4765 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
4768 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
4769 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4770 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
4771 ) 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 = (
4772 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
4776 Leading(t3_5 t2_5 t1_5)
4777 Leading(t3_2 t2_2 t1_2)
4778 Leading(t3_4 t2_4 t1_4)
4779 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
4783 MergeJoin(t1_3 t3_3)
4790 ------------------------------------------------------------------------
4795 Merge Cond: (t2_5.id = t1_5.id)
4797 Merge Cond: (t2_5.id = t3_5.id)
4798 -> Index Only Scan using t2_pkey on t2 t2_5
4801 -> Seq Scan on t3 t3_5
4802 -> Index Only Scan using t1_pkey on t1 t1_5
4803 InitPlan 2 (returns $1)
4806 Merge Cond: (t2_2.id = t1_2.id)
4808 Merge Cond: (t2_2.id = t3_2.id)
4809 -> Index Only Scan using t2_pkey on t2 t2_2
4812 -> Seq Scan on t3 t3_2
4813 -> Index Only Scan using t1_pkey on t1 t1_2
4814 InitPlan 3 (returns $2)
4817 Merge Cond: (t2_4.id = t1_4.id)
4819 Merge Cond: (t2_4.id = t3_4.id)
4820 -> Index Only Scan using t2_pkey on t2 t2_4
4823 -> Seq Scan on t3 t3_4
4824 -> Index Only Scan using t1_pkey on t1 t1_4
4830 -> Seq Scan on t3 t3_3
4834 -> Index Only Scan using t2_pkey on t2 t2_3
4835 Index Cond: (id = $2)
4836 -> Index Only Scan using t1_pkey on t1 t1_3
4837 Index Cond: (id = $2)
4838 -> Seq Scan on t3 t3_1
4840 -> Index Only Scan using t2_pkey on t2 t2_1
4841 Index Cond: (id = $2)
4842 -> Index Only Scan using t1_pkey on t1 t1_1
4843 Index Cond: (id = $2)
4846 SET from_collapse_limit TO 1;
4847 EXPLAIN (COSTS false)
4849 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
4852 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
4853 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4854 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
4855 ) 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 = (
4856 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
4859 --------------------------------------------------------------------
4864 Merge Cond: (t1_5.id = t3_5.id)
4866 Merge Cond: (t1_5.id = t2_5.id)
4867 -> Index Only Scan using t1_pkey on t1 t1_5
4868 -> Index Only Scan using t2_pkey on t2 t2_5
4871 -> Seq Scan on t3 t3_5
4872 InitPlan 2 (returns $1)
4875 Merge Cond: (t1_2.id = t3_2.id)
4877 Merge Cond: (t1_2.id = t2_2.id)
4878 -> Index Only Scan using t1_pkey on t1 t1_2
4879 -> Index Only Scan using t2_pkey on t2 t2_2
4882 -> Seq Scan on t3 t3_2
4883 InitPlan 3 (returns $2)
4886 Merge Cond: (t1_4.id = t3_4.id)
4888 Merge Cond: (t1_4.id = t2_4.id)
4889 -> Index Only Scan using t1_pkey on t1 t1_4
4890 -> Index Only Scan using t2_pkey on t2 t2_4
4893 -> Seq Scan on t3 t3_4
4897 -> Index Only Scan using t1_pkey on t1 t1_1
4898 Index Cond: (id = $2)
4899 -> Index Only Scan using t2_pkey on t2 t2_1
4900 Index Cond: (id = $2)
4901 -> Seq Scan on t3 t3_1
4905 -> Index Only Scan using t1_pkey on t1 t1_3
4906 Index Cond: (id = $2)
4907 -> Index Only Scan using t2_pkey on t2 t2_3
4908 Index Cond: (id = $2)
4909 -> Seq Scan on t3 t3_3
4915 /*+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)*/
4916 EXPLAIN (COSTS false)
4918 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
4921 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
4922 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4923 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
4924 ) 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 = (
4925 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
4931 MergeJoin(t1_3 t3_3)
4939 --------------------------------------------------------------------
4944 Merge Cond: (t1_5.id = t3_5.id)
4946 -> Index Only Scan using t2_pkey on t2 t2_5
4947 -> Index Only Scan using t1_pkey on t1 t1_5
4948 Index Cond: (id = t2_5.id)
4951 -> Seq Scan on t3 t3_5
4952 InitPlan 2 (returns $3)
4955 Merge Cond: (t1_2.id = t3_2.id)
4957 -> Index Only Scan using t2_pkey on t2 t2_2
4958 -> Index Only Scan using t1_pkey on t1 t1_2
4959 Index Cond: (id = t2_2.id)
4962 -> Seq Scan on t3 t3_2
4963 InitPlan 3 (returns $5)
4966 Merge Cond: (t1_4.id = t3_4.id)
4968 -> Index Only Scan using t2_pkey on t2 t2_4
4969 -> Index Only Scan using t1_pkey on t1 t1_4
4970 Index Cond: (id = t2_4.id)
4973 -> Seq Scan on t3 t3_4
4977 -> Index Only Scan using t1_pkey on t1 t1_1
4978 Index Cond: (id = $5)
4979 -> Index Only Scan using t2_pkey on t2 t2_1
4980 Index Cond: (id = $5)
4981 -> Seq Scan on t3 t3_1
4985 -> Index Only Scan using t1_pkey on t1 t1_3
4986 Index Cond: (id = $5)
4987 -> Index Only Scan using t2_pkey on t2 t2_3
4988 Index Cond: (id = $5)
4989 -> Seq Scan on t3 t3_3
4995 /*+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)*/
4996 EXPLAIN (COSTS false)
4998 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
5001 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
5002 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5003 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
5004 ) 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 = (
5005 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
5011 MergeJoin(t1_3 t3_3)
5015 Leading(a t1_1 t1_2 t1_4 t1_5)
5020 --------------------------------------------------------------------
5025 Merge Cond: (t1_5.id = t3_5.id)
5027 -> Index Only Scan using t2_pkey on t2 t2_5
5028 -> Index Only Scan using t1_pkey on t1 t1_5
5029 Index Cond: (id = t2_5.id)
5032 -> Seq Scan on t3 t3_5
5033 InitPlan 2 (returns $3)
5036 Merge Cond: (t1_2.id = t3_2.id)
5038 -> Index Only Scan using t2_pkey on t2 t2_2
5039 -> Index Only Scan using t1_pkey on t1 t1_2
5040 Index Cond: (id = t2_2.id)
5043 -> Seq Scan on t3 t3_2
5044 InitPlan 3 (returns $5)
5047 Merge Cond: (t1_4.id = t3_4.id)
5049 -> Index Only Scan using t2_pkey on t2 t2_4
5050 -> Index Only Scan using t1_pkey on t1 t1_4
5051 Index Cond: (id = t2_4.id)
5054 -> Seq Scan on t3 t3_4
5058 -> Index Only Scan using t1_pkey on t1 t1_1
5059 Index Cond: (id = $5)
5060 -> Index Only Scan using t2_pkey on t2 t2_1
5061 Index Cond: (id = $5)
5062 -> Seq Scan on t3 t3_1
5066 -> Index Only Scan using t1_pkey on t1 t1_3
5067 Index Cond: (id = $5)
5068 -> Index Only Scan using t2_pkey on t2 t2_3
5069 Index Cond: (id = $5)
5070 -> Seq Scan on t3 t3_3
5076 /*+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)*/
5077 EXPLAIN (COSTS false)
5079 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
5082 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
5083 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5084 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
5085 ) 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 = (
5086 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
5092 MergeJoin(t1_3 t3_3)
5096 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)
5101 --------------------------------------------------------------------
5106 Merge Cond: (t1_5.id = t3_5.id)
5108 -> Index Only Scan using t2_pkey on t2 t2_5
5109 -> Index Only Scan using t1_pkey on t1 t1_5
5110 Index Cond: (id = t2_5.id)
5113 -> Seq Scan on t3 t3_5
5114 InitPlan 2 (returns $3)
5117 Merge Cond: (t1_2.id = t3_2.id)
5119 -> Index Only Scan using t2_pkey on t2 t2_2
5120 -> Index Only Scan using t1_pkey on t1 t1_2
5121 Index Cond: (id = t2_2.id)
5124 -> Seq Scan on t3 t3_2
5125 InitPlan 3 (returns $5)
5128 Merge Cond: (t1_4.id = t3_4.id)
5130 -> Index Only Scan using t2_pkey on t2 t2_4
5131 -> Index Only Scan using t1_pkey on t1 t1_4
5132 Index Cond: (id = t2_4.id)
5135 -> Seq Scan on t3 t3_4
5139 -> Index Only Scan using t1_pkey on t1 t1_1
5140 Index Cond: (id = $5)
5141 -> Index Only Scan using t2_pkey on t2 t2_1
5142 Index Cond: (id = $5)
5143 -> Seq Scan on t3 t3_1
5147 -> Index Only Scan using t1_pkey on t1 t1_3
5148 Index Cond: (id = $5)
5149 -> Index Only Scan using t2_pkey on t2 t2_3
5150 Index Cond: (id = $5)
5151 -> Seq Scan on t3 t3_3
5157 /*+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)*/
5158 EXPLAIN (COSTS false)
5160 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
5163 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
5164 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5165 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
5166 ) 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 = (
5167 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
5171 MergeJoin(t1_3 t3_3)
5172 Leading(t3_5 t2_5 t1_5)
5173 Leading(t3_2 t2_2 t1_2)
5174 Leading(t3_4 t2_4 t1_4)
5175 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
5185 ------------------------------------------------------------------------------
5190 Merge Cond: (t2_5.id = t1_5.id)
5192 Merge Cond: (t2_5.id = t3_5.id)
5193 -> Index Only Scan using t2_pkey on t2 t2_5
5196 -> Seq Scan on t3 t3_5
5197 -> Index Only Scan using t1_pkey on t1 t1_5
5198 InitPlan 2 (returns $1)
5201 Merge Cond: (t2_2.id = t1_2.id)
5203 Merge Cond: (t2_2.id = t3_2.id)
5204 -> Index Only Scan using t2_pkey on t2 t2_2
5207 -> Seq Scan on t3 t3_2
5208 -> Index Only Scan using t1_pkey on t1 t1_2
5209 InitPlan 3 (returns $2)
5212 Merge Cond: (t2_4.id = t1_4.id)
5214 Merge Cond: (t2_4.id = t3_4.id)
5215 -> Index Only Scan using t2_pkey on t2 t2_4
5218 -> Seq Scan on t3 t3_4
5219 -> Index Only Scan using t1_pkey on t1 t1_4
5225 -> Index Only Scan using t1_pkey on t1 t1_3
5226 Index Cond: (id = $2)
5227 -> Index Only Scan using t2_pkey on t2 t2_3
5228 Index Cond: (id = $2)
5229 -> Seq Scan on t3 t3_3
5233 -> Seq Scan on t3 t3_1
5235 -> Index Only Scan using t2_pkey on t2 t2_1
5236 Index Cond: (id = $2)
5237 -> Index Only Scan using t1_pkey on t1 t1_1
5238 Index Cond: (id = $2)
5242 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5244 -------------------------------------------------
5246 Merge Cond: (t1.id = t2.id)
5248 Merge Cond: (t1.id = t1_1.id)
5249 -> Index Scan using t1_pkey on t1
5250 -> Index Scan using t1_pkey on t1 t1_1
5251 -> Index Scan using t2_pkey on t2
5254 /*+NestLoop(t1 t2)*/
5255 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5256 INFO: pg_hint_plan: hint syntax error at or near "NestLoop(t1 t2)"
5257 DETAIL: Relation name "t1" is ambiguous.
5266 -------------------------------------------------
5268 Merge Cond: (t1.id = t2.id)
5270 Merge Cond: (t1.id = t1_1.id)
5271 -> Index Scan using t1_pkey on t1
5272 -> Index Scan using t1_pkey on t1 t1_1
5273 -> Index Scan using t2_pkey on t2
5276 /*+Leading(t1 t2 t1)*/
5277 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5278 INFO: pg_hint_plan: hint syntax error at or near "Leading(t1 t2 t1)"
5279 DETAIL: Relation name "t1" is ambiguous.
5288 -------------------------------------------------
5290 Merge Cond: (t1.id = t2.id)
5292 Merge Cond: (t1.id = t1_1.id)
5293 -> Index Scan using t1_pkey on t1
5294 -> Index Scan using t1_pkey on t1 t1_1
5295 -> Index Scan using t2_pkey on t2
5298 -- identifier length test
5299 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5301 --------------------------------------------------------------------------------------------------------------
5303 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5305 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id)
5306 -> Index Scan using t1_pkey on t1 "123456789012345678901234567890123456789012345678901234567890123"
5307 -> Index Scan using t2_pkey on t2
5314 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5315 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5316 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5317 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5319 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5320 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5323 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5324 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5325 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5329 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5332 ----------------------------------------------------------------------------------------------------
5334 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5336 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5337 -> Index Scan using t2_pkey on t2
5339 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5340 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5347 Leading(1234567890123456789012345678901234567890123456789012345678901234 t2 t3)
5348 SeqScan(1234567890123456789012345678901234567890123456789012345678901234)
5349 MergeJoin(1234567890123456789012345678901234567890123456789012345678901234 t2)
5350 Set(1234567890123456789012345678901234567890123456789012345678901234 1)
5351 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5353 EXPLAIN (COSTS false) SELECT * FROM t1 "1234567890123456789012345678901234567890123456789012345678901234" JOIN t2 ON ("1234567890123456789012345678901234567890123456789012345678901234".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5354 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5355 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5356 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5357 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5358 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5359 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5360 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5363 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5364 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5365 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5366 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5370 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5373 ----------------------------------------------------------------------------------------------------
5375 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5377 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5378 -> Index Scan using t2_pkey on t2
5380 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5381 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5387 SET "123456789012345678901234567890123456789012345678901234567890123" TO 1;
5388 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5389 SET "1234567890123456789012345678901234567890123456789012345678901234" TO 1;
5390 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5391 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5392 SET cursor_tuple_fraction TO 1234567890123456789012345678901234567890123456789012345678901234;
5393 ERROR: 1.23457e+63 is outside the valid range for parameter "cursor_tuple_fraction" (0 .. 1)
5395 /*+ Set(enable_seqscan 100)Set(seq_page_cost on)*/
5396 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
5397 INFO: parameter "enable_seqscan" requires a Boolean value
5398 INFO: parameter "seq_page_cost" requires a numeric value
5404 Set(enable_seqscan 100)
5405 Set(seq_page_cost on)
5408 --------------------------------------
5410 Merge Cond: (t1.id = t2.id)
5411 -> Index Scan using t1_pkey on t1
5412 -> Index Scan using t2_pkey on t2
5415 -- debug log of candidate index to use IndexScan
5416 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5418 ----------------------------------------------------------------------------------------
5419 Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
5420 Index Cond: (id = 1)
5423 /*+IndexScan(t5 t5_id2)*/
5424 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5425 LOG: available indexes for IndexScan(t5): t5_id2
5428 IndexScan(t5 t5_id2)
5434 -------------------------------
5435 Index Scan using t5_id2 on t5
5436 Index Cond: (id = 1)
5439 /*+IndexScan(t5 no_exist)*/
5440 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5441 LOG: available indexes for IndexScan(t5):
5444 IndexScan(t5 no_exist)
5450 --------------------
5455 /*+IndexScan(t5 t5_id1 t5_id2)*/
5456 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5457 LOG: available indexes for IndexScan(t5): t5_id2 t5_id1
5460 IndexScan(t5 t5_id1 t5_id2)
5466 -------------------------------
5467 Index Scan using t5_id2 on t5
5468 Index Cond: (id = 1)
5471 /*+IndexScan(t5 no_exist t5_id2)*/
5472 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5473 LOG: available indexes for IndexScan(t5): t5_id2
5476 IndexScan(t5 no_exist t5_id2)
5482 -------------------------------
5483 Index Scan using t5_id2 on t5
5484 Index Cond: (id = 1)
5487 /*+IndexScan(t5 no_exist5 no_exist2)*/
5488 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5489 LOG: available indexes for IndexScan(t5):
5492 IndexScan(t5 no_exist5 no_exist2)
5498 --------------------
5504 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5506 --------------------------------------------------------
5508 Hash Cond: (t3.val = t2.val)
5512 Hash Cond: (t2.id = t1.id)
5515 -> Index Scan using t1_pkey on t1
5516 Index Cond: (id < 10)
5520 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5521 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1))"
5522 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5531 --------------------------------------------------------
5533 Hash Cond: (t3.val = t2.val)
5537 Hash Cond: (t2.id = t1.id)
5540 -> Index Scan using t1_pkey on t1
5541 Index Cond: (id < 10)
5544 /*+Leading((t1 t2))*/
5545 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5554 --------------------------------------------
5556 Join Filter: (t2.val = t3.val)
5558 Hash Cond: (t1.id = t2.id)
5559 -> Index Scan using t1_pkey on t1
5560 Index Cond: (id < 10)
5566 /*+Leading((t1 t2 t3))*/
5567 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5568 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1 t2 t3))"
5569 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5578 --------------------------------------------------------
5580 Hash Cond: (t3.val = t2.val)
5584 Hash Cond: (t2.id = t1.id)
5587 -> Index Scan using t1_pkey on t1
5588 Index Cond: (id < 10)
5591 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5593 --------------------------------------------
5595 Hash Cond: (t2.id = t1.id)
5598 -> Index Scan using t1_pkey on t1
5599 Index Cond: (id < 10)
5602 /*+Leading((t1 t2))*/
5603 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5612 --------------------------------------
5614 Hash Cond: (t1.id = t2.id)
5615 -> Index Scan using t1_pkey on t1
5616 Index Cond: (id < 10)
5621 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5623 --------------------------------------------------------
5625 Hash Cond: (t3.val = t2.val)
5629 Hash Cond: (t2.id = t1.id)
5632 -> Index Scan using t1_pkey on t1
5633 Index Cond: (id < 10)
5636 /*+Leading(((t1 t2) t3))*/
5637 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5640 Leading(((t1 t2) t3))
5646 --------------------------------------------
5648 Join Filter: (t2.val = t3.val)
5650 Hash Cond: (t1.id = t2.id)
5651 -> Index Scan using t1_pkey on t1
5652 Index Cond: (id < 10)
5658 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;
5660 --------------------------------------------------------
5663 Merge Cond: (t3.id = t4.id)
5665 Join Filter: (t1.val = t3.val)
5666 -> Index Scan using t3_pkey on t3
5668 -> Index Scan using t1_pkey on t1
5669 Index Cond: (id < 10)
5673 -> Index Scan using t2_pkey on t2
5674 Index Cond: (id = t1.id)
5677 /*+Leading((((t1 t2) t3) t4))*/
5678 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;
5681 Leading((((t1 t2) t3) t4))
5687 --------------------------------------------------
5690 Join Filter: (t1.val = t3.val)
5692 Hash Cond: (t1.id = t2.id)
5693 -> Index Scan using t1_pkey on t1
5694 Index Cond: (id < 10)
5698 -> Index Scan using t4_pkey on t4
5699 Index Cond: (id = t3.id)
5702 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5704 --------------------------------------------------------
5706 Hash Cond: (t3.val = t2.val)
5710 Hash Cond: (t2.id = t1.id)
5713 -> Index Scan using t1_pkey on t1
5714 Index Cond: (id < 10)
5717 /*+Leading(((t1 t2) t3))*/
5718 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5721 Leading(((t1 t2) t3))
5727 --------------------------------------------
5729 Join Filter: (t2.val = t3.val)
5731 Hash Cond: (t1.id = t2.id)
5732 -> Index Scan using t1_pkey on t1
5733 Index Cond: (id < 10)
5739 /*+Leading((t1 (t2 t3)))*/
5740 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5743 Leading((t1 (t2 t3)))
5749 --------------------------------------------
5751 Hash Cond: (t1.id = t2.id)
5752 -> Index Scan using t1_pkey on t1
5753 Index Cond: (id < 10)
5756 Hash Cond: (t2.val = t3.val)
5762 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;
5764 --------------------------------------------------------
5767 Merge Cond: (t3.id = t4.id)
5769 Join Filter: (t1.val = t3.val)
5770 -> Index Scan using t3_pkey on t3
5772 -> Index Scan using t1_pkey on t1
5773 Index Cond: (id < 10)
5777 -> Index Scan using t2_pkey on t2
5778 Index Cond: (id = t1.id)
5781 /*+Leading(((t1 t2) (t3 t4)))*/
5782 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;
5785 Leading(((t1 t2) (t3 t4)))
5791 --------------------------------------------
5793 Join Filter: (t1.val = t3.val)
5795 Hash Cond: (t1.id = t2.id)
5796 -> Index Scan using t1_pkey on t1
5797 Index Cond: (id < 10)
5801 Merge Cond: (t3.id = t4.id)
5802 -> Index Scan using t3_pkey on t3
5808 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);
5810 --------------------------------------------------------------------
5812 Hash Cond: (t2.val = t3.val)
5813 InitPlan 1 (returns $1)
5818 -> Index Scan using t2_val on t2 t2_2
5819 Index Cond: (val > 100)
5820 -> Index Only Scan using t1_pkey on t1 t1_2
5821 Index Cond: (id = t2_2.id)
5823 Merge Cond: (t1.id = t2.id)
5824 -> Index Scan using t1_pkey on t1
5825 Index Cond: (id < $1)
5826 -> Index Scan using t2_pkey on t2
5831 /*+Leading(((t1 t2) t3)) Leading(((t3 t1) t2))*/
5832 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);
5833 INFO: pg_hint_plan: hint syntax error at or near "Leading(((t1 t2) t3)) Leading(((t3 t1) t2))"
5834 DETAIL: Conflict leading hint.
5837 Leading(((t3 t1) t2))
5840 Leading(((t1 t2) t3))
5844 --------------------------------------------------------------------
5846 Hash Cond: (t1.id = t2.id)
5847 InitPlan 1 (returns $1)
5852 -> Index Scan using t2_val on t2 t2_2
5853 Index Cond: (val > 100)
5854 -> Index Only Scan using t1_pkey on t1 t1_2
5855 Index Cond: (id = t2_2.id)
5857 Hash Cond: (t3.val = t1.val)
5860 -> Index Scan using t1_pkey on t1
5861 Index Cond: (id < $1)
5866 /*+Leading(((t1 t2) t3)) Leading((t1_2 t2_2))*/
5867 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);
5870 Leading(((t1 t2) t3))
5871 Leading((t1_2 t2_2))
5877 --------------------------------------------------------------
5879 Hash Cond: (t2.val = t3.val)
5880 InitPlan 1 (returns $0)
5883 Merge Cond: (t1_2.id = t2_2.id)
5884 -> Index Only Scan using t1_pkey on t1 t1_2
5887 -> Index Scan using t2_val on t2 t2_2
5888 Index Cond: (val > 100)
5890 Merge Cond: (t1.id = t2.id)
5891 -> Index Scan using t1_pkey on t1
5892 Index Cond: (id < $0)
5893 -> Index Scan using t2_pkey on t2
5898 /*+Leading(((((t1 t2) t3) t1_2) t2_2))*/
5899 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) t1_2) t2_2))
5908 --------------------------------------------------------------------
5910 Hash Cond: (t2.val = t3.val)
5911 InitPlan 1 (returns $1)
5916 -> Index Scan using t2_val on t2 t2_2
5917 Index Cond: (val > 100)
5918 -> Index Only Scan using t1_pkey on t1 t1_2
5919 Index Cond: (id = t2_2.id)
5921 Merge Cond: (t1.id = t2.id)
5922 -> Index Scan using t1_pkey on t1
5923 Index Cond: (id < $1)
5924 -> Index Scan using t2_pkey on t2
5929 -- Specified outer/inner leading hint and join method hint at the same time
5930 /*+Leading(((t1 t2) t3))*/
5931 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5934 Leading(((t1 t2) t3))
5940 --------------------------------------------
5942 Join Filter: (t2.val = t3.val)
5944 Hash Cond: (t1.id = t2.id)
5945 -> Index Scan using t1_pkey on t1
5946 Index Cond: (id < 10)
5952 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2)*/
5953 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5957 Leading(((t1 t2) t3))
5963 --------------------------------------------
5965 Join Filter: (t2.val = t3.val)
5967 Merge Cond: (t1.id = t2.id)
5968 -> Index Scan using t1_pkey on t1
5969 Index Cond: (id < 10)
5970 -> Index Scan using t2_pkey on t2
5974 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3)*/
5975 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5979 Leading(((t1 t2) t3))
5985 --------------------------------------------------
5987 Merge Cond: (t2.val = t3.val)
5991 Hash Cond: (t1.id = t2.id)
5992 -> Index Scan using t1_pkey on t1
5993 Index Cond: (id < 10)
6001 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t3)*/
6002 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6005 Leading(((t1 t2) t3))
6012 --------------------------------------------
6014 Join Filter: (t2.val = t3.val)
6016 Hash Cond: (t1.id = t2.id)
6017 -> Index Scan using t1_pkey on t1
6018 Index Cond: (id < 10)
6024 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;
6026 --------------------------------------------------------
6029 Merge Cond: (t3.id = t4.id)
6031 Join Filter: (t1.val = t3.val)
6032 -> Index Scan using t3_pkey on t3
6034 -> Index Scan using t1_pkey on t1
6035 Index Cond: (id < 10)
6039 -> Index Scan using t2_pkey on t2
6040 Index Cond: (id = t1.id)
6043 /*+Leading(((t1 t2) t3)) MergeJoin(t3 t4)*/
6044 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;
6047 Leading(((t1 t2) t3))
6054 --------------------------------------------------
6056 Join Filter: (t3.id = t4.id)
6058 Join Filter: (t1.val = t3.val)
6060 Hash Cond: (t1.id = t2.id)
6061 -> Index Scan using t1_pkey on t1
6062 Index Cond: (id < 10)
6069 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3 t4)*/
6070 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;
6073 MergeJoin(t1 t2 t3 t4)
6074 Leading(((t1 t2) t3))
6080 --------------------------------------------------------
6082 Merge Cond: (t3.id = t4.id)
6086 Join Filter: (t1.val = t3.val)
6088 Hash Cond: (t1.id = t2.id)
6089 -> Index Scan using t1_pkey on t1
6090 Index Cond: (id < 10)
6099 /*+ Leading ( ( t1 ( t2 t3 ) ) ) */
6100 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6103 Leading((t1 (t2 t3)))
6109 --------------------------------------------
6111 Hash Cond: (t1.id = t2.id)
6112 -> Index Scan using t1_pkey on t1
6113 Index Cond: (id < 10)
6116 Hash Cond: (t2.val = t3.val)
6122 /*+Leading((t1(t2 t3)))*/
6123 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6126 Leading((t1 (t2 t3)))
6132 --------------------------------------------
6134 Hash Cond: (t1.id = t2.id)
6135 -> Index Scan using t1_pkey on t1
6136 Index Cond: (id < 10)
6139 Hash Cond: (t2.val = t3.val)
6145 /*+Leading(("t1(t2" "t3)"))*/
6146 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6150 Leading(("t1(t2" "t3)"))
6155 --------------------------------------------------------
6157 Hash Cond: (t3.val = t2.val)
6161 Hash Cond: (t2.id = t1.id)
6164 -> Index Scan using t1_pkey on t1
6165 Index Cond: (id < 10)
6168 /*+ Leading ( ( ( t1 t2 ) t3 ) ) */
6169 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6172 Leading(((t1 t2) t3))
6178 --------------------------------------------
6180 Join Filter: (t2.val = t3.val)
6182 Hash Cond: (t1.id = t2.id)
6183 -> Index Scan using t1_pkey on t1
6184 Index Cond: (id < 10)
6190 /*+Leading(((t1 t2)t3))*/
6191 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6194 Leading(((t1 t2) t3))
6200 --------------------------------------------
6202 Join Filter: (t2.val = t3.val)
6204 Hash Cond: (t1.id = t2.id)
6205 -> Index Scan using t1_pkey on t1
6206 Index Cond: (id < 10)
6212 /*+Leading(("(t1" "t2)t3"))*/
6213 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6217 Leading(("(t1" "t2)t3"))
6222 --------------------------------------------------------
6224 Hash Cond: (t3.val = t2.val)
6228 Hash Cond: (t2.id = t1.id)
6231 -> Index Scan using t1_pkey on t1
6232 Index Cond: (id < 10)
6235 /*+Leading((t1(t2(t3(t4 t5)))))*/
6236 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;
6239 Leading((t1 (t2 (t3 (t4 t5)))))
6245 ----------------------------------------------------------------------------------------------------------------------------------
6247 Merge Cond: (t1.id = t2.id)
6248 -> Index Scan using t1_pkey on t1
6251 Merge Cond: (t2.id = t3.id)
6252 -> Index Scan using t2_pkey on t2
6255 Merge Cond: (t3.id = t4.id)
6256 -> Index Scan using t3_pkey on t3
6259 Merge Cond: (t4.id = t5.id)
6260 -> Index Scan using t4_pkey on t4
6261 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6264 /*+Leading((t5(t4(t3(t2 t1)))))*/
6265 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;
6268 Leading((t5 (t4 (t3 (t2 t1)))))
6274 --------------------------------------------------------------------------
6276 Hash Cond: (t5.id = t1.id)
6280 Merge Cond: (t4.id = t1.id)
6286 Merge Cond: (t3.id = t1.id)
6292 Merge Cond: (t2.id = t1.id)
6293 -> Index Scan using t2_pkey on t2
6294 -> Index Scan using t1_pkey on t1
6297 /*+Leading(((((t1 t2)t3)t4)t5))*/
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(((((t1 t2) t3) t4) t5))
6307 ----------------------------------------------------------------------------------------------
6310 Merge Cond: (t1.id = t4.id)
6312 Merge Cond: (t1.id = t3.id)
6314 Merge Cond: (t1.id = t2.id)
6315 -> Index Scan using t1_pkey on t1
6316 -> Index Scan using t2_pkey on t2
6323 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6324 Index Cond: (id = t1.id)
6327 /*+Leading(((((t5 t4)t3)t2)t1))*/
6328 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;
6331 Leading(((((t5 t4) t3) t2) t1))
6337 ----------------------------------------------------------------------------------------------------------------
6339 Join Filter: (t2.id = t1.id)
6341 Join Filter: (t3.id = t2.id)
6343 Merge Cond: (t4.id = t3.id)
6345 Merge Cond: (t5.id = t4.id)
6346 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6350 -> Index Scan using t3_pkey on t3
6351 -> Index Scan using t2_pkey on t2
6352 Index Cond: (id = t5.id)
6353 -> Index Scan using t1_pkey on t1
6354 Index Cond: (id = t5.id)
6357 /*+Leading(((t1 t2)(t3(t4 t5))))*/
6358 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;
6361 Leading(((t1 t2) (t3 (t4 t5))))
6367 ----------------------------------------------------------------------------------------------------------------------
6369 Merge Cond: (t1.id = t3.id)
6371 Merge Cond: (t1.id = t2.id)
6372 -> Index Scan using t1_pkey on t1
6373 -> Index Scan using t2_pkey on t2
6376 Merge Cond: (t3.id = t4.id)
6377 -> Index Scan using t3_pkey on t3
6380 Merge Cond: (t4.id = t5.id)
6381 -> Index Scan using t4_pkey on t4
6382 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6385 /*+Leading(((t5 t4)(t3(t2 t1))))*/
6386 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;
6389 Leading(((t5 t4) (t3 (t2 t1))))
6395 ----------------------------------------------------------------------------------------------------
6397 Merge Cond: (t4.id = t1.id)
6399 Merge Cond: (t5.id = t4.id)
6400 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6406 Merge Cond: (t3.id = t1.id)
6412 Merge Cond: (t2.id = t1.id)
6413 -> Index Scan using t2_pkey on t2
6414 -> Index Scan using t1_pkey on t1
6417 /*+Leading((((t1 t2)t3)(t4 t5)))*/
6418 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;
6421 Leading((((t1 t2) t3) (t4 t5)))
6427 ----------------------------------------------------------------------------------------------------------
6429 Merge Cond: (t1.id = t4.id)
6431 Merge Cond: (t1.id = t3.id)
6433 Merge Cond: (t1.id = t2.id)
6434 -> Index Scan using t1_pkey on t1
6435 -> Index Scan using t2_pkey on t2
6441 Merge Cond: (t4.id = t5.id)
6442 -> Index Scan using t4_pkey on t4
6443 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6446 /*+Leading((((t5 t4)t3)(t2 t1)))*/
6447 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;
6450 Leading((((t5 t4) t3) (t2 t1)))
6456 ----------------------------------------------------------------------------------------------------------
6458 Merge Cond: (t3.id = t1.id)
6460 Merge Cond: (t4.id = t3.id)
6462 Merge Cond: (t5.id = t4.id)
6463 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6467 -> Index Scan using t3_pkey on t3
6470 Merge Cond: (t2.id = t1.id)
6471 -> Index Scan using t2_pkey on t2
6472 -> Index Scan using t1_pkey on t1
6475 -- inherite table test to specify the index's name
6476 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6478 -----------------------------------------------------------------------
6481 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6482 -> Seq Scan on p2_c1
6483 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6484 -> Seq Scan on p2_c1_c1
6485 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6486 -> Seq Scan on p2_c1_c2
6487 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6490 /*+IndexScan(p2 p2_pkey)*/
6491 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6492 LOG: available indexes for IndexScan(p2): p2_pkey
6493 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6494 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6495 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6498 IndexScan(p2 p2_pkey)
6504 --------------------------------------------------
6506 -> Index Scan using p2_pkey on p2
6507 Index Cond: ((id >= 50) AND (id <= 51))
6508 Filter: (ctid = '(1,1)'::tid)
6509 -> Index Scan using p2_c1_pkey on p2_c1
6510 Index Cond: ((id >= 50) AND (id <= 51))
6511 Filter: (ctid = '(1,1)'::tid)
6512 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6513 Index Cond: ((id >= 50) AND (id <= 51))
6514 Filter: (ctid = '(1,1)'::tid)
6515 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6516 Index Cond: ((id >= 50) AND (id <= 51))
6517 Filter: (ctid = '(1,1)'::tid)
6520 /*+IndexScan(p2 p2_id_val_idx)*/
6521 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6522 LOG: available indexes for IndexScan(p2): p2_id_val_idx
6523 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6524 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
6525 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
6528 IndexScan(p2 p2_id_val_idx)
6534 --------------------------------------------------------
6536 -> Index Scan using p2_id_val_idx on p2
6537 Index Cond: ((id >= 50) AND (id <= 51))
6538 Filter: (ctid = '(1,1)'::tid)
6539 -> Index Scan using p2_c1_id_val_idx on p2_c1
6540 Index Cond: ((id >= 50) AND (id <= 51))
6541 Filter: (ctid = '(1,1)'::tid)
6542 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
6543 Index Cond: ((id >= 50) AND (id <= 51))
6544 Filter: (ctid = '(1,1)'::tid)
6545 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
6546 Index Cond: ((id >= 50) AND (id <= 51))
6547 Filter: (ctid = '(1,1)'::tid)
6550 /*+IndexScan(p2 p2_val_id_idx)*/
6551 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6552 LOG: available indexes for IndexScan(p2): p2_val_id_idx
6553 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_id_idx
6554 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_id_idx
6555 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_id_idx
6558 IndexScan(p2 p2_val_id_idx)
6564 --------------------------------------------------------
6566 -> Index Scan using p2_val_id_idx on p2
6567 Index Cond: ((id >= 50) AND (id <= 51))
6568 Filter: (ctid = '(1,1)'::tid)
6569 -> Index Scan using p2_c1_val_id_idx on p2_c1
6570 Index Cond: ((id >= 50) AND (id <= 51))
6571 Filter: (ctid = '(1,1)'::tid)
6572 -> Index Scan using p2_c1_c1_val_id_idx on p2_c1_c1
6573 Index Cond: ((id >= 50) AND (id <= 51))
6574 Filter: (ctid = '(1,1)'::tid)
6575 -> Index Scan using p2_c1_c2_val_id_idx on p2_c1_c2
6576 Index Cond: ((id >= 50) AND (id <= 51))
6577 Filter: (ctid = '(1,1)'::tid)
6580 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6582 -----------------------------------------------------------------------------------------
6585 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6586 -> Seq Scan on p2_c1
6587 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6588 -> Seq Scan on p2_c2
6589 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6590 -> Seq Scan on p2_c3
6591 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6592 -> Seq Scan on p2_c4
6593 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6594 -> Seq Scan on p2_c1_c1
6595 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6596 -> Seq Scan on p2_c1_c2
6597 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6598 -> Seq Scan on p2_c3_c1
6599 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6600 -> Seq Scan on p2_c3_c2
6601 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6604 /*+IndexScan(p2 p2_val)*/
6605 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6606 LOG: available indexes for IndexScan(p2):
6607 LOG: available indexes for IndexScan(p2_c1):
6608 LOG: available indexes for IndexScan(p2_c2):
6609 LOG: available indexes for IndexScan(p2_c3):
6610 LOG: available indexes for IndexScan(p2_c4):
6611 LOG: available indexes for IndexScan(p2_c1_c1):
6612 LOG: available indexes for IndexScan(p2_c1_c2):
6613 LOG: available indexes for IndexScan(p2_c3_c1):
6614 LOG: available indexes for IndexScan(p2_c3_c2):
6617 IndexScan(p2 p2_val)
6623 -----------------------------------------------------------------------------------------
6626 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6627 -> Seq Scan on p2_c1
6628 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6629 -> Seq Scan on p2_c2
6630 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6631 -> Seq Scan on p2_c3
6632 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6633 -> Seq Scan on p2_c4
6634 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6635 -> Seq Scan on p2_c1_c1
6636 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6637 -> Seq Scan on p2_c1_c2
6638 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6639 -> Seq Scan on p2_c3_c1
6640 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6641 -> Seq Scan on p2_c3_c2
6642 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6645 /*+IndexScan(p2 p2_pkey)*/
6646 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6647 LOG: available indexes for IndexScan(p2): p2_pkey
6648 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6649 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6650 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6653 IndexScan(p2 p2_pkey)
6659 --------------------------------------------------
6661 -> Index Scan using p2_pkey on p2
6662 Index Cond: ((id >= 50) AND (id <= 51))
6663 Filter: (ctid = '(1,1)'::tid)
6664 -> Index Scan using p2_c1_pkey on p2_c1
6665 Index Cond: ((id >= 50) AND (id <= 51))
6666 Filter: (ctid = '(1,1)'::tid)
6667 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6668 Index Cond: ((id >= 50) AND (id <= 51))
6669 Filter: (ctid = '(1,1)'::tid)
6670 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6671 Index Cond: ((id >= 50) AND (id <= 51))
6672 Filter: (ctid = '(1,1)'::tid)
6675 /*+IndexScan(p2 p2_id2_val)*/
6676 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6677 LOG: available indexes for IndexScan(p2): p2_id2_val
6678 LOG: available indexes for IndexScan(p2_c1): p2_c1_id2_val
6679 LOG: available indexes for IndexScan(p2_c1_c1):
6680 LOG: available indexes for IndexScan(p2_c1_c2):
6683 IndexScan(p2 p2_id2_val)
6689 -----------------------------------------------------------------------
6691 -> Index Scan using p2_id2_val on p2
6692 Index Cond: ((id >= 50) AND (id <= 51))
6693 Filter: (ctid = '(1,1)'::tid)
6694 -> Index Scan using p2_c1_id2_val on p2_c1
6695 Index Cond: ((id >= 50) AND (id <= 51))
6696 Filter: (ctid = '(1,1)'::tid)
6697 -> Seq Scan on p2_c1_c1
6698 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6699 -> Seq Scan on p2_c1_c2
6700 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6703 /*+IndexScan(p2 p2_val2_id)*/
6704 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6705 LOG: available indexes for IndexScan(p2): p2_val2_id
6706 LOG: available indexes for IndexScan(p2_c1):
6707 LOG: available indexes for IndexScan(p2_c1_c1):
6708 LOG: available indexes for IndexScan(p2_c1_c2):
6711 IndexScan(p2 p2_val2_id)
6717 -----------------------------------------------------------------------
6719 -> Index Scan using p2_val2_id on p2
6720 Index Cond: ((id >= 50) AND (id <= 51))
6721 Filter: (ctid = '(1,1)'::tid)
6722 -> Seq Scan on p2_c1
6723 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6724 -> Seq Scan on p2_c1_c1
6725 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6726 -> Seq Scan on p2_c1_c2
6727 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6730 /*+IndexScan(p2 p2_pkey)*/
6731 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6732 LOG: available indexes for IndexScan(p2): p2_pkey
6733 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6734 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6735 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6738 IndexScan(p2 p2_pkey)
6744 --------------------------------------------------
6746 -> Index Scan using p2_pkey on p2
6747 Index Cond: ((id >= 50) AND (id <= 51))
6748 Filter: (ctid = '(1,1)'::tid)
6749 -> Index Scan using p2_c1_pkey on p2_c1
6750 Index Cond: ((id >= 50) AND (id <= 51))
6751 Filter: (ctid = '(1,1)'::tid)
6752 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6753 Index Cond: ((id >= 50) AND (id <= 51))
6754 Filter: (ctid = '(1,1)'::tid)
6755 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6756 Index Cond: ((id >= 50) AND (id <= 51))
6757 Filter: (ctid = '(1,1)'::tid)
6760 /*+IndexScan(p2 p2_c1_id_val_idx)*/
6761 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6762 LOG: available indexes for IndexScan(p2):
6763 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6764 LOG: available indexes for IndexScan(p2_c1_c1):
6765 LOG: available indexes for IndexScan(p2_c1_c2):
6768 IndexScan(p2 p2_c1_id_val_idx)
6774 -----------------------------------------------------------------------
6777 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6778 -> Index Scan using p2_c1_id_val_idx on p2_c1
6779 Index Cond: ((id >= 50) AND (id <= 51))
6780 Filter: (ctid = '(1,1)'::tid)
6781 -> Seq Scan on p2_c1_c1
6782 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6783 -> Seq Scan on p2_c1_c2
6784 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6787 /*+IndexScan(p2 no_exist)*/
6788 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6789 LOG: available indexes for IndexScan(p2):
6790 LOG: available indexes for IndexScan(p2_c1):
6791 LOG: available indexes for IndexScan(p2_c1_c1):
6792 LOG: available indexes for IndexScan(p2_c1_c2):
6795 IndexScan(p2 no_exist)
6801 -----------------------------------------------------------------------
6804 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6805 -> Seq Scan on p2_c1
6806 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6807 -> Seq Scan on p2_c1_c1
6808 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6809 -> Seq Scan on p2_c1_c2
6810 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6813 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx)*/
6814 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6815 LOG: available indexes for IndexScan(p2): p2_pkey
6816 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6817 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6818 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6821 IndexScan(p2 p2_pkey p2_c1_id_val_idx)
6827 --------------------------------------------------
6829 -> Index Scan using p2_pkey on p2
6830 Index Cond: ((id >= 50) AND (id <= 51))
6831 Filter: (ctid = '(1,1)'::tid)
6832 -> Index Scan using p2_c1_id_val_idx on p2_c1
6833 Index Cond: ((id >= 50) AND (id <= 51))
6834 Filter: (ctid = '(1,1)'::tid)
6835 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6836 Index Cond: ((id >= 50) AND (id <= 51))
6837 Filter: (ctid = '(1,1)'::tid)
6838 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6839 Index Cond: ((id >= 50) AND (id <= 51))
6840 Filter: (ctid = '(1,1)'::tid)
6843 /*+IndexScan(p2 p2_pkey no_exist)*/
6844 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6845 LOG: available indexes for IndexScan(p2): p2_pkey
6846 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6847 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6848 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6851 IndexScan(p2 p2_pkey no_exist)
6857 --------------------------------------------------
6859 -> Index Scan using p2_pkey on p2
6860 Index Cond: ((id >= 50) AND (id <= 51))
6861 Filter: (ctid = '(1,1)'::tid)
6862 -> Index Scan using p2_c1_pkey on p2_c1
6863 Index Cond: ((id >= 50) AND (id <= 51))
6864 Filter: (ctid = '(1,1)'::tid)
6865 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6866 Index Cond: ((id >= 50) AND (id <= 51))
6867 Filter: (ctid = '(1,1)'::tid)
6868 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6869 Index Cond: ((id >= 50) AND (id <= 51))
6870 Filter: (ctid = '(1,1)'::tid)
6873 /*+IndexScan(p2 p2_c1_id_val_idx no_exist)*/
6874 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6875 LOG: available indexes for IndexScan(p2):
6876 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6877 LOG: available indexes for IndexScan(p2_c1_c1):
6878 LOG: available indexes for IndexScan(p2_c1_c2):
6881 IndexScan(p2 p2_c1_id_val_idx no_exist)
6887 -----------------------------------------------------------------------
6890 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6891 -> Index Scan using p2_c1_id_val_idx on p2_c1
6892 Index Cond: ((id >= 50) AND (id <= 51))
6893 Filter: (ctid = '(1,1)'::tid)
6894 -> Seq Scan on p2_c1_c1
6895 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6896 -> Seq Scan on p2_c1_c2
6897 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6900 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)*/
6901 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6902 LOG: available indexes for IndexScan(p2): p2_pkey
6903 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6904 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6905 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6908 IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)
6914 --------------------------------------------------
6916 -> Index Scan using p2_pkey on p2
6917 Index Cond: ((id >= 50) AND (id <= 51))
6918 Filter: (ctid = '(1,1)'::tid)
6919 -> Index Scan using p2_c1_id_val_idx on p2_c1
6920 Index Cond: ((id >= 50) AND (id <= 51))
6921 Filter: (ctid = '(1,1)'::tid)
6922 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6923 Index Cond: ((id >= 50) AND (id <= 51))
6924 Filter: (ctid = '(1,1)'::tid)
6925 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6926 Index Cond: ((id >= 50) AND (id <= 51))
6927 Filter: (ctid = '(1,1)'::tid)
6930 /*+IndexScan(p2 p2_val_idx)*/
6931 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6932 LOG: available indexes for IndexScan(p2): p2_val_idx
6933 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx
6934 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx
6935 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx
6936 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx
6937 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx
6938 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx
6939 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx
6940 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx
6943 IndexScan(p2 p2_val_idx)
6949 -------------------------------------------------------------------
6951 -> Index Scan using p2_val_idx on p2
6952 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6953 Filter: (ctid = '(1,1)'::tid)
6954 -> Index Scan using p2_c1_val_idx on p2_c1
6955 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6956 Filter: (ctid = '(1,1)'::tid)
6957 -> Index Scan using p2_c2_val_idx on p2_c2
6958 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6959 Filter: (ctid = '(1,1)'::tid)
6960 -> Index Scan using p2_c3_val_idx on p2_c3
6961 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6962 Filter: (ctid = '(1,1)'::tid)
6963 -> Index Scan using p2_c4_val_idx on p2_c4
6964 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6965 Filter: (ctid = '(1,1)'::tid)
6966 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
6967 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6968 Filter: (ctid = '(1,1)'::tid)
6969 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
6970 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6971 Filter: (ctid = '(1,1)'::tid)
6972 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
6973 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6974 Filter: (ctid = '(1,1)'::tid)
6975 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
6976 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6977 Filter: (ctid = '(1,1)'::tid)
6980 /*+IndexScan(p2 p2_expr)*/
6981 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6982 LOG: available indexes for IndexScan(p2): p2_expr
6983 LOG: available indexes for IndexScan(p2_c1): p2_c1_expr_idx
6984 LOG: available indexes for IndexScan(p2_c2): p2_c2_expr_idx
6985 LOG: available indexes for IndexScan(p2_c3): p2_c3_expr_idx
6986 LOG: available indexes for IndexScan(p2_c4): p2_c4_expr_idx
6987 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_expr_idx
6988 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_expr_idx
6989 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_expr_idx
6990 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_expr_idx
6993 IndexScan(p2 p2_expr)
6999 -----------------------------------------------------------------------------------------
7002 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7003 -> Seq Scan on p2_c1
7004 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7005 -> Seq Scan on p2_c2
7006 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7007 -> Seq Scan on p2_c3
7008 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7009 -> Seq Scan on p2_c4
7010 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7011 -> Seq Scan on p2_c1_c1
7012 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7013 -> Seq Scan on p2_c1_c2
7014 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7015 -> Seq Scan on p2_c3_c1
7016 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7017 -> Seq Scan on p2_c3_c2
7018 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7021 /*+IndexScan(p2 p2_val_idx6)*/
7022 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7023 LOG: available indexes for IndexScan(p2): p2_val_idx6
7024 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx6
7025 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx6
7026 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx6
7027 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx6
7028 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx6
7029 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx6
7030 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx6
7031 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx6
7034 IndexScan(p2 p2_val_idx6)
7040 -----------------------------------------------------------------------------------------
7043 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7044 -> Seq Scan on p2_c1
7045 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7046 -> Seq Scan on p2_c2
7047 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7048 -> Seq Scan on p2_c3
7049 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7050 -> Seq Scan on p2_c4
7051 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7052 -> Seq Scan on p2_c1_c1
7053 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7054 -> Seq Scan on p2_c1_c2
7055 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7056 -> Seq Scan on p2_c3_c1
7057 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7058 -> Seq Scan on p2_c3_c2
7059 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7062 /*+IndexScan(p2 p2_val_idx p2_val_idx6)*/
7063 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7064 LOG: available indexes for IndexScan(p2): p2_val_idx6 p2_val_idx
7065 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx6 p2_c1_val_idx
7066 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx6 p2_c2_val_idx
7067 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx6 p2_c3_val_idx
7068 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx6 p2_c4_val_idx
7069 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx6 p2_c1_c1_val_idx
7070 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx6 p2_c1_c2_val_idx
7071 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx6 p2_c3_c1_val_idx
7072 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx6 p2_c3_c2_val_idx
7075 IndexScan(p2 p2_val_idx p2_val_idx6)
7081 -------------------------------------------------------------------
7083 -> Index Scan using p2_val_idx on p2
7084 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7085 Filter: (ctid = '(1,1)'::tid)
7086 -> Index Scan using p2_c1_val_idx on p2_c1
7087 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7088 Filter: (ctid = '(1,1)'::tid)
7089 -> Index Scan using p2_c2_val_idx on p2_c2
7090 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7091 Filter: (ctid = '(1,1)'::tid)
7092 -> Index Scan using p2_c3_val_idx on p2_c3
7093 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7094 Filter: (ctid = '(1,1)'::tid)
7095 -> Index Scan using p2_c4_val_idx on p2_c4
7096 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7097 Filter: (ctid = '(1,1)'::tid)
7098 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
7099 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7100 Filter: (ctid = '(1,1)'::tid)
7101 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
7102 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7103 Filter: (ctid = '(1,1)'::tid)
7104 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
7105 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7106 Filter: (ctid = '(1,1)'::tid)
7107 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
7108 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7109 Filter: (ctid = '(1,1)'::tid)
7112 -- regular expression
7114 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7116 ---------------------------------------------------------------------------------------------
7117 Index Only Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
7118 Index Cond: (id = 1)
7121 /*+ IndexScanRegexp(t5 t5_[^i].*)*/
7122 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7123 LOG: available indexes for IndexScanRegexp(t5): t5_val t5_pkey
7126 IndexScanRegexp(t5 t5_[^i].*)
7132 --------------------------------
7133 Index Scan using t5_pkey on t5
7134 Index Cond: (id = 1)
7137 /*+ IndexScanRegexp(t5 t5_id[0-9].*)*/
7138 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7139 LOG: available indexes for IndexScanRegexp(t5): t5_id3 t5_id2 t5_id1
7142 IndexScanRegexp(t5 t5_id[0-9].*)
7148 -------------------------------
7149 Index Scan using t5_id3 on t5
7150 Index Cond: (id = 1)
7153 /*+ IndexScanRegexp(t5 t5[^_].*)*/
7154 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7155 LOG: available indexes for IndexScanRegexp(t5):
7158 IndexScanRegexp(t5 t5[^_].*)
7164 --------------------
7169 /*+ IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7170 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7171 LOG: available indexes for IndexScanRegexp(t5):
7174 IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7180 --------------------
7185 /*+ IndexScan(t5 t5_id[0-9].*)*/
7186 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7187 LOG: available indexes for IndexScan(t5):
7190 IndexScan(t5 t5_id[0-9].*)
7196 --------------------
7201 /*+ IndexOnlyScanRegexp(t5 t5_[^i].*)*/
7202 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7203 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_val t5_pkey
7206 IndexOnlyScanRegexp(t5 t5_[^i].*)
7212 -------------------------------------
7213 Index Only Scan using t5_pkey on t5
7214 Index Cond: (id = 1)
7217 /*+ IndexOnlyScanRegexp(t5 t5_id[0-9].*)*/
7218 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7219 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_id3 t5_id2 t5_id1
7222 IndexOnlyScanRegexp(t5 t5_id[0-9].*)
7228 ------------------------------------
7229 Index Only Scan using t5_id3 on t5
7230 Index Cond: (id = 1)
7233 /*+ IndexOnlyScanRegexp(t5 t5[^_].*)*/
7234 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7235 LOG: available indexes for IndexOnlyScanRegexp(t5):
7238 IndexOnlyScanRegexp(t5 t5[^_].*)
7244 --------------------
7249 /*+ IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7250 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7251 LOG: available indexes for IndexOnlyScanRegexp(t5):
7254 IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7260 --------------------
7265 /*+ IndexOnlyScan(t5 t5_id[0-9].*)*/
7266 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7267 LOG: available indexes for IndexOnlyScan(t5):
7270 IndexOnlyScan(t5 t5_id[0-9].*)
7276 --------------------
7281 /*+ BitmapScanRegexp(t5 t5_[^i].*)*/
7282 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7283 LOG: available indexes for BitmapScanRegexp(t5): t5_val t5_pkey
7286 BitmapScanRegexp(t5 t5_[^i].*)
7292 ------------------------------------
7293 Bitmap Heap Scan on t5
7294 Recheck Cond: (id = 1)
7295 -> Bitmap Index Scan on t5_pkey
7296 Index Cond: (id = 1)
7299 /*+ BitmapScanRegexp(t5 t5_id[0-9].*)*/
7300 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7301 LOG: available indexes for BitmapScanRegexp(t5): t5_id3 t5_id2 t5_id1
7304 BitmapScanRegexp(t5 t5_id[0-9].*)
7310 -----------------------------------
7311 Bitmap Heap Scan on t5
7312 Recheck Cond: (id = 1)
7313 -> Bitmap Index Scan on t5_id3
7314 Index Cond: (id = 1)
7317 /*+ BitmapScanRegexp(t5 t5[^_].*)*/
7318 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7319 LOG: available indexes for BitmapScanRegexp(t5):
7322 BitmapScanRegexp(t5 t5[^_].*)
7328 --------------------
7333 /*+ BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7334 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7335 LOG: available indexes for BitmapScanRegexp(t5):
7338 BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7344 --------------------
7349 /*+ BitmapScan(t5 t5_id[0-9].*)*/
7350 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7351 LOG: available indexes for BitmapScan(t5):
7354 BitmapScan(t5 t5_id[0-9].*)
7360 --------------------
7366 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7368 ----------------------------
7372 -> Seq Scan on p1_c1
7374 -> Seq Scan on p1_c2
7376 -> Seq Scan on p1_c3
7378 -> Seq Scan on p1_c4
7380 -> Seq Scan on p1_c1_c1
7382 -> Seq Scan on p1_c1_c2
7384 -> Seq Scan on p1_c3_c1
7386 -> Seq Scan on p1_c3_c2
7390 /*+ IndexScanRegexp(p1 p1_.*[^0-9]$)*/
7391 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7392 LOG: available indexes for IndexScanRegexp(p1): p1_pkey
7393 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_pkey
7394 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_pkey
7395 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_pkey
7396 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_pkey
7397 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7398 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7399 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7400 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7403 IndexScanRegexp(p1 p1_.*[^0-9]$)
7409 ----------------------------
7413 -> Seq Scan on p1_c1
7415 -> Seq Scan on p1_c2
7417 -> Seq Scan on p1_c3
7419 -> Seq Scan on p1_c4
7421 -> Seq Scan on p1_c1_c1
7423 -> Seq Scan on p1_c1_c2
7425 -> Seq Scan on p1_c3_c1
7427 -> Seq Scan on p1_c3_c2
7431 /*+ IndexScanRegexp(p1 p1_.*val2.*)*/
7432 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7433 LOG: available indexes for IndexScanRegexp(p1): p1_val2
7434 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_val2
7435 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_val2
7436 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_val2
7437 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_val2
7438 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_val2
7439 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_val2
7440 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_val2
7441 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_val2
7444 IndexScanRegexp(p1 p1_.*val2.*)
7450 --------------------------------------------------
7452 -> Index Scan using p1_val2 on p1
7453 Index Cond: (val = 1)
7454 -> Index Scan using p1_c1_val2 on p1_c1
7455 Index Cond: (val = 1)
7456 -> Index Scan using p1_c2_val2 on p1_c2
7457 Index Cond: (val = 1)
7458 -> Index Scan using p1_c3_val2 on p1_c3
7459 Index Cond: (val = 1)
7460 -> Index Scan using p1_c4_val2 on p1_c4
7461 Index Cond: (val = 1)
7462 -> Index Scan using p1_c1_c1_val2 on p1_c1_c1
7463 Index Cond: (val = 1)
7464 -> Index Scan using p1_c1_c2_val2 on p1_c1_c2
7465 Index Cond: (val = 1)
7466 -> Index Scan using p1_c3_c1_val2 on p1_c3_c1
7467 Index Cond: (val = 1)
7468 -> Index Scan using p1_c3_c2_val2 on p1_c3_c2
7469 Index Cond: (val = 1)
7472 /*+ IndexScanRegexp(p1 p1[^_].*)*/
7473 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7474 LOG: available indexes for IndexScanRegexp(p1):
7475 LOG: available indexes for IndexScanRegexp(p1_c1):
7476 LOG: available indexes for IndexScanRegexp(p1_c2):
7477 LOG: available indexes for IndexScanRegexp(p1_c3):
7478 LOG: available indexes for IndexScanRegexp(p1_c4):
7479 LOG: available indexes for IndexScanRegexp(p1_c1_c1):
7480 LOG: available indexes for IndexScanRegexp(p1_c1_c2):
7481 LOG: available indexes for IndexScanRegexp(p1_c3_c1):
7482 LOG: available indexes for IndexScanRegexp(p1_c3_c2):
7485 IndexScanRegexp(p1 p1[^_].*)
7491 ----------------------------
7495 -> Seq Scan on p1_c1
7497 -> Seq Scan on p1_c2
7499 -> Seq Scan on p1_c3
7501 -> Seq Scan on p1_c4
7503 -> Seq Scan on p1_c1_c1
7505 -> Seq Scan on p1_c1_c2
7507 -> Seq Scan on p1_c3_c1
7509 -> Seq Scan on p1_c3_c2
7513 /*+ IndexScan(p1 p1_.*val2.*)*/
7514 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7515 LOG: available indexes for IndexScan(p1):
7516 LOG: available indexes for IndexScan(p1_c1):
7517 LOG: available indexes for IndexScan(p1_c2):
7518 LOG: available indexes for IndexScan(p1_c3):
7519 LOG: available indexes for IndexScan(p1_c4):
7520 LOG: available indexes for IndexScan(p1_c1_c1):
7521 LOG: available indexes for IndexScan(p1_c1_c2):
7522 LOG: available indexes for IndexScan(p1_c3_c1):
7523 LOG: available indexes for IndexScan(p1_c3_c2):
7526 IndexScan(p1 p1_.*val2.*)
7532 ----------------------------
7536 -> Seq Scan on p1_c1
7538 -> Seq Scan on p1_c2
7540 -> Seq Scan on p1_c3
7542 -> Seq Scan on p1_c4
7544 -> Seq Scan on p1_c1_c1
7546 -> Seq Scan on p1_c1_c2
7548 -> Seq Scan on p1_c3_c1
7550 -> Seq Scan on p1_c3_c2
7554 /*+ IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)*/
7555 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7556 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_pkey
7557 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_pkey
7558 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_pkey
7559 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_pkey
7560 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_pkey
7561 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7562 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7563 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7564 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7567 IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)
7573 ----------------------------
7577 -> Seq Scan on p1_c1
7579 -> Seq Scan on p1_c2
7581 -> Seq Scan on p1_c3
7583 -> Seq Scan on p1_c4
7585 -> Seq Scan on p1_c1_c1
7587 -> Seq Scan on p1_c1_c2
7589 -> Seq Scan on p1_c3_c1
7591 -> Seq Scan on p1_c3_c2
7595 /*+ IndexOnlyScanRegexp(p1 p1_.*val2.*)*/
7596 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7597 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_val2
7598 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_val2
7599 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_val2
7600 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_val2
7601 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_val2
7602 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_val2
7603 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_val2
7604 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_val2
7605 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_val2
7608 IndexOnlyScanRegexp(p1 p1_.*val2.*)
7614 -------------------------------------------------------
7616 -> Index Only Scan using p1_val2 on p1
7617 Index Cond: (val = 1)
7618 -> Index Only Scan using p1_c1_val2 on p1_c1
7619 Index Cond: (val = 1)
7620 -> Index Only Scan using p1_c2_val2 on p1_c2
7621 Index Cond: (val = 1)
7622 -> Index Only Scan using p1_c3_val2 on p1_c3
7623 Index Cond: (val = 1)
7624 -> Index Only Scan using p1_c4_val2 on p1_c4
7625 Index Cond: (val = 1)
7626 -> Index Only Scan using p1_c1_c1_val2 on p1_c1_c1
7627 Index Cond: (val = 1)
7628 -> Index Only Scan using p1_c1_c2_val2 on p1_c1_c2
7629 Index Cond: (val = 1)
7630 -> Index Only Scan using p1_c3_c1_val2 on p1_c3_c1
7631 Index Cond: (val = 1)
7632 -> Index Only Scan using p1_c3_c2_val2 on p1_c3_c2
7633 Index Cond: (val = 1)
7636 /*+ IndexOnlyScanRegexp(p1 p1[^_].*)*/
7637 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7638 LOG: available indexes for IndexOnlyScanRegexp(p1):
7639 LOG: available indexes for IndexOnlyScanRegexp(p1_c1):
7640 LOG: available indexes for IndexOnlyScanRegexp(p1_c2):
7641 LOG: available indexes for IndexOnlyScanRegexp(p1_c3):
7642 LOG: available indexes for IndexOnlyScanRegexp(p1_c4):
7643 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1):
7644 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2):
7645 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1):
7646 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2):
7649 IndexOnlyScanRegexp(p1 p1[^_].*)
7655 ----------------------------
7659 -> Seq Scan on p1_c1
7661 -> Seq Scan on p1_c2
7663 -> Seq Scan on p1_c3
7665 -> Seq Scan on p1_c4
7667 -> Seq Scan on p1_c1_c1
7669 -> Seq Scan on p1_c1_c2
7671 -> Seq Scan on p1_c3_c1
7673 -> Seq Scan on p1_c3_c2
7677 /*+ IndexOnlyScan(p1 p1_.*val2.*)*/
7678 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7679 LOG: available indexes for IndexOnlyScan(p1):
7680 LOG: available indexes for IndexOnlyScan(p1_c1):
7681 LOG: available indexes for IndexOnlyScan(p1_c2):
7682 LOG: available indexes for IndexOnlyScan(p1_c3):
7683 LOG: available indexes for IndexOnlyScan(p1_c4):
7684 LOG: available indexes for IndexOnlyScan(p1_c1_c1):
7685 LOG: available indexes for IndexOnlyScan(p1_c1_c2):
7686 LOG: available indexes for IndexOnlyScan(p1_c3_c1):
7687 LOG: available indexes for IndexOnlyScan(p1_c3_c2):
7690 IndexOnlyScan(p1 p1_.*val2.*)
7696 ----------------------------
7700 -> Seq Scan on p1_c1
7702 -> Seq Scan on p1_c2
7704 -> Seq Scan on p1_c3
7706 -> Seq Scan on p1_c4
7708 -> Seq Scan on p1_c1_c1
7710 -> Seq Scan on p1_c1_c2
7712 -> Seq Scan on p1_c3_c1
7714 -> Seq Scan on p1_c3_c2
7718 /*+ BitmapScanRegexp(p1 p1_.*[^0-9]$)*/
7719 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7720 LOG: available indexes for BitmapScanRegexp(p1): p1_pkey
7721 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_pkey
7722 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_pkey
7723 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_pkey
7724 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_pkey
7725 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7726 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7727 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7728 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7731 BitmapScanRegexp(p1 p1_.*[^0-9]$)
7737 ----------------------------
7741 -> Seq Scan on p1_c1
7743 -> Seq Scan on p1_c2
7745 -> Seq Scan on p1_c3
7747 -> Seq Scan on p1_c4
7749 -> Seq Scan on p1_c1_c1
7751 -> Seq Scan on p1_c1_c2
7753 -> Seq Scan on p1_c3_c1
7755 -> Seq Scan on p1_c3_c2
7759 /*+ BitmapScanRegexp(p1 p1_.*val2.*)*/
7760 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7761 LOG: available indexes for BitmapScanRegexp(p1): p1_val2
7762 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_val2
7763 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_val2
7764 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_val2
7765 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_val2
7766 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_val2
7767 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_val2
7768 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_val2
7769 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_val2
7772 BitmapScanRegexp(p1 p1_.*val2.*)
7778 ------------------------------------------------
7780 -> Bitmap Heap Scan on p1
7781 Recheck Cond: (val = 1)
7782 -> Bitmap Index Scan on p1_val2
7783 Index Cond: (val = 1)
7784 -> Bitmap Heap Scan on p1_c1
7785 Recheck Cond: (val = 1)
7786 -> Bitmap Index Scan on p1_c1_val2
7787 Index Cond: (val = 1)
7788 -> Bitmap Heap Scan on p1_c2
7789 Recheck Cond: (val = 1)
7790 -> Bitmap Index Scan on p1_c2_val2
7791 Index Cond: (val = 1)
7792 -> Bitmap Heap Scan on p1_c3
7793 Recheck Cond: (val = 1)
7794 -> Bitmap Index Scan on p1_c3_val2
7795 Index Cond: (val = 1)
7796 -> Bitmap Heap Scan on p1_c4
7797 Recheck Cond: (val = 1)
7798 -> Bitmap Index Scan on p1_c4_val2
7799 Index Cond: (val = 1)
7800 -> Bitmap Heap Scan on p1_c1_c1
7801 Recheck Cond: (val = 1)
7802 -> Bitmap Index Scan on p1_c1_c1_val2
7803 Index Cond: (val = 1)
7804 -> Bitmap Heap Scan on p1_c1_c2
7805 Recheck Cond: (val = 1)
7806 -> Bitmap Index Scan on p1_c1_c2_val2
7807 Index Cond: (val = 1)
7808 -> Bitmap Heap Scan on p1_c3_c1
7809 Recheck Cond: (val = 1)
7810 -> Bitmap Index Scan on p1_c3_c1_val2
7811 Index Cond: (val = 1)
7812 -> Bitmap Heap Scan on p1_c3_c2
7813 Recheck Cond: (val = 1)
7814 -> Bitmap Index Scan on p1_c3_c2_val2
7815 Index Cond: (val = 1)
7818 /*+ BitmapScanRegexp(p1 p1[^_].*)*/
7819 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7820 LOG: available indexes for BitmapScanRegexp(p1):
7821 LOG: available indexes for BitmapScanRegexp(p1_c1):
7822 LOG: available indexes for BitmapScanRegexp(p1_c2):
7823 LOG: available indexes for BitmapScanRegexp(p1_c3):
7824 LOG: available indexes for BitmapScanRegexp(p1_c4):
7825 LOG: available indexes for BitmapScanRegexp(p1_c1_c1):
7826 LOG: available indexes for BitmapScanRegexp(p1_c1_c2):
7827 LOG: available indexes for BitmapScanRegexp(p1_c3_c1):
7828 LOG: available indexes for BitmapScanRegexp(p1_c3_c2):
7831 BitmapScanRegexp(p1 p1[^_].*)
7837 ----------------------------
7841 -> Seq Scan on p1_c1
7843 -> Seq Scan on p1_c2
7845 -> Seq Scan on p1_c3
7847 -> Seq Scan on p1_c4
7849 -> Seq Scan on p1_c1_c1
7851 -> Seq Scan on p1_c1_c2
7853 -> Seq Scan on p1_c3_c1
7855 -> Seq Scan on p1_c3_c2
7859 /*+ BitmapScan(p1 p1_.*val2.*)*/
7860 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7861 LOG: available indexes for BitmapScan(p1):
7862 LOG: available indexes for BitmapScan(p1_c1):
7863 LOG: available indexes for BitmapScan(p1_c2):
7864 LOG: available indexes for BitmapScan(p1_c3):
7865 LOG: available indexes for BitmapScan(p1_c4):
7866 LOG: available indexes for BitmapScan(p1_c1_c1):
7867 LOG: available indexes for BitmapScan(p1_c1_c2):
7868 LOG: available indexes for BitmapScan(p1_c3_c1):
7869 LOG: available indexes for BitmapScan(p1_c3_c2):
7872 BitmapScan(p1 p1_.*val2.*)
7878 ----------------------------
7882 -> Seq Scan on p1_c1
7884 -> Seq Scan on p1_c2
7886 -> Seq Scan on p1_c3
7888 -> Seq Scan on p1_c4
7890 -> Seq Scan on p1_c1_c1
7892 -> Seq Scan on p1_c1_c2
7894 -> Seq Scan on p1_c3_c1
7896 -> Seq Scan on p1_c3_c2
7900 -- search from hint table
7901 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?;', '', 'SeqScan(t1)');
7902 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?;', '', 'IndexScan(t1)');
7903 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN SELECT * FROM t1 WHERE t1.id = ?;', '', 'BitmapScan(t1)');
7904 SELECT * FROM hint_plan.hints ORDER BY id;
7905 id | norm_query_string | application_name | hints
7906 ----+----------------------------------------------------------+------------------+----------------
7907 1 | EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?; | | SeqScan(t1)
7908 2 | EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?; | | IndexScan(t1)
7909 3 | EXPLAIN SELECT * FROM t1 WHERE t1.id = ?; | | BitmapScan(t1)
7912 SET pg_hint_plan.enable_hint_table = on;
7913 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7922 --------------------
7927 SET pg_hint_plan.enable_hint_table = off;
7928 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7930 --------------------------------
7931 Index Scan using t1_pkey on t1
7932 Index Cond: (id = 1)
7935 TRUNCATE hint_plan.hints;
7936 VACUUM ANALYZE hint_plan.hints;
7938 EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = 1;
7940 -------------------------------------
7941 Index Only Scan using t1_pkey on t1
7942 Index Cond: (id = 1)
7946 CREATE FUNCTION testfunc() RETURNS RECORD AS $$
7950 SELECT /*+ SeqScan(t1) */ * INTO ret FROM t1 LIMIT 1;
7953 $$ LANGUAGE plpgsql;
7962 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 LIMIT 1"
7963 PL/pgSQL function testfunc() line 5 at SQL statement
7970 DROP FUNCTION testfunc();
7971 CREATE FUNCTION testfunc() RETURNS void AS $$
7973 EXECUTE format('/*+ SeqScan(t1) */ SELECT * FROM t1');
7975 $$ LANGUAGE plpgsql;
7984 CONTEXT: SQL statement "/*+ SeqScan(t1) */ SELECT * FROM t1"
7985 PL/pgSQL function testfunc() line 3 at EXECUTE
7991 -- This should not use SeqScan(t1)
7992 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8006 DROP FUNCTION testfunc();
8007 CREATE FUNCTION testfunc() RETURNS void AS $$
8009 PERFORM 1, /*+ SeqScan(t1) */ * from t1;
8011 $$ LANGUAGE plpgsql;
8020 CONTEXT: SQL statement "SELECT 1, /*+ SeqScan(t1) */ * from t1"
8021 PL/pgSQL function testfunc() line 3 at PERFORM
8028 DROP FUNCTION testfunc();
8029 CREATE FUNCTION testfunc() RETURNS int AS $$
8035 FOR v IN SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id LOOP
8040 $$ LANGUAGE plpgsql;
8049 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id"
8050 PL/pgSQL function testfunc() line 7 at FOR over SELECT rows
8057 DROP FUNCTION testfunc();
8058 CREATE FUNCTION testfunc() RETURNS int AS $$
8065 FOR v IN EXECUTE 'SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id' LOOP
8070 $$ LANGUAGE plpgsql;
8079 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id"
8080 PL/pgSQL function testfunc() line 8 at FOR over EXECUTE statement
8087 DROP FUNCTION testfunc();
8088 CREATE FUNCTION testfunc() RETURNS int AS $$
8090 ref CURSOR FOR SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8095 sum := sum + rec.val;
8099 $$ LANGUAGE plpgsql;
8108 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8109 PL/pgSQL function testfunc() line 7 at FOR over cursor
8116 DROP FUNCTION testfunc();
8117 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8119 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8121 $$ LANGUAGE plpgsql;
8122 SELECT * FROM testfunc() LIMIT 1;
8130 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8131 PL/pgSQL function testfunc() line 3 at RETURN QUERY
8137 -- Test for error exit from inner SQL statement.
8138 DROP FUNCTION testfunc();
8139 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8141 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id;
8143 $$ LANGUAGE plpgsql;
8144 SELECT * FROM testfunc() LIMIT 1;
8145 ERROR: relation "ttx" does not exist
8146 LINE 1: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8148 QUERY: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8149 CONTEXT: PL/pgSQL function testfunc() line 3 at RETURN QUERY
8150 -- this should not use SeqScan(t1) hint.
8151 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8164 DROP FUNCTION testfunc();
8165 DROP EXTENSION pg_hint_plan;
8169 -- Explain result includes "Planning time" if COSTS is enabled, but
8170 -- this test needs it enabled for get rows count. So do tests via psql
8171 -- and grep -v the mutable line.
8173 \o results/pg_hint_plan.tmpout
8174 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8176 \! sql/maskout.sh results/pg_hint_plan.tmpout
8178 ------------------------------------------------------------------------------
8179 Merge Join (cost=xxx rows=1000 width=xxx)
8180 Merge Cond: (t1.id = t2.id)
8181 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8182 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8185 \o results/pg_hint_plan.tmpout
8186 /*+ Rows(t1 t2 #99) */
8187 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8196 \! sql/maskout.sh results/pg_hint_plan.tmpout
8198 ------------------------------------------------------------------------------
8199 Merge Join (cost=xxx rows=99 width=xxx)
8200 Merge Cond: (t1.id = t2.id)
8201 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8202 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8205 \o results/pg_hint_plan.tmpout
8206 /*+ Rows(t1 t2 +99) */
8207 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8216 \! sql/maskout.sh results/pg_hint_plan.tmpout
8218 ------------------------------------------------------------------------------
8219 Merge Join (cost=xxx rows=1099 width=xxx)
8220 Merge Cond: (t1.id = t2.id)
8221 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8222 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8225 \o results/pg_hint_plan.tmpout
8226 /*+ Rows(t1 t2 -99) */
8227 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8236 \! sql/maskout.sh results/pg_hint_plan.tmpout
8238 ------------------------------------------------------------------------------
8239 Merge Join (cost=xxx rows=901 width=xxx)
8240 Merge Cond: (t1.id = t2.id)
8241 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8242 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8245 \o results/pg_hint_plan.tmpout
8246 /*+ Rows(t1 t2 *99) */
8247 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8256 \! sql/maskout.sh results/pg_hint_plan.tmpout
8258 ------------------------------------------------------------------------------
8259 Merge Join (cost=xxx rows=99000 width=xxx)
8260 Merge Cond: (t1.id = t2.id)
8261 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8262 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8265 \o results/pg_hint_plan.tmpout
8266 /*+ Rows(t1 t2 *0.01) */
8267 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8276 \! sql/maskout.sh results/pg_hint_plan.tmpout
8278 ------------------------------------------------------------------------------
8279 Merge Join (cost=xxx rows=10 width=xxx)
8280 Merge Cond: (t1.id = t2.id)
8281 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8282 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8285 \o results/pg_hint_plan.tmpout
8286 /*+ Rows(t1 t2 #aa) */
8287 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8288 INFO: pg_hint_plan: hint syntax error at or near "aa"
8289 DETAIL: Rows hint requires valid number as rows estimation.
8298 \! sql/maskout.sh results/pg_hint_plan.tmpout
8300 ------------------------------------------------------------------------------
8301 Merge Join (cost=xxx rows=1000 width=xxx)
8302 Merge Cond: (t1.id = t2.id)
8303 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8304 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8307 \o results/pg_hint_plan.tmpout
8308 /*+ Rows(t1 t2 /99) */
8309 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8310 INFO: pg_hint_plan: hint syntax error at or near "/99"
8311 DETAIL: Unrecognized rows value type notation.
8320 \! sql/maskout.sh results/pg_hint_plan.tmpout
8322 ------------------------------------------------------------------------------
8323 Merge Join (cost=xxx rows=1000 width=xxx)
8324 Merge Cond: (t1.id = t2.id)
8325 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8326 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8330 \o results/pg_hint_plan.tmpout
8331 /*+ Rows(t1 t2 -99999) */
8332 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8333 WARNING: Force estimate to be at least one row, to avoid possible divide-by-zero when interpolating costs : Rows(t1 t2 -99999)
8342 \! sql/maskout.sh results/pg_hint_plan.tmpout
8344 ------------------------------------------------------------------------------
8345 Merge Join (cost=xxx rows=1 width=xxx)
8346 Merge Cond: (t1.id = t2.id)
8347 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8348 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8351 -- complex join tree
8352 \o results/pg_hint_plan.tmpout
8353 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8355 \! sql/maskout.sh results/pg_hint_plan.tmpout
8357 ------------------------------------------------------------------------------------
8358 Merge Join (cost=xxx rows=10 width=xxx)
8359 Merge Cond: (t1.id = t3.id)
8360 -> Merge Join (cost=xxx rows=1000 width=xxx)
8361 Merge Cond: (t1.id = t2.id)
8362 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8363 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8364 -> Sort (cost=xxx rows=100 width=xxx)
8366 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
8369 \o results/pg_hint_plan.tmpout
8370 /*+ Rows(t1 t2 #22) */
8371 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8380 \! sql/maskout.sh results/pg_hint_plan.tmpout
8382 ------------------------------------------------------------------------------------
8383 Merge Join (cost=xxx rows=1 width=xxx)
8384 Merge Cond: (t1.id = t3.id)
8385 -> Merge Join (cost=xxx rows=22 width=xxx)
8386 Merge Cond: (t1.id = t2.id)
8387 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8388 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8389 -> Sort (cost=xxx rows=100 width=xxx)
8391 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
8394 \o results/pg_hint_plan.tmpout
8395 /*+ Rows(t1 t3 *10) */
8396 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8405 \! sql/maskout.sh results/pg_hint_plan.tmpout
8407 ------------------------------------------------------------------------------------
8408 Merge Join (cost=xxx rows=100 width=xxx)
8409 Merge Cond: (t1.id = t3.id)
8410 -> Merge Join (cost=xxx rows=1000 width=xxx)
8411 Merge Cond: (t1.id = t2.id)
8412 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8413 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8414 -> Sort (cost=xxx rows=100 width=xxx)
8416 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
8419 \! rm results/pg_hint_plan.tmpout