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)
3452 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3453 -> Seq Scan on p1_c1
3454 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3455 -> Seq Scan on p1_c2
3456 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3457 -> Seq Scan on p1_c3
3458 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3459 -> Seq Scan on p1_c4
3460 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3461 -> Seq Scan on p1_c1_c1
3462 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3463 -> Seq Scan on p1_c1_c2
3464 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3465 -> Seq Scan on p1_c3_c1
3466 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3467 -> Seq Scan on p1_c3_c2
3468 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3469 -> Index Scan using t1_pkey on t1
3470 Index Cond: (id < 10)
3474 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;
3483 -----------------------------------------------------------------------------------
3485 Merge Cond: (p1.id = t1.id)
3490 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3491 -> Seq Scan on p1_c1
3492 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3493 -> Seq Scan on p1_c2
3494 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3495 -> Seq Scan on p1_c3
3496 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3497 -> Seq Scan on p1_c4
3498 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3499 -> Seq Scan on p1_c1_c1
3500 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3501 -> Seq Scan on p1_c1_c2
3502 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3503 -> Seq Scan on p1_c3_c1
3504 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3505 -> Seq Scan on p1_c3_c2
3506 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3507 -> Index Scan using t1_pkey on t1
3508 Index Cond: (id < 10)
3512 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;
3521 -----------------------------------------------------------------------------------
3523 Merge Cond: (p1.id = t1.id)
3528 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3529 -> Seq Scan on p1_c1
3530 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3531 -> Seq Scan on p1_c2
3532 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3533 -> Seq Scan on p1_c3
3534 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3535 -> Seq Scan on p1_c4
3536 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3537 -> Seq Scan on p1_c1_c1
3538 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3539 -> Seq Scan on p1_c1_c2
3540 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3541 -> Seq Scan on p1_c3_c1
3542 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3543 -> Seq Scan on p1_c3_c2
3544 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3545 -> Index Scan using t1_pkey on t1
3546 Index Cond: (id < 10)
3549 /*+NestLoop(p1 t1)*/
3550 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;
3559 -----------------------------------------------------------------------------
3561 Join Filter: (p1.id = t1.id)
3564 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3565 -> Seq Scan on p1_c1
3566 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3567 -> Seq Scan on p1_c2
3568 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3569 -> Seq Scan on p1_c3
3570 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3571 -> Seq Scan on p1_c4
3572 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3573 -> Seq Scan on p1_c1_c1
3574 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3575 -> Seq Scan on p1_c1_c2
3576 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3577 -> Seq Scan on p1_c3_c1
3578 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3579 -> Seq Scan on p1_c3_c2
3580 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3582 -> Index Scan using t1_pkey on t1
3583 Index Cond: (id < 10)
3586 /*+MergeJoin(p1 t1)*/
3587 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;
3596 -----------------------------------------------------------------------------------
3598 Merge Cond: (p1.id = t1.id)
3603 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3604 -> Seq Scan on p1_c1
3605 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3606 -> Seq Scan on p1_c2
3607 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3608 -> Seq Scan on p1_c3
3609 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3610 -> Seq Scan on p1_c4
3611 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3612 -> Seq Scan on p1_c1_c1
3613 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3614 -> Seq Scan on p1_c1_c2
3615 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3616 -> Seq Scan on p1_c3_c1
3617 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3618 -> Seq Scan on p1_c3_c2
3619 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3620 -> Index Scan using t1_pkey on t1
3621 Index Cond: (id < 10)
3624 /*+HashJoin(p1 t1)*/
3625 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;
3634 -----------------------------------------------------------------------------
3636 Hash Cond: (p1.id = t1.id)
3639 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3640 -> Seq Scan on p1_c1
3641 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3642 -> Seq Scan on p1_c2
3643 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3644 -> Seq Scan on p1_c3
3645 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3646 -> Seq Scan on p1_c4
3647 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3648 -> Seq Scan on p1_c1_c1
3649 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3650 -> Seq Scan on p1_c1_c2
3651 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3652 -> Seq Scan on p1_c3_c1
3653 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3654 -> Seq Scan on p1_c3_c2
3655 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3657 -> Index Scan using t1_pkey on t1
3658 Index Cond: (id < 10)
3661 SET constraint_exclusion TO on;
3663 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;
3672 -----------------------------------------------------------------------------------
3674 Merge Cond: (p1.id = t1.id)
3679 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3680 -> Seq Scan on p1_c1
3681 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3682 -> Seq Scan on p1_c1_c1
3683 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3684 -> Seq Scan on p1_c1_c2
3685 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3686 -> Index Scan using t1_pkey on t1
3687 Index Cond: (id < 10)
3691 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;
3700 -----------------------------------------------------------------------------------
3702 Merge Cond: (p1.id = t1.id)
3707 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3708 -> Seq Scan on p1_c1
3709 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3710 -> Seq Scan on p1_c1_c1
3711 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3712 -> Seq Scan on p1_c1_c2
3713 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3714 -> Index Scan using t1_pkey on t1
3715 Index Cond: (id < 10)
3719 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;
3728 -----------------------------------------------------------------------------------
3730 Merge Cond: (p1.id = t1.id)
3735 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3736 -> Seq Scan on p1_c1
3737 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3738 -> Seq Scan on p1_c1_c1
3739 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3740 -> Seq Scan on p1_c1_c2
3741 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3742 -> Index Scan using t1_pkey on t1
3743 Index Cond: (id < 10)
3747 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;
3756 -----------------------------------------------------------------------------------
3758 Merge Cond: (p1.id = t1.id)
3763 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3764 -> Seq Scan on p1_c1
3765 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3766 -> Seq Scan on p1_c1_c1
3767 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3768 -> Seq Scan on p1_c1_c2
3769 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3770 -> Index Scan using t1_pkey on t1
3771 Index Cond: (id < 10)
3774 /*+NestLoop(p1 t1)*/
3775 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;
3784 -----------------------------------------------------------------------------------
3786 Join Filter: (p1.id = t1.id)
3787 -> Index Scan using t1_pkey on t1
3788 Index Cond: (id < 10)
3792 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3793 -> Seq Scan on p1_c1
3794 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3795 -> Seq Scan on p1_c1_c1
3796 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3797 -> Seq Scan on p1_c1_c2
3798 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3801 /*+MergeJoin(p1 t1)*/
3802 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;
3811 -----------------------------------------------------------------------------------
3813 Merge Cond: (p1.id = t1.id)
3818 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3819 -> Seq Scan on p1_c1
3820 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3821 -> Seq Scan on p1_c1_c1
3822 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3823 -> Seq Scan on p1_c1_c2
3824 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3825 -> Index Scan using t1_pkey on t1
3826 Index Cond: (id < 10)
3829 /*+HashJoin(p1 t1)*/
3830 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;
3839 -----------------------------------------------------------------------------------
3841 Hash Cond: (t1.id = p1.id)
3842 -> Index Scan using t1_pkey on t1
3843 Index Cond: (id < 10)
3847 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3848 -> Seq Scan on p1_c1
3849 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3850 -> Seq Scan on p1_c1_c1
3851 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3852 -> Seq Scan on p1_c1_c2
3853 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3856 SET constraint_exclusion TO off;
3857 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3859 -----------------------------------------------------------------
3861 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3864 SET constraint_exclusion TO on;
3865 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3867 -----------------------------------------------------------------
3869 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3872 SET constraint_exclusion TO off;
3874 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3883 -----------------------------------------------------------------
3885 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3889 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3898 -------------------------------------------
3899 Index Scan using p1_pkey on p1
3900 Index Cond: ((id >= 50) AND (id <= 51))
3901 Filter: (ctid = '(1,1)'::tid)
3905 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3914 -------------------------------------------------
3915 Bitmap Heap Scan on p1
3916 Recheck Cond: ((id >= 50) AND (id <= 51))
3917 Filter: (ctid = '(1,1)'::tid)
3918 -> Bitmap Index Scan on p1_pkey
3919 Index Cond: ((id >= 50) AND (id <= 51))
3923 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3932 ---------------------------------------
3934 TID Cond: (ctid = '(1,1)'::tid)
3935 Filter: ((id >= 50) AND (id <= 51))
3938 /*+NestLoop(p1 t1)*/
3939 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;
3948 -----------------------------------------------------------------------
3951 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3952 -> Index Scan using t1_pkey on t1
3953 Index Cond: ((id = p1.id) AND (id < 10))
3956 /*+MergeJoin(p1 t1)*/
3957 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;
3966 -----------------------------------------------------------------------------
3968 Merge Cond: (p1.id = t1.id)
3972 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3973 -> Index Scan using t1_pkey on t1
3974 Index Cond: (id < 10)
3977 /*+HashJoin(p1 t1)*/
3978 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;
3987 -----------------------------------------------------------------------------
3989 Hash Cond: (t1.id = p1.id)
3990 -> Index Scan using t1_pkey on t1
3991 Index Cond: (id < 10)
3994 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3997 SET constraint_exclusion TO on;
3999 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4008 -----------------------------------------------------------------
4010 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4014 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4023 -------------------------------------------
4024 Index Scan using p1_pkey on p1
4025 Index Cond: ((id >= 50) AND (id <= 51))
4026 Filter: (ctid = '(1,1)'::tid)
4030 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4039 -------------------------------------------------
4040 Bitmap Heap Scan on p1
4041 Recheck Cond: ((id >= 50) AND (id <= 51))
4042 Filter: (ctid = '(1,1)'::tid)
4043 -> Bitmap Index Scan on p1_pkey
4044 Index Cond: ((id >= 50) AND (id <= 51))
4048 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4057 ---------------------------------------
4059 TID Cond: (ctid = '(1,1)'::tid)
4060 Filter: ((id >= 50) AND (id <= 51))
4063 /*+NestLoop(p1 t1)*/
4064 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;
4073 -----------------------------------------------------------------------
4076 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4077 -> Index Scan using t1_pkey on t1
4078 Index Cond: ((id = p1.id) AND (id < 10))
4081 /*+MergeJoin(p1 t1)*/
4082 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;
4091 -----------------------------------------------------------------------------
4093 Merge Cond: (p1.id = t1.id)
4097 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4098 -> Index Scan using t1_pkey on t1
4099 Index Cond: (id < 10)
4102 /*+HashJoin(p1 t1)*/
4103 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;
4112 -----------------------------------------------------------------------------
4114 Hash Cond: (t1.id = p1.id)
4115 -> Index Scan using t1_pkey on t1
4116 Index Cond: (id < 10)
4119 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4122 SET constraint_exclusion TO off;
4123 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;
4125 -----------------------------------------------------------------------
4128 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4129 -> Index Scan using t1_pkey on t1
4130 Index Cond: ((id = p1.id) AND (id < 10))
4133 SET constraint_exclusion TO on;
4134 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 SET constraint_exclusion TO off;
4146 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;
4155 -----------------------------------------------------------------------
4158 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4159 -> Index Scan using t1_pkey on t1
4160 Index Cond: ((id = p1.id) AND (id < 10))
4164 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4173 --------------------------------------------------
4175 -> Index Scan using p1_pkey on p1
4176 Index Cond: ((id >= 50) AND (id <= 51))
4177 Filter: (ctid = '(1,1)'::tid)
4178 -> Index Scan using t1_pkey on t1
4179 Index Cond: ((id = p1.id) AND (id < 10))
4183 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;
4192 -------------------------------------------------------
4194 -> Bitmap Heap Scan on p1
4195 Recheck Cond: ((id >= 50) AND (id <= 51))
4196 Filter: (ctid = '(1,1)'::tid)
4197 -> Bitmap Index Scan on p1_pkey
4198 Index Cond: ((id >= 50) AND (id <= 51))
4199 -> Index Scan using t1_pkey on t1
4200 Index Cond: ((id = p1.id) AND (id < 10))
4204 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;
4213 --------------------------------------------------
4216 TID Cond: (ctid = '(1,1)'::tid)
4217 Filter: ((id >= 50) AND (id <= 51))
4218 -> Index Scan using t1_pkey on t1
4219 Index Cond: ((id = p1.id) AND (id < 10))
4222 SET constraint_exclusion TO on;
4224 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;
4233 -----------------------------------------------------------------------
4236 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4237 -> Index Scan using t1_pkey on t1
4238 Index Cond: ((id = p1.id) AND (id < 10))
4242 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;
4251 --------------------------------------------------
4253 -> Index Scan using p1_pkey on p1
4254 Index Cond: ((id >= 50) AND (id <= 51))
4255 Filter: (ctid = '(1,1)'::tid)
4256 -> Index Scan using t1_pkey on t1
4257 Index Cond: ((id = p1.id) AND (id < 10))
4261 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;
4270 -------------------------------------------------------
4272 -> Bitmap Heap Scan on p1
4273 Recheck Cond: ((id >= 50) AND (id <= 51))
4274 Filter: (ctid = '(1,1)'::tid)
4275 -> Bitmap Index Scan on p1_pkey
4276 Index Cond: ((id >= 50) AND (id <= 51))
4277 -> Index Scan using t1_pkey on t1
4278 Index Cond: ((id = p1.id) AND (id < 10))
4282 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;
4291 --------------------------------------------------
4294 TID Cond: (ctid = '(1,1)'::tid)
4295 Filter: ((id >= 50) AND (id <= 51))
4296 -> Index Scan using t1_pkey on t1
4297 Index Cond: ((id = p1.id) AND (id < 10))
4301 /*+SeqScan("""t1 ) ")IndexScan("t 2 """)HashJoin("""t1 ) "T3"t 2 """)Leading("""t1 ) "T3"t 2 """)Set(application_name"a a a"" a A")*/
4302 EXPLAIN (COSTS false) SELECT * FROM t1 """t1 ) ", t2 "t 2 """, t3 "T3" WHERE """t1 ) ".id = "t 2 """.id AND """t1 ) ".id = "T3".id;
4307 HashJoin("""t1 ) " T3 "t 2 """)
4308 Leading("""t1 ) " T3 "t 2 """)
4309 Set(application_name "a a a"" a A")
4315 ---------------------------------------------------------
4317 Hash Cond: ("t 2 """.id = """t1 ) ".id)
4318 -> Index Scan using t2_pkey on t2 "t 2 """
4321 Hash Cond: ("""t1 ) ".id = "T3".id)
4322 -> Seq Scan on t1 """t1 ) "
4324 -> Seq Scan on t3 "T3"
4327 -- duplicate hint test
4328 /*+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)*/
4329 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
4330 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)"
4331 DETAIL: Conflict scan method hint.
4332 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)"
4333 DETAIL: Conflict scan method hint.
4334 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)"
4335 DETAIL: Conflict scan method hint.
4336 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)"
4337 DETAIL: Conflict scan method hint.
4338 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)"
4339 DETAIL: Conflict scan method hint.
4340 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)"
4341 DETAIL: Conflict scan method hint.
4342 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)"
4343 DETAIL: Conflict join method hint.
4344 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)"
4345 DETAIL: Conflict join method hint.
4346 INFO: pg_hint_plan: hint syntax error at or near "Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4347 DETAIL: Conflict set hint.
4348 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)"
4349 DETAIL: Conflict leading hint.
4356 Set(enable_mergejoin on)
4357 Set(enable_seqscan on)
4369 Set(enable_seqscan off)
4373 -----------------------------------------------
4375 Merge Cond: (t1.id = t2.id)
4379 TID Cond: (ctid = '(1,1)'::tid)
4383 TID Cond: (ctid = '(1,1)'::tid)
4386 -- sub query Leading hint test
4387 SET from_collapse_limit TO 100;
4388 SET geqo_threshold TO 100;
4389 EXPLAIN (COSTS false)
4391 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
4394 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
4395 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4396 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
4397 ) 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 = (
4398 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
4401 ------------------------------------------------------------------------------
4406 Merge Cond: (t1_5.id = t3_5.id)
4408 Merge Cond: (t1_5.id = t2_5.id)
4409 -> Index Only Scan using t1_pkey on t1 t1_5
4410 -> Index Only Scan using t2_pkey on t2 t2_5
4413 -> Seq Scan on t3 t3_5
4414 InitPlan 2 (returns $1)
4417 Merge Cond: (t1_2.id = t3_2.id)
4419 Merge Cond: (t1_2.id = t2_2.id)
4420 -> Index Only Scan using t1_pkey on t1 t1_2
4421 -> Index Only Scan using t2_pkey on t2 t2_2
4424 -> Seq Scan on t3 t3_2
4425 InitPlan 3 (returns $2)
4428 Merge Cond: (t1_4.id = t3_4.id)
4430 Merge Cond: (t1_4.id = t2_4.id)
4431 -> Index Only Scan using t1_pkey on t1 t1_4
4432 -> Index Only Scan using t2_pkey on t2 t2_4
4435 -> Seq Scan on t3 t3_4
4441 -> Index Only Scan using t1_pkey on t1 t1_1
4442 Index Cond: (id = $2)
4443 -> Index Only Scan using t2_pkey on t2 t2_1
4444 Index Cond: (id = $2)
4445 -> Seq Scan on t3 t3_1
4447 -> Index Only Scan using t1_pkey on t1 t1_3
4448 Index Cond: (id = $2)
4449 -> Index Only Scan using t2_pkey on t2 t2_3
4450 Index Cond: (id = $2)
4451 -> Seq Scan on t3 t3_3
4457 /*+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)*/
4458 EXPLAIN (COSTS false)
4460 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
4463 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
4464 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4465 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
4466 ) 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 = (
4467 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
4473 MergeJoin(t1_3 t3_3)
4481 ------------------------------------------------------------------------------
4486 Merge Cond: (t1_5.id = t3_5.id)
4488 -> Index Only Scan using t2_pkey on t2 t2_5
4489 -> Index Only Scan using t1_pkey on t1 t1_5
4490 Index Cond: (id = t2_5.id)
4493 -> Seq Scan on t3 t3_5
4494 InitPlan 2 (returns $3)
4497 Merge Cond: (t1_2.id = t3_2.id)
4499 -> Index Only Scan using t2_pkey on t2 t2_2
4500 -> Index Only Scan using t1_pkey on t1 t1_2
4501 Index Cond: (id = t2_2.id)
4504 -> Seq Scan on t3 t3_2
4505 InitPlan 3 (returns $5)
4508 Merge Cond: (t1_4.id = t3_4.id)
4510 -> Index Only Scan using t2_pkey on t2 t2_4
4511 -> Index Only Scan using t1_pkey on t1 t1_4
4512 Index Cond: (id = t2_4.id)
4515 -> Seq Scan on t3 t3_4
4521 -> Index Only Scan using t1_pkey on t1 t1_1
4522 Index Cond: (id = $5)
4523 -> Index Only Scan using t2_pkey on t2 t2_1
4524 Index Cond: (id = $5)
4525 -> Seq Scan on t3 t3_1
4527 -> Index Only Scan using t1_pkey on t1 t1_3
4528 Index Cond: (id = $5)
4529 -> Index Only Scan using t2_pkey on t2 t2_3
4530 Index Cond: (id = $5)
4531 -> Seq Scan on t3 t3_3
4537 /*+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)*/
4538 EXPLAIN (COSTS false)
4540 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
4543 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
4544 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4545 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
4546 ) 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 = (
4547 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
4553 MergeJoin(t1_3 t3_3)
4557 Leading(a t1_1 t1_2 t1_4 t1_5)
4562 ------------------------------------------------------------------------------
4567 Merge Cond: (t1_5.id = t3_5.id)
4569 -> Index Only Scan using t2_pkey on t2 t2_5
4570 -> Index Only Scan using t1_pkey on t1 t1_5
4571 Index Cond: (id = t2_5.id)
4574 -> Seq Scan on t3 t3_5
4575 InitPlan 2 (returns $3)
4578 Merge Cond: (t1_2.id = t3_2.id)
4580 -> Index Only Scan using t2_pkey on t2 t2_2
4581 -> Index Only Scan using t1_pkey on t1 t1_2
4582 Index Cond: (id = t2_2.id)
4585 -> Seq Scan on t3 t3_2
4586 InitPlan 3 (returns $5)
4589 Merge Cond: (t1_4.id = t3_4.id)
4591 -> Index Only Scan using t2_pkey on t2 t2_4
4592 -> Index Only Scan using t1_pkey on t1 t1_4
4593 Index Cond: (id = t2_4.id)
4596 -> Seq Scan on t3 t3_4
4602 -> Index Only Scan using t1_pkey on t1 t1_1
4603 Index Cond: (id = $5)
4604 -> Index Only Scan using t2_pkey on t2 t2_1
4605 Index Cond: (id = $5)
4606 -> Seq Scan on t3 t3_1
4608 -> Index Only Scan using t1_pkey on t1 t1_3
4609 Index Cond: (id = $5)
4610 -> Index Only Scan using t2_pkey on t2 t2_3
4611 Index Cond: (id = $5)
4612 -> Seq Scan on t3 t3_3
4618 /*+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)*/
4619 EXPLAIN (COSTS false)
4621 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
4624 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
4625 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4626 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
4627 ) 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 = (
4628 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
4634 MergeJoin(t1_3 t3_3)
4638 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)
4643 ------------------------------------------------------------------------------
4648 Merge Cond: (t1_5.id = t3_5.id)
4650 -> Index Only Scan using t2_pkey on t2 t2_5
4651 -> Index Only Scan using t1_pkey on t1 t1_5
4652 Index Cond: (id = t2_5.id)
4655 -> Seq Scan on t3 t3_5
4656 InitPlan 2 (returns $3)
4659 Merge Cond: (t1_2.id = t3_2.id)
4661 -> Index Only Scan using t2_pkey on t2 t2_2
4662 -> Index Only Scan using t1_pkey on t1 t1_2
4663 Index Cond: (id = t2_2.id)
4666 -> Seq Scan on t3 t3_2
4667 InitPlan 3 (returns $5)
4670 Merge Cond: (t1_4.id = t3_4.id)
4672 -> Index Only Scan using t2_pkey on t2 t2_4
4673 -> Index Only Scan using t1_pkey on t1 t1_4
4674 Index Cond: (id = t2_4.id)
4677 -> Seq Scan on t3 t3_4
4683 -> Index Only Scan using t1_pkey on t1 t1_1
4684 Index Cond: (id = $5)
4685 -> Index Only Scan using t2_pkey on t2 t2_1
4686 Index Cond: (id = $5)
4687 -> Seq Scan on t3 t3_1
4689 -> Index Only Scan using t1_pkey on t1 t1_3
4690 Index Cond: (id = $5)
4691 -> Index Only Scan using t2_pkey on t2 t2_3
4692 Index Cond: (id = $5)
4693 -> Seq Scan on t3 t3_3
4699 /*+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)*/
4700 EXPLAIN (COSTS false)
4702 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
4705 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
4706 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4707 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
4708 ) 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 = (
4709 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
4713 Leading(t3_5 t2_5 t1_5)
4714 Leading(t3_2 t2_2 t1_2)
4715 Leading(t3_4 t2_4 t1_4)
4716 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
4720 MergeJoin(t1_3 t3_3)
4727 ------------------------------------------------------------------------
4732 Merge Cond: (t2_5.id = t1_5.id)
4734 Merge Cond: (t2_5.id = t3_5.id)
4735 -> Index Only Scan using t2_pkey on t2 t2_5
4738 -> Seq Scan on t3 t3_5
4739 -> Index Only Scan using t1_pkey on t1 t1_5
4740 InitPlan 2 (returns $1)
4743 Merge Cond: (t2_2.id = t1_2.id)
4745 Merge Cond: (t2_2.id = t3_2.id)
4746 -> Index Only Scan using t2_pkey on t2 t2_2
4749 -> Seq Scan on t3 t3_2
4750 -> Index Only Scan using t1_pkey on t1 t1_2
4751 InitPlan 3 (returns $2)
4754 Merge Cond: (t2_4.id = t1_4.id)
4756 Merge Cond: (t2_4.id = t3_4.id)
4757 -> Index Only Scan using t2_pkey on t2 t2_4
4760 -> Seq Scan on t3 t3_4
4761 -> Index Only Scan using t1_pkey on t1 t1_4
4767 -> Seq Scan on t3 t3_3
4771 -> Index Only Scan using t2_pkey on t2 t2_3
4772 Index Cond: (id = $2)
4773 -> Index Only Scan using t1_pkey on t1 t1_3
4774 Index Cond: (id = $2)
4775 -> Seq Scan on t3 t3_1
4777 -> Index Only Scan using t2_pkey on t2 t2_1
4778 Index Cond: (id = $2)
4779 -> Index Only Scan using t1_pkey on t1 t1_1
4780 Index Cond: (id = $2)
4783 SET from_collapse_limit TO 1;
4784 EXPLAIN (COSTS false)
4786 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
4789 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
4790 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4791 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
4792 ) 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 = (
4793 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
4796 --------------------------------------------------------------------
4801 Merge Cond: (t1_5.id = t3_5.id)
4803 Merge Cond: (t1_5.id = t2_5.id)
4804 -> Index Only Scan using t1_pkey on t1 t1_5
4805 -> Index Only Scan using t2_pkey on t2 t2_5
4808 -> Seq Scan on t3 t3_5
4809 InitPlan 2 (returns $1)
4812 Merge Cond: (t1_2.id = t3_2.id)
4814 Merge Cond: (t1_2.id = t2_2.id)
4815 -> Index Only Scan using t1_pkey on t1 t1_2
4816 -> Index Only Scan using t2_pkey on t2 t2_2
4819 -> Seq Scan on t3 t3_2
4820 InitPlan 3 (returns $2)
4823 Merge Cond: (t1_4.id = t3_4.id)
4825 Merge Cond: (t1_4.id = t2_4.id)
4826 -> Index Only Scan using t1_pkey on t1 t1_4
4827 -> Index Only Scan using t2_pkey on t2 t2_4
4830 -> Seq Scan on t3 t3_4
4834 -> Index Only Scan using t1_pkey on t1 t1_1
4835 Index Cond: (id = $2)
4836 -> Index Only Scan using t2_pkey on t2 t2_1
4837 Index Cond: (id = $2)
4838 -> Seq Scan on t3 t3_1
4842 -> Index Only Scan using t1_pkey on t1 t1_3
4843 Index Cond: (id = $2)
4844 -> Index Only Scan using t2_pkey on t2 t2_3
4845 Index Cond: (id = $2)
4846 -> Seq Scan on t3 t3_3
4852 /*+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)*/
4853 EXPLAIN (COSTS false)
4855 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
4858 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
4859 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4860 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
4861 ) 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 = (
4862 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
4868 MergeJoin(t1_3 t3_3)
4876 --------------------------------------------------------------------
4881 Merge Cond: (t1_5.id = t3_5.id)
4883 -> Index Only Scan using t2_pkey on t2 t2_5
4884 -> Index Only Scan using t1_pkey on t1 t1_5
4885 Index Cond: (id = t2_5.id)
4888 -> Seq Scan on t3 t3_5
4889 InitPlan 2 (returns $3)
4892 Merge Cond: (t1_2.id = t3_2.id)
4894 -> Index Only Scan using t2_pkey on t2 t2_2
4895 -> Index Only Scan using t1_pkey on t1 t1_2
4896 Index Cond: (id = t2_2.id)
4899 -> Seq Scan on t3 t3_2
4900 InitPlan 3 (returns $5)
4903 Merge Cond: (t1_4.id = t3_4.id)
4905 -> Index Only Scan using t2_pkey on t2 t2_4
4906 -> Index Only Scan using t1_pkey on t1 t1_4
4907 Index Cond: (id = t2_4.id)
4910 -> Seq Scan on t3 t3_4
4914 -> Index Only Scan using t1_pkey on t1 t1_1
4915 Index Cond: (id = $5)
4916 -> Index Only Scan using t2_pkey on t2 t2_1
4917 Index Cond: (id = $5)
4918 -> Seq Scan on t3 t3_1
4922 -> Index Only Scan using t1_pkey on t1 t1_3
4923 Index Cond: (id = $5)
4924 -> Index Only Scan using t2_pkey on t2 t2_3
4925 Index Cond: (id = $5)
4926 -> Seq Scan on t3 t3_3
4932 /*+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)*/
4933 EXPLAIN (COSTS false)
4935 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
4938 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
4939 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4940 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
4941 ) 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 = (
4942 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
4948 MergeJoin(t1_3 t3_3)
4952 Leading(a t1_1 t1_2 t1_4 t1_5)
4957 --------------------------------------------------------------------
4962 Merge Cond: (t1_5.id = t3_5.id)
4964 -> Index Only Scan using t2_pkey on t2 t2_5
4965 -> Index Only Scan using t1_pkey on t1 t1_5
4966 Index Cond: (id = t2_5.id)
4969 -> Seq Scan on t3 t3_5
4970 InitPlan 2 (returns $3)
4973 Merge Cond: (t1_2.id = t3_2.id)
4975 -> Index Only Scan using t2_pkey on t2 t2_2
4976 -> Index Only Scan using t1_pkey on t1 t1_2
4977 Index Cond: (id = t2_2.id)
4980 -> Seq Scan on t3 t3_2
4981 InitPlan 3 (returns $5)
4984 Merge Cond: (t1_4.id = t3_4.id)
4986 -> Index Only Scan using t2_pkey on t2 t2_4
4987 -> Index Only Scan using t1_pkey on t1 t1_4
4988 Index Cond: (id = t2_4.id)
4991 -> Seq Scan on t3 t3_4
4995 -> Index Only Scan using t1_pkey on t1 t1_1
4996 Index Cond: (id = $5)
4997 -> Index Only Scan using t2_pkey on t2 t2_1
4998 Index Cond: (id = $5)
4999 -> Seq Scan on t3 t3_1
5003 -> Index Only Scan using t1_pkey on t1 t1_3
5004 Index Cond: (id = $5)
5005 -> Index Only Scan using t2_pkey on t2 t2_3
5006 Index Cond: (id = $5)
5007 -> Seq Scan on t3 t3_3
5013 /*+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)*/
5014 EXPLAIN (COSTS false)
5016 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
5019 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
5020 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5021 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
5022 ) 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 = (
5023 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
5029 MergeJoin(t1_3 t3_3)
5033 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)
5038 --------------------------------------------------------------------
5043 Merge Cond: (t1_5.id = t3_5.id)
5045 -> Index Only Scan using t2_pkey on t2 t2_5
5046 -> Index Only Scan using t1_pkey on t1 t1_5
5047 Index Cond: (id = t2_5.id)
5050 -> Seq Scan on t3 t3_5
5051 InitPlan 2 (returns $3)
5054 Merge Cond: (t1_2.id = t3_2.id)
5056 -> Index Only Scan using t2_pkey on t2 t2_2
5057 -> Index Only Scan using t1_pkey on t1 t1_2
5058 Index Cond: (id = t2_2.id)
5061 -> Seq Scan on t3 t3_2
5062 InitPlan 3 (returns $5)
5065 Merge Cond: (t1_4.id = t3_4.id)
5067 -> Index Only Scan using t2_pkey on t2 t2_4
5068 -> Index Only Scan using t1_pkey on t1 t1_4
5069 Index Cond: (id = t2_4.id)
5072 -> Seq Scan on t3 t3_4
5076 -> Index Only Scan using t1_pkey on t1 t1_1
5077 Index Cond: (id = $5)
5078 -> Index Only Scan using t2_pkey on t2 t2_1
5079 Index Cond: (id = $5)
5080 -> Seq Scan on t3 t3_1
5084 -> Index Only Scan using t1_pkey on t1 t1_3
5085 Index Cond: (id = $5)
5086 -> Index Only Scan using t2_pkey on t2 t2_3
5087 Index Cond: (id = $5)
5088 -> Seq Scan on t3 t3_3
5094 /*+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)*/
5095 EXPLAIN (COSTS false)
5097 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
5100 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
5101 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5102 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
5103 ) 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 = (
5104 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
5108 MergeJoin(t1_3 t3_3)
5109 Leading(t3_5 t2_5 t1_5)
5110 Leading(t3_2 t2_2 t1_2)
5111 Leading(t3_4 t2_4 t1_4)
5112 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
5122 ------------------------------------------------------------------------------
5127 Merge Cond: (t2_5.id = t1_5.id)
5129 Merge Cond: (t2_5.id = t3_5.id)
5130 -> Index Only Scan using t2_pkey on t2 t2_5
5133 -> Seq Scan on t3 t3_5
5134 -> Index Only Scan using t1_pkey on t1 t1_5
5135 InitPlan 2 (returns $1)
5138 Merge Cond: (t2_2.id = t1_2.id)
5140 Merge Cond: (t2_2.id = t3_2.id)
5141 -> Index Only Scan using t2_pkey on t2 t2_2
5144 -> Seq Scan on t3 t3_2
5145 -> Index Only Scan using t1_pkey on t1 t1_2
5146 InitPlan 3 (returns $2)
5149 Merge Cond: (t2_4.id = t1_4.id)
5151 Merge Cond: (t2_4.id = t3_4.id)
5152 -> Index Only Scan using t2_pkey on t2 t2_4
5155 -> Seq Scan on t3 t3_4
5156 -> Index Only Scan using t1_pkey on t1 t1_4
5162 -> Index Only Scan using t1_pkey on t1 t1_3
5163 Index Cond: (id = $2)
5164 -> Index Only Scan using t2_pkey on t2 t2_3
5165 Index Cond: (id = $2)
5166 -> Seq Scan on t3 t3_3
5170 -> Seq Scan on t3 t3_1
5172 -> Index Only Scan using t2_pkey on t2 t2_1
5173 Index Cond: (id = $2)
5174 -> Index Only Scan using t1_pkey on t1 t1_1
5175 Index Cond: (id = $2)
5179 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5181 -------------------------------------------------
5183 Merge Cond: (t1.id = t2.id)
5185 Merge Cond: (t1.id = t1_1.id)
5186 -> Index Scan using t1_pkey on t1
5187 -> Index Scan using t1_pkey on t1 t1_1
5188 -> Index Scan using t2_pkey on t2
5191 /*+NestLoop(t1 t2)*/
5192 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5193 INFO: pg_hint_plan: hint syntax error at or near "NestLoop(t1 t2)"
5194 DETAIL: Relation name "t1" is ambiguous.
5203 -------------------------------------------------
5205 Merge Cond: (t1.id = t2.id)
5207 Merge Cond: (t1.id = t1_1.id)
5208 -> Index Scan using t1_pkey on t1
5209 -> Index Scan using t1_pkey on t1 t1_1
5210 -> Index Scan using t2_pkey on t2
5213 /*+Leading(t1 t2 t1)*/
5214 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5215 INFO: pg_hint_plan: hint syntax error at or near "Leading(t1 t2 t1)"
5216 DETAIL: Relation name "t1" is ambiguous.
5225 -------------------------------------------------
5227 Merge Cond: (t1.id = t2.id)
5229 Merge Cond: (t1.id = t1_1.id)
5230 -> Index Scan using t1_pkey on t1
5231 -> Index Scan using t1_pkey on t1 t1_1
5232 -> Index Scan using t2_pkey on t2
5235 -- identifier length test
5236 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5238 --------------------------------------------------------------------------------------------------------------
5240 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5242 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id)
5243 -> Index Scan using t1_pkey on t1 "123456789012345678901234567890123456789012345678901234567890123"
5244 -> Index Scan using t2_pkey on t2
5251 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5252 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5253 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5254 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5256 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5257 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5260 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5261 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5262 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5266 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5269 ----------------------------------------------------------------------------------------------------
5271 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5273 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5274 -> Index Scan using t2_pkey on t2
5276 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5277 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5284 Leading(1234567890123456789012345678901234567890123456789012345678901234 t2 t3)
5285 SeqScan(1234567890123456789012345678901234567890123456789012345678901234)
5286 MergeJoin(1234567890123456789012345678901234567890123456789012345678901234 t2)
5287 Set(1234567890123456789012345678901234567890123456789012345678901234 1)
5288 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5290 EXPLAIN (COSTS false) SELECT * FROM t1 "1234567890123456789012345678901234567890123456789012345678901234" JOIN t2 ON ("1234567890123456789012345678901234567890123456789012345678901234".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5291 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5292 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5293 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5294 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5295 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5296 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5297 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5300 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5301 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5302 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5303 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5307 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5310 ----------------------------------------------------------------------------------------------------
5312 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5314 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5315 -> Index Scan using t2_pkey on t2
5317 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5318 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5324 SET "123456789012345678901234567890123456789012345678901234567890123" TO 1;
5325 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5326 SET "1234567890123456789012345678901234567890123456789012345678901234" TO 1;
5327 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5328 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5329 SET cursor_tuple_fraction TO 1234567890123456789012345678901234567890123456789012345678901234;
5330 ERROR: 1.23457e+63 is outside the valid range for parameter "cursor_tuple_fraction" (0 .. 1)
5332 /*+ Set(enable_seqscan 100)Set(seq_page_cost on)*/
5333 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
5334 INFO: parameter "enable_seqscan" requires a Boolean value
5335 INFO: parameter "seq_page_cost" requires a numeric value
5341 Set(enable_seqscan 100)
5342 Set(seq_page_cost on)
5345 --------------------------------------
5347 Merge Cond: (t1.id = t2.id)
5348 -> Index Scan using t1_pkey on t1
5349 -> Index Scan using t2_pkey on t2
5352 -- debug log of candidate index to use IndexScan
5353 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5355 ----------------------------------------------------------------------------------------
5356 Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
5357 Index Cond: (id = 1)
5360 /*+IndexScan(t5 t5_id2)*/
5361 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5362 LOG: available indexes for IndexScan(t5): t5_id2
5365 IndexScan(t5 t5_id2)
5371 -------------------------------
5372 Index Scan using t5_id2 on t5
5373 Index Cond: (id = 1)
5376 /*+IndexScan(t5 no_exist)*/
5377 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5378 LOG: available indexes for IndexScan(t5):
5381 IndexScan(t5 no_exist)
5387 --------------------
5392 /*+IndexScan(t5 t5_id1 t5_id2)*/
5393 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5394 LOG: available indexes for IndexScan(t5): t5_id2 t5_id1
5397 IndexScan(t5 t5_id1 t5_id2)
5403 -------------------------------
5404 Index Scan using t5_id2 on t5
5405 Index Cond: (id = 1)
5408 /*+IndexScan(t5 no_exist t5_id2)*/
5409 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5410 LOG: available indexes for IndexScan(t5): t5_id2
5413 IndexScan(t5 no_exist t5_id2)
5419 -------------------------------
5420 Index Scan using t5_id2 on t5
5421 Index Cond: (id = 1)
5424 /*+IndexScan(t5 no_exist5 no_exist2)*/
5425 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5426 LOG: available indexes for IndexScan(t5):
5429 IndexScan(t5 no_exist5 no_exist2)
5435 --------------------
5441 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5443 --------------------------------------------------------
5445 Hash Cond: (t3.val = t2.val)
5449 Hash Cond: (t2.id = t1.id)
5452 -> Index Scan using t1_pkey on t1
5453 Index Cond: (id < 10)
5457 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5458 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1))"
5459 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5468 --------------------------------------------------------
5470 Hash Cond: (t3.val = t2.val)
5474 Hash Cond: (t2.id = t1.id)
5477 -> Index Scan using t1_pkey on t1
5478 Index Cond: (id < 10)
5481 /*+Leading((t1 t2))*/
5482 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5491 --------------------------------------------
5493 Join Filter: (t2.val = t3.val)
5495 Hash Cond: (t1.id = t2.id)
5496 -> Index Scan using t1_pkey on t1
5497 Index Cond: (id < 10)
5503 /*+Leading((t1 t2 t3))*/
5504 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5505 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1 t2 t3))"
5506 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5515 --------------------------------------------------------
5517 Hash Cond: (t3.val = t2.val)
5521 Hash Cond: (t2.id = t1.id)
5524 -> Index Scan using t1_pkey on t1
5525 Index Cond: (id < 10)
5528 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5530 --------------------------------------------
5532 Hash Cond: (t2.id = t1.id)
5535 -> Index Scan using t1_pkey on t1
5536 Index Cond: (id < 10)
5539 /*+Leading((t1 t2))*/
5540 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5549 --------------------------------------
5551 Hash Cond: (t1.id = t2.id)
5552 -> Index Scan using t1_pkey on t1
5553 Index Cond: (id < 10)
5558 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5560 --------------------------------------------------------
5562 Hash Cond: (t3.val = t2.val)
5566 Hash Cond: (t2.id = t1.id)
5569 -> Index Scan using t1_pkey on t1
5570 Index Cond: (id < 10)
5573 /*+Leading(((t1 t2) t3))*/
5574 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5577 Leading(((t1 t2) t3))
5583 --------------------------------------------
5585 Join Filter: (t2.val = t3.val)
5587 Hash Cond: (t1.id = t2.id)
5588 -> Index Scan using t1_pkey on t1
5589 Index Cond: (id < 10)
5595 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;
5597 --------------------------------------------------------
5600 Merge Cond: (t3.id = t4.id)
5602 Join Filter: (t1.val = t3.val)
5603 -> Index Scan using t3_pkey on t3
5605 -> Index Scan using t1_pkey on t1
5606 Index Cond: (id < 10)
5610 -> Index Scan using t2_pkey on t2
5611 Index Cond: (id = t1.id)
5614 /*+Leading((((t1 t2) t3) t4))*/
5615 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;
5618 Leading((((t1 t2) t3) t4))
5624 --------------------------------------------------
5627 Join Filter: (t1.val = t3.val)
5629 Hash Cond: (t1.id = t2.id)
5630 -> Index Scan using t1_pkey on t1
5631 Index Cond: (id < 10)
5635 -> Index Scan using t4_pkey on t4
5636 Index Cond: (id = t3.id)
5639 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5641 --------------------------------------------------------
5643 Hash Cond: (t3.val = t2.val)
5647 Hash Cond: (t2.id = t1.id)
5650 -> Index Scan using t1_pkey on t1
5651 Index Cond: (id < 10)
5654 /*+Leading(((t1 t2) t3))*/
5655 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5658 Leading(((t1 t2) t3))
5664 --------------------------------------------
5666 Join Filter: (t2.val = t3.val)
5668 Hash Cond: (t1.id = t2.id)
5669 -> Index Scan using t1_pkey on t1
5670 Index Cond: (id < 10)
5676 /*+Leading((t1 (t2 t3)))*/
5677 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5680 Leading((t1 (t2 t3)))
5686 --------------------------------------------
5688 Hash Cond: (t1.id = t2.id)
5689 -> Index Scan using t1_pkey on t1
5690 Index Cond: (id < 10)
5693 Hash Cond: (t2.val = t3.val)
5699 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;
5701 --------------------------------------------------------
5704 Merge Cond: (t3.id = t4.id)
5706 Join Filter: (t1.val = t3.val)
5707 -> Index Scan using t3_pkey on t3
5709 -> Index Scan using t1_pkey on t1
5710 Index Cond: (id < 10)
5714 -> Index Scan using t2_pkey on t2
5715 Index Cond: (id = t1.id)
5718 /*+Leading(((t1 t2) (t3 t4)))*/
5719 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;
5722 Leading(((t1 t2) (t3 t4)))
5728 --------------------------------------------
5730 Join Filter: (t1.val = t3.val)
5732 Hash Cond: (t1.id = t2.id)
5733 -> Index Scan using t1_pkey on t1
5734 Index Cond: (id < 10)
5738 Merge Cond: (t3.id = t4.id)
5739 -> Index Scan using t3_pkey on t3
5745 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);
5747 --------------------------------------------------------------------
5749 Hash Cond: (t2.val = t3.val)
5750 InitPlan 1 (returns $1)
5755 -> Index Scan using t2_val on t2 t2_2
5756 Index Cond: (val > 100)
5757 -> Index Only Scan using t1_pkey on t1 t1_2
5758 Index Cond: (id = t2_2.id)
5760 Merge Cond: (t1.id = t2.id)
5761 -> Index Scan using t1_pkey on t1
5762 Index Cond: (id < $1)
5763 -> Index Scan using t2_pkey on t2
5768 /*+Leading(((t1 t2) t3)) Leading(((t3 t1) t2))*/
5769 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);
5770 INFO: pg_hint_plan: hint syntax error at or near "Leading(((t1 t2) t3)) Leading(((t3 t1) t2))"
5771 DETAIL: Conflict leading hint.
5774 Leading(((t3 t1) t2))
5777 Leading(((t1 t2) t3))
5781 --------------------------------------------------------------------
5783 Hash Cond: (t1.id = t2.id)
5784 InitPlan 1 (returns $1)
5789 -> Index Scan using t2_val on t2 t2_2
5790 Index Cond: (val > 100)
5791 -> Index Only Scan using t1_pkey on t1 t1_2
5792 Index Cond: (id = t2_2.id)
5794 Hash Cond: (t3.val = t1.val)
5797 -> Index Scan using t1_pkey on t1
5798 Index Cond: (id < $1)
5803 /*+Leading(((t1 t2) t3)) Leading((t1_2 t2_2))*/
5804 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);
5807 Leading(((t1 t2) t3))
5808 Leading((t1_2 t2_2))
5814 --------------------------------------------------------------
5816 Hash Cond: (t2.val = t3.val)
5817 InitPlan 1 (returns $0)
5820 Merge Cond: (t1_2.id = t2_2.id)
5821 -> Index Only Scan using t1_pkey on t1 t1_2
5824 -> Index Scan using t2_val on t2 t2_2
5825 Index Cond: (val > 100)
5827 Merge Cond: (t1.id = t2.id)
5828 -> Index Scan using t1_pkey on t1
5829 Index Cond: (id < $0)
5830 -> Index Scan using t2_pkey on t2
5835 /*+Leading(((((t1 t2) t3) t1_2) t2_2))*/
5836 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);
5840 Leading(((((t1 t2) t3) t1_2) t2_2))
5845 --------------------------------------------------------------------
5847 Hash Cond: (t2.val = t3.val)
5848 InitPlan 1 (returns $1)
5853 -> Index Scan using t2_val on t2 t2_2
5854 Index Cond: (val > 100)
5855 -> Index Only Scan using t1_pkey on t1 t1_2
5856 Index Cond: (id = t2_2.id)
5858 Merge Cond: (t1.id = t2.id)
5859 -> Index Scan using t1_pkey on t1
5860 Index Cond: (id < $1)
5861 -> Index Scan using t2_pkey on t2
5866 -- Specified outer/inner leading hint and join method hint at the same time
5867 /*+Leading(((t1 t2) t3))*/
5868 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5871 Leading(((t1 t2) t3))
5877 --------------------------------------------
5879 Join Filter: (t2.val = t3.val)
5881 Hash Cond: (t1.id = t2.id)
5882 -> Index Scan using t1_pkey on t1
5883 Index Cond: (id < 10)
5889 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2)*/
5890 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5894 Leading(((t1 t2) t3))
5900 --------------------------------------------
5902 Join Filter: (t2.val = t3.val)
5904 Merge Cond: (t1.id = t2.id)
5905 -> Index Scan using t1_pkey on t1
5906 Index Cond: (id < 10)
5907 -> Index Scan using t2_pkey on t2
5911 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3)*/
5912 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5916 Leading(((t1 t2) t3))
5922 --------------------------------------------------
5924 Merge Cond: (t2.val = t3.val)
5928 Hash Cond: (t1.id = t2.id)
5929 -> Index Scan using t1_pkey on t1
5930 Index Cond: (id < 10)
5938 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t3)*/
5939 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5942 Leading(((t1 t2) t3))
5949 --------------------------------------------
5951 Join Filter: (t2.val = t3.val)
5953 Hash Cond: (t1.id = t2.id)
5954 -> Index Scan using t1_pkey on t1
5955 Index Cond: (id < 10)
5961 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;
5963 --------------------------------------------------------
5966 Merge Cond: (t3.id = t4.id)
5968 Join Filter: (t1.val = t3.val)
5969 -> Index Scan using t3_pkey on t3
5971 -> Index Scan using t1_pkey on t1
5972 Index Cond: (id < 10)
5976 -> Index Scan using t2_pkey on t2
5977 Index Cond: (id = t1.id)
5980 /*+Leading(((t1 t2) t3)) MergeJoin(t3 t4)*/
5981 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;
5984 Leading(((t1 t2) t3))
5991 --------------------------------------------------
5993 Join Filter: (t3.id = t4.id)
5995 Join Filter: (t1.val = t3.val)
5997 Hash Cond: (t1.id = t2.id)
5998 -> Index Scan using t1_pkey on t1
5999 Index Cond: (id < 10)
6006 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3 t4)*/
6007 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;
6010 MergeJoin(t1 t2 t3 t4)
6011 Leading(((t1 t2) t3))
6017 --------------------------------------------------------
6019 Merge Cond: (t3.id = t4.id)
6023 Join Filter: (t1.val = t3.val)
6025 Hash Cond: (t1.id = t2.id)
6026 -> Index Scan using t1_pkey on t1
6027 Index Cond: (id < 10)
6036 /*+ Leading ( ( t1 ( t2 t3 ) ) ) */
6037 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6040 Leading((t1 (t2 t3)))
6046 --------------------------------------------
6048 Hash Cond: (t1.id = t2.id)
6049 -> Index Scan using t1_pkey on t1
6050 Index Cond: (id < 10)
6053 Hash Cond: (t2.val = t3.val)
6059 /*+Leading((t1(t2 t3)))*/
6060 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6063 Leading((t1 (t2 t3)))
6069 --------------------------------------------
6071 Hash Cond: (t1.id = t2.id)
6072 -> Index Scan using t1_pkey on t1
6073 Index Cond: (id < 10)
6076 Hash Cond: (t2.val = t3.val)
6082 /*+Leading(("t1(t2" "t3)"))*/
6083 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6087 Leading(("t1(t2" "t3)"))
6092 --------------------------------------------------------
6094 Hash Cond: (t3.val = t2.val)
6098 Hash Cond: (t2.id = t1.id)
6101 -> Index Scan using t1_pkey on t1
6102 Index Cond: (id < 10)
6105 /*+ Leading ( ( ( t1 t2 ) t3 ) ) */
6106 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6109 Leading(((t1 t2) t3))
6115 --------------------------------------------
6117 Join Filter: (t2.val = t3.val)
6119 Hash Cond: (t1.id = t2.id)
6120 -> Index Scan using t1_pkey on t1
6121 Index Cond: (id < 10)
6127 /*+Leading(((t1 t2)t3))*/
6128 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6131 Leading(((t1 t2) t3))
6137 --------------------------------------------
6139 Join Filter: (t2.val = t3.val)
6141 Hash Cond: (t1.id = t2.id)
6142 -> Index Scan using t1_pkey on t1
6143 Index Cond: (id < 10)
6149 /*+Leading(("(t1" "t2)t3"))*/
6150 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6154 Leading(("(t1" "t2)t3"))
6159 --------------------------------------------------------
6161 Hash Cond: (t3.val = t2.val)
6165 Hash Cond: (t2.id = t1.id)
6168 -> Index Scan using t1_pkey on t1
6169 Index Cond: (id < 10)
6172 /*+Leading((t1(t2(t3(t4 t5)))))*/
6173 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;
6176 Leading((t1 (t2 (t3 (t4 t5)))))
6182 ----------------------------------------------------------------------------------------------------------------------------------
6184 Merge Cond: (t1.id = t2.id)
6185 -> Index Scan using t1_pkey on t1
6188 Merge Cond: (t2.id = t3.id)
6189 -> Index Scan using t2_pkey on t2
6192 Merge Cond: (t3.id = t4.id)
6193 -> Index Scan using t3_pkey on t3
6196 Merge Cond: (t4.id = t5.id)
6197 -> Index Scan using t4_pkey on t4
6198 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6201 /*+Leading((t5(t4(t3(t2 t1)))))*/
6202 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;
6205 Leading((t5 (t4 (t3 (t2 t1)))))
6211 --------------------------------------------------------------------------
6213 Hash Cond: (t5.id = t1.id)
6217 Merge Cond: (t4.id = t1.id)
6223 Merge Cond: (t3.id = t1.id)
6229 Merge Cond: (t2.id = t1.id)
6230 -> Index Scan using t2_pkey on t2
6231 -> Index Scan using t1_pkey on t1
6234 /*+Leading(((((t1 t2)t3)t4)t5))*/
6235 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;
6238 Leading(((((t1 t2) t3) t4) t5))
6244 ----------------------------------------------------------------------------------------------
6247 Merge Cond: (t1.id = t4.id)
6249 Merge Cond: (t1.id = t3.id)
6251 Merge Cond: (t1.id = t2.id)
6252 -> Index Scan using t1_pkey on t1
6253 -> Index Scan using t2_pkey on t2
6260 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6261 Index Cond: (id = t1.id)
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 Join Filter: (t2.id = t1.id)
6278 Join Filter: (t3.id = t2.id)
6280 Merge Cond: (t4.id = t3.id)
6282 Merge Cond: (t5.id = t4.id)
6283 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6287 -> Index Scan using t3_pkey on t3
6288 -> Index Scan using t2_pkey on t2
6289 Index Cond: (id = t5.id)
6290 -> Index Scan using t1_pkey on t1
6291 Index Cond: (id = t5.id)
6294 /*+Leading(((t1 t2)(t3(t4 t5))))*/
6295 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;
6298 Leading(((t1 t2) (t3 (t4 t5))))
6304 ----------------------------------------------------------------------------------------------------------------------
6306 Merge Cond: (t1.id = t3.id)
6308 Merge Cond: (t1.id = t2.id)
6309 -> Index Scan using t1_pkey on t1
6310 -> Index Scan using t2_pkey on t2
6313 Merge Cond: (t3.id = t4.id)
6314 -> Index Scan using t3_pkey on t3
6317 Merge Cond: (t4.id = t5.id)
6318 -> Index Scan using t4_pkey on t4
6319 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6322 /*+Leading(((t5 t4)(t3(t2 t1))))*/
6323 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;
6326 Leading(((t5 t4) (t3 (t2 t1))))
6332 ----------------------------------------------------------------------------------------------------
6334 Merge Cond: (t4.id = t1.id)
6336 Merge Cond: (t5.id = t4.id)
6337 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6343 Merge Cond: (t3.id = t1.id)
6349 Merge Cond: (t2.id = t1.id)
6350 -> Index Scan using t2_pkey on t2
6351 -> Index Scan using t1_pkey on t1
6354 /*+Leading((((t1 t2)t3)(t4 t5)))*/
6355 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;
6358 Leading((((t1 t2) t3) (t4 t5)))
6364 ----------------------------------------------------------------------------------------------------------
6366 Merge Cond: (t1.id = t4.id)
6368 Merge Cond: (t1.id = t3.id)
6370 Merge Cond: (t1.id = t2.id)
6371 -> Index Scan using t1_pkey on t1
6372 -> Index Scan using t2_pkey on t2
6378 Merge Cond: (t4.id = t5.id)
6379 -> Index Scan using t4_pkey on t4
6380 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6383 /*+Leading((((t5 t4)t3)(t2 t1)))*/
6384 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;
6387 Leading((((t5 t4) t3) (t2 t1)))
6393 ----------------------------------------------------------------------------------------------------------
6395 Merge Cond: (t3.id = t1.id)
6397 Merge Cond: (t4.id = t3.id)
6399 Merge Cond: (t5.id = t4.id)
6400 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6404 -> Index Scan using t3_pkey on t3
6407 Merge Cond: (t2.id = t1.id)
6408 -> Index Scan using t2_pkey on t2
6409 -> Index Scan using t1_pkey on t1
6412 -- inherite table test to specify the index's name
6413 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6415 -----------------------------------------------------------------------
6418 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6419 -> Seq Scan on p2_c1
6420 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6421 -> Seq Scan on p2_c1_c1
6422 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6423 -> Seq Scan on p2_c1_c2
6424 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6427 /*+IndexScan(p2 p2_pkey)*/
6428 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6429 LOG: available indexes for IndexScan(p2): p2_pkey
6430 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6431 LOG: available indexes for IndexScan(p2_c2): p2_c2_pkey
6432 LOG: available indexes for IndexScan(p2_c3): p2_c3_pkey
6433 LOG: available indexes for IndexScan(p2_c4): p2_c4_pkey
6434 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6435 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6436 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_pkey
6437 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_pkey
6440 IndexScan(p2 p2_pkey)
6446 --------------------------------------------------
6448 -> Index Scan using p2_pkey on p2
6449 Index Cond: ((id >= 50) AND (id <= 51))
6450 Filter: (ctid = '(1,1)'::tid)
6451 -> Index Scan using p2_c1_pkey on p2_c1
6452 Index Cond: ((id >= 50) AND (id <= 51))
6453 Filter: (ctid = '(1,1)'::tid)
6454 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6455 Index Cond: ((id >= 50) AND (id <= 51))
6456 Filter: (ctid = '(1,1)'::tid)
6457 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6458 Index Cond: ((id >= 50) AND (id <= 51))
6459 Filter: (ctid = '(1,1)'::tid)
6462 /*+IndexScan(p2 p2_id_val_idx)*/
6463 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6464 LOG: available indexes for IndexScan(p2): p2_id_val_idx
6465 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6466 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
6467 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
6468 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
6469 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
6470 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
6471 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
6472 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
6475 IndexScan(p2 p2_id_val_idx)
6481 --------------------------------------------------------
6483 -> Index Scan using p2_id_val_idx on p2
6484 Index Cond: ((id >= 50) AND (id <= 51))
6485 Filter: (ctid = '(1,1)'::tid)
6486 -> Index Scan using p2_c1_id_val_idx on p2_c1
6487 Index Cond: ((id >= 50) AND (id <= 51))
6488 Filter: (ctid = '(1,1)'::tid)
6489 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
6490 Index Cond: ((id >= 50) AND (id <= 51))
6491 Filter: (ctid = '(1,1)'::tid)
6492 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
6493 Index Cond: ((id >= 50) AND (id <= 51))
6494 Filter: (ctid = '(1,1)'::tid)
6497 /*+IndexScan(p2 p2_val_id_idx)*/
6498 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6499 LOG: available indexes for IndexScan(p2): p2_val_id_idx
6500 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_id_idx
6501 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_id_idx
6502 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_id_idx
6503 LOG: available indexes for IndexScan(p2_c4):
6504 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_id_idx
6505 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_id_idx
6506 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_id_idx
6507 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_id_idx
6510 IndexScan(p2 p2_val_id_idx)
6516 --------------------------------------------------------
6518 -> Index Scan using p2_val_id_idx on p2
6519 Index Cond: ((id >= 50) AND (id <= 51))
6520 Filter: (ctid = '(1,1)'::tid)
6521 -> Index Scan using p2_c1_val_id_idx on p2_c1
6522 Index Cond: ((id >= 50) AND (id <= 51))
6523 Filter: (ctid = '(1,1)'::tid)
6524 -> Index Scan using p2_c1_c1_val_id_idx on p2_c1_c1
6525 Index Cond: ((id >= 50) AND (id <= 51))
6526 Filter: (ctid = '(1,1)'::tid)
6527 -> Index Scan using p2_c1_c2_val_id_idx on p2_c1_c2
6528 Index Cond: ((id >= 50) AND (id <= 51))
6529 Filter: (ctid = '(1,1)'::tid)
6532 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6534 -----------------------------------------------------------------------------------------
6537 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6538 -> Seq Scan on p2_c1
6539 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6540 -> Seq Scan on p2_c2
6541 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6542 -> Seq Scan on p2_c3
6543 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6544 -> Seq Scan on p2_c4
6545 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6546 -> Seq Scan on p2_c1_c1
6547 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6548 -> Seq Scan on p2_c1_c2
6549 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6550 -> Seq Scan on p2_c3_c1
6551 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6552 -> Seq Scan on p2_c3_c2
6553 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6556 /*+IndexScan(p2 p2_val)*/
6557 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6558 LOG: available indexes for IndexScan(p2):
6559 LOG: available indexes for IndexScan(p2_c1):
6560 LOG: available indexes for IndexScan(p2_c2):
6561 LOG: available indexes for IndexScan(p2_c3):
6562 LOG: available indexes for IndexScan(p2_c4):
6563 LOG: available indexes for IndexScan(p2_c1_c1):
6564 LOG: available indexes for IndexScan(p2_c1_c2):
6565 LOG: available indexes for IndexScan(p2_c3_c1):
6566 LOG: available indexes for IndexScan(p2_c3_c2):
6569 IndexScan(p2 p2_val)
6575 -----------------------------------------------------------------------------------------
6578 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6579 -> Seq Scan on p2_c1
6580 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6581 -> Seq Scan on p2_c2
6582 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6583 -> Seq Scan on p2_c3
6584 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6585 -> Seq Scan on p2_c4
6586 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6587 -> Seq Scan on p2_c1_c1
6588 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6589 -> Seq Scan on p2_c1_c2
6590 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6591 -> Seq Scan on p2_c3_c1
6592 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6593 -> Seq Scan on p2_c3_c2
6594 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6597 /*+IndexScan(p2 p2_pkey)*/
6598 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6599 LOG: available indexes for IndexScan(p2): p2_pkey
6600 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6601 LOG: available indexes for IndexScan(p2_c2): p2_c2_pkey
6602 LOG: available indexes for IndexScan(p2_c3): p2_c3_pkey
6603 LOG: available indexes for IndexScan(p2_c4): p2_c4_pkey
6604 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6605 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6606 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_pkey
6607 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_pkey
6610 IndexScan(p2 p2_pkey)
6616 --------------------------------------------------
6618 -> Index Scan using p2_pkey on p2
6619 Index Cond: ((id >= 50) AND (id <= 51))
6620 Filter: (ctid = '(1,1)'::tid)
6621 -> Index Scan using p2_c1_pkey on p2_c1
6622 Index Cond: ((id >= 50) AND (id <= 51))
6623 Filter: (ctid = '(1,1)'::tid)
6624 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6625 Index Cond: ((id >= 50) AND (id <= 51))
6626 Filter: (ctid = '(1,1)'::tid)
6627 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6628 Index Cond: ((id >= 50) AND (id <= 51))
6629 Filter: (ctid = '(1,1)'::tid)
6632 /*+IndexScan(p2 p2_id2_val)*/
6633 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6634 LOG: available indexes for IndexScan(p2): p2_id2_val
6635 LOG: available indexes for IndexScan(p2_c1): p2_c1_id2_val
6636 LOG: available indexes for IndexScan(p2_c2): p2_c2_id2_val
6637 LOG: available indexes for IndexScan(p2_c3):
6638 LOG: available indexes for IndexScan(p2_c4):
6639 LOG: available indexes for IndexScan(p2_c1_c1):
6640 LOG: available indexes for IndexScan(p2_c1_c2):
6641 LOG: available indexes for IndexScan(p2_c3_c1):
6642 LOG: available indexes for IndexScan(p2_c3_c2):
6645 IndexScan(p2 p2_id2_val)
6651 -----------------------------------------------------------------------
6653 -> Index Scan using p2_id2_val on p2
6654 Index Cond: ((id >= 50) AND (id <= 51))
6655 Filter: (ctid = '(1,1)'::tid)
6656 -> Index Scan using p2_c1_id2_val on p2_c1
6657 Index Cond: ((id >= 50) AND (id <= 51))
6658 Filter: (ctid = '(1,1)'::tid)
6659 -> Seq Scan on p2_c1_c1
6660 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6661 -> Seq Scan on p2_c1_c2
6662 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6665 /*+IndexScan(p2 p2_val2_id)*/
6666 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6667 LOG: available indexes for IndexScan(p2): p2_val2_id
6668 LOG: available indexes for IndexScan(p2_c1):
6669 LOG: available indexes for IndexScan(p2_c2):
6670 LOG: available indexes for IndexScan(p2_c3):
6671 LOG: available indexes for IndexScan(p2_c4):
6672 LOG: available indexes for IndexScan(p2_c1_c1):
6673 LOG: available indexes for IndexScan(p2_c1_c2):
6674 LOG: available indexes for IndexScan(p2_c3_c1):
6675 LOG: available indexes for IndexScan(p2_c3_c2):
6678 IndexScan(p2 p2_val2_id)
6684 -----------------------------------------------------------------------
6686 -> Index Scan using p2_val2_id on p2
6687 Index Cond: ((id >= 50) AND (id <= 51))
6688 Filter: (ctid = '(1,1)'::tid)
6689 -> Seq Scan on p2_c1
6690 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6691 -> Seq Scan on p2_c1_c1
6692 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6693 -> Seq Scan on p2_c1_c2
6694 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6697 /*+IndexScan(p2 p2_pkey)*/
6698 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6699 LOG: available indexes for IndexScan(p2): p2_pkey
6700 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6701 LOG: available indexes for IndexScan(p2_c2): p2_c2_pkey
6702 LOG: available indexes for IndexScan(p2_c3): p2_c3_pkey
6703 LOG: available indexes for IndexScan(p2_c4): p2_c4_pkey
6704 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6705 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6706 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_pkey
6707 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_pkey
6710 IndexScan(p2 p2_pkey)
6716 --------------------------------------------------
6718 -> Index Scan using p2_pkey on p2
6719 Index Cond: ((id >= 50) AND (id <= 51))
6720 Filter: (ctid = '(1,1)'::tid)
6721 -> Index Scan using p2_c1_pkey on p2_c1
6722 Index Cond: ((id >= 50) AND (id <= 51))
6723 Filter: (ctid = '(1,1)'::tid)
6724 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6725 Index Cond: ((id >= 50) AND (id <= 51))
6726 Filter: (ctid = '(1,1)'::tid)
6727 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6728 Index Cond: ((id >= 50) AND (id <= 51))
6729 Filter: (ctid = '(1,1)'::tid)
6732 /*+IndexScan(p2 p2_c1_id_val_idx)*/
6733 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6734 LOG: available indexes for IndexScan(p2):
6735 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6736 LOG: available indexes for IndexScan(p2_c2):
6737 LOG: available indexes for IndexScan(p2_c3):
6738 LOG: available indexes for IndexScan(p2_c4):
6739 LOG: available indexes for IndexScan(p2_c1_c1):
6740 LOG: available indexes for IndexScan(p2_c1_c2):
6741 LOG: available indexes for IndexScan(p2_c3_c1):
6742 LOG: available indexes for IndexScan(p2_c3_c2):
6745 IndexScan(p2 p2_c1_id_val_idx)
6751 -----------------------------------------------------------------------
6754 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6755 -> Index Scan using p2_c1_id_val_idx on p2_c1
6756 Index Cond: ((id >= 50) AND (id <= 51))
6757 Filter: (ctid = '(1,1)'::tid)
6758 -> Seq Scan on p2_c1_c1
6759 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6760 -> Seq Scan on p2_c1_c2
6761 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6764 /*+IndexScan(p2 no_exist)*/
6765 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6766 LOG: available indexes for IndexScan(p2):
6767 LOG: available indexes for IndexScan(p2_c1):
6768 LOG: available indexes for IndexScan(p2_c2):
6769 LOG: available indexes for IndexScan(p2_c3):
6770 LOG: available indexes for IndexScan(p2_c4):
6771 LOG: available indexes for IndexScan(p2_c1_c1):
6772 LOG: available indexes for IndexScan(p2_c1_c2):
6773 LOG: available indexes for IndexScan(p2_c3_c1):
6774 LOG: available indexes for IndexScan(p2_c3_c2):
6777 IndexScan(p2 no_exist)
6783 -----------------------------------------------------------------------
6786 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6787 -> Seq Scan on p2_c1
6788 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6789 -> Seq Scan on p2_c1_c1
6790 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6791 -> Seq Scan on p2_c1_c2
6792 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6795 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx)*/
6796 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6797 LOG: available indexes for IndexScan(p2): p2_pkey
6798 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6799 LOG: available indexes for IndexScan(p2_c2): p2_c2_pkey
6800 LOG: available indexes for IndexScan(p2_c3): p2_c3_pkey
6801 LOG: available indexes for IndexScan(p2_c4): p2_c4_pkey
6802 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6803 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6804 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_pkey
6805 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_pkey
6808 IndexScan(p2 p2_pkey p2_c1_id_val_idx)
6814 --------------------------------------------------
6816 -> Index Scan using p2_pkey on p2
6817 Index Cond: ((id >= 50) AND (id <= 51))
6818 Filter: (ctid = '(1,1)'::tid)
6819 -> Index Scan using p2_c1_id_val_idx on p2_c1
6820 Index Cond: ((id >= 50) AND (id <= 51))
6821 Filter: (ctid = '(1,1)'::tid)
6822 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6823 Index Cond: ((id >= 50) AND (id <= 51))
6824 Filter: (ctid = '(1,1)'::tid)
6825 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6826 Index Cond: ((id >= 50) AND (id <= 51))
6827 Filter: (ctid = '(1,1)'::tid)
6830 /*+IndexScan(p2 p2_pkey no_exist)*/
6831 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6832 LOG: available indexes for IndexScan(p2): p2_pkey
6833 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6834 LOG: available indexes for IndexScan(p2_c2): p2_c2_pkey
6835 LOG: available indexes for IndexScan(p2_c3): p2_c3_pkey
6836 LOG: available indexes for IndexScan(p2_c4): p2_c4_pkey
6837 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6838 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6839 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_pkey
6840 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_pkey
6843 IndexScan(p2 p2_pkey no_exist)
6849 --------------------------------------------------
6851 -> Index Scan using p2_pkey on p2
6852 Index Cond: ((id >= 50) AND (id <= 51))
6853 Filter: (ctid = '(1,1)'::tid)
6854 -> Index Scan using p2_c1_pkey on p2_c1
6855 Index Cond: ((id >= 50) AND (id <= 51))
6856 Filter: (ctid = '(1,1)'::tid)
6857 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6858 Index Cond: ((id >= 50) AND (id <= 51))
6859 Filter: (ctid = '(1,1)'::tid)
6860 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6861 Index Cond: ((id >= 50) AND (id <= 51))
6862 Filter: (ctid = '(1,1)'::tid)
6865 /*+IndexScan(p2 p2_c1_id_val_idx no_exist)*/
6866 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6867 LOG: available indexes for IndexScan(p2):
6868 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6869 LOG: available indexes for IndexScan(p2_c2):
6870 LOG: available indexes for IndexScan(p2_c3):
6871 LOG: available indexes for IndexScan(p2_c4):
6872 LOG: available indexes for IndexScan(p2_c1_c1):
6873 LOG: available indexes for IndexScan(p2_c1_c2):
6874 LOG: available indexes for IndexScan(p2_c3_c1):
6875 LOG: available indexes for IndexScan(p2_c3_c2):
6878 IndexScan(p2 p2_c1_id_val_idx no_exist)
6884 -----------------------------------------------------------------------
6887 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6888 -> Index Scan using p2_c1_id_val_idx on p2_c1
6889 Index Cond: ((id >= 50) AND (id <= 51))
6890 Filter: (ctid = '(1,1)'::tid)
6891 -> Seq Scan on p2_c1_c1
6892 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6893 -> Seq Scan on p2_c1_c2
6894 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6897 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)*/
6898 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6899 LOG: available indexes for IndexScan(p2): p2_pkey
6900 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6901 LOG: available indexes for IndexScan(p2_c2): p2_c2_pkey
6902 LOG: available indexes for IndexScan(p2_c3): p2_c3_pkey
6903 LOG: available indexes for IndexScan(p2_c4): p2_c4_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
6906 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_pkey
6907 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_pkey
6910 IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)
6916 --------------------------------------------------
6918 -> Index Scan using p2_pkey on p2
6919 Index Cond: ((id >= 50) AND (id <= 51))
6920 Filter: (ctid = '(1,1)'::tid)
6921 -> Index Scan using p2_c1_id_val_idx on p2_c1
6922 Index Cond: ((id >= 50) AND (id <= 51))
6923 Filter: (ctid = '(1,1)'::tid)
6924 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6925 Index Cond: ((id >= 50) AND (id <= 51))
6926 Filter: (ctid = '(1,1)'::tid)
6927 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6928 Index Cond: ((id >= 50) AND (id <= 51))
6929 Filter: (ctid = '(1,1)'::tid)
6932 /*+IndexScan(p2 p2_val_idx)*/
6933 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6934 LOG: available indexes for IndexScan(p2): p2_val_idx
6935 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx
6936 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx
6937 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx
6938 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx
6939 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx
6940 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx
6941 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx
6942 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx
6945 IndexScan(p2 p2_val_idx)
6951 -------------------------------------------------------------------
6953 -> Index Scan using p2_val_idx on p2
6954 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6955 Filter: (ctid = '(1,1)'::tid)
6956 -> Index Scan using p2_c1_val_idx on p2_c1
6957 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6958 Filter: (ctid = '(1,1)'::tid)
6959 -> Index Scan using p2_c2_val_idx on p2_c2
6960 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6961 Filter: (ctid = '(1,1)'::tid)
6962 -> Index Scan using p2_c3_val_idx on p2_c3
6963 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6964 Filter: (ctid = '(1,1)'::tid)
6965 -> Index Scan using p2_c4_val_idx on p2_c4
6966 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6967 Filter: (ctid = '(1,1)'::tid)
6968 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
6969 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6970 Filter: (ctid = '(1,1)'::tid)
6971 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
6972 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6973 Filter: (ctid = '(1,1)'::tid)
6974 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
6975 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6976 Filter: (ctid = '(1,1)'::tid)
6977 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
6978 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6979 Filter: (ctid = '(1,1)'::tid)
6982 /*+IndexScan(p2 p2_expr)*/
6983 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6984 LOG: available indexes for IndexScan(p2): p2_expr
6985 LOG: available indexes for IndexScan(p2_c1): p2_c1_expr_idx
6986 LOG: available indexes for IndexScan(p2_c2): p2_c2_expr_idx
6987 LOG: available indexes for IndexScan(p2_c3): p2_c3_expr_idx
6988 LOG: available indexes for IndexScan(p2_c4): p2_c4_expr_idx
6989 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_expr_idx
6990 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_expr_idx
6991 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_expr_idx
6992 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_expr_idx
6995 IndexScan(p2 p2_expr)
7001 -----------------------------------------------------------------------------------------
7004 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7005 -> Seq Scan on p2_c1
7006 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7007 -> Seq Scan on p2_c2
7008 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7009 -> Seq Scan on p2_c3
7010 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7011 -> Seq Scan on p2_c4
7012 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7013 -> Seq Scan on p2_c1_c1
7014 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7015 -> Seq Scan on p2_c1_c2
7016 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7017 -> Seq Scan on p2_c3_c1
7018 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7019 -> Seq Scan on p2_c3_c2
7020 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7023 /*+IndexScan(p2 p2_val_idx6)*/
7024 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7025 LOG: available indexes for IndexScan(p2): p2_val_idx6
7026 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx6
7027 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx6
7028 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx6
7029 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx6
7030 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx6
7031 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx6
7032 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx6
7033 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx6
7036 IndexScan(p2 p2_val_idx6)
7042 -----------------------------------------------------------------------------------------
7045 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7046 -> Seq Scan on p2_c1
7047 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7048 -> Seq Scan on p2_c2
7049 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7050 -> Seq Scan on p2_c3
7051 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7052 -> Seq Scan on p2_c4
7053 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7054 -> Seq Scan on p2_c1_c1
7055 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7056 -> Seq Scan on p2_c1_c2
7057 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7058 -> Seq Scan on p2_c3_c1
7059 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7060 -> Seq Scan on p2_c3_c2
7061 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7064 /*+IndexScan(p2 p2_val_idx p2_val_idx6)*/
7065 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7066 LOG: available indexes for IndexScan(p2): p2_val_idx6 p2_val_idx
7067 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx6 p2_c1_val_idx
7068 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx6 p2_c2_val_idx
7069 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx6 p2_c3_val_idx
7070 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx6 p2_c4_val_idx
7071 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx6 p2_c1_c1_val_idx
7072 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx6 p2_c1_c2_val_idx
7073 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx6 p2_c3_c1_val_idx
7074 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx6 p2_c3_c2_val_idx
7077 IndexScan(p2 p2_val_idx p2_val_idx6)
7083 -------------------------------------------------------------------
7085 -> Index Scan using p2_val_idx on p2
7086 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7087 Filter: (ctid = '(1,1)'::tid)
7088 -> Index Scan using p2_c1_val_idx on p2_c1
7089 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7090 Filter: (ctid = '(1,1)'::tid)
7091 -> Index Scan using p2_c2_val_idx on p2_c2
7092 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7093 Filter: (ctid = '(1,1)'::tid)
7094 -> Index Scan using p2_c3_val_idx on p2_c3
7095 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7096 Filter: (ctid = '(1,1)'::tid)
7097 -> Index Scan using p2_c4_val_idx on p2_c4
7098 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7099 Filter: (ctid = '(1,1)'::tid)
7100 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
7101 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7102 Filter: (ctid = '(1,1)'::tid)
7103 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
7104 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7105 Filter: (ctid = '(1,1)'::tid)
7106 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
7107 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7108 Filter: (ctid = '(1,1)'::tid)
7109 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
7110 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7111 Filter: (ctid = '(1,1)'::tid)
7114 -- regular expression
7116 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7118 ---------------------------------------------------------------------------------------------
7119 Index Only Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
7120 Index Cond: (id = 1)
7123 /*+ IndexScanRegexp(t5 t5_[^i].*)*/
7124 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7125 LOG: available indexes for IndexScanRegexp(t5): t5_val t5_pkey
7128 IndexScanRegexp(t5 t5_[^i].*)
7134 --------------------------------
7135 Index Scan using t5_pkey on t5
7136 Index Cond: (id = 1)
7139 /*+ IndexScanRegexp(t5 t5_id[0-9].*)*/
7140 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7141 LOG: available indexes for IndexScanRegexp(t5): t5_id3 t5_id2 t5_id1
7144 IndexScanRegexp(t5 t5_id[0-9].*)
7150 -------------------------------
7151 Index Scan using t5_id3 on t5
7152 Index Cond: (id = 1)
7155 /*+ IndexScanRegexp(t5 t5[^_].*)*/
7156 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7157 LOG: available indexes for IndexScanRegexp(t5):
7160 IndexScanRegexp(t5 t5[^_].*)
7166 --------------------
7171 /*+ IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7172 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7173 LOG: available indexes for IndexScanRegexp(t5):
7176 IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7182 --------------------
7187 /*+ IndexScan(t5 t5_id[0-9].*)*/
7188 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7189 LOG: available indexes for IndexScan(t5):
7192 IndexScan(t5 t5_id[0-9].*)
7198 --------------------
7203 /*+ IndexOnlyScanRegexp(t5 t5_[^i].*)*/
7204 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7205 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_val t5_pkey
7208 IndexOnlyScanRegexp(t5 t5_[^i].*)
7214 -------------------------------------
7215 Index Only Scan using t5_pkey on t5
7216 Index Cond: (id = 1)
7219 /*+ IndexOnlyScanRegexp(t5 t5_id[0-9].*)*/
7220 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7221 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_id3 t5_id2 t5_id1
7224 IndexOnlyScanRegexp(t5 t5_id[0-9].*)
7230 ------------------------------------
7231 Index Only Scan using t5_id3 on t5
7232 Index Cond: (id = 1)
7235 /*+ IndexOnlyScanRegexp(t5 t5[^_].*)*/
7236 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7237 LOG: available indexes for IndexOnlyScanRegexp(t5):
7240 IndexOnlyScanRegexp(t5 t5[^_].*)
7246 --------------------
7251 /*+ IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7252 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7253 LOG: available indexes for IndexOnlyScanRegexp(t5):
7256 IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7262 --------------------
7267 /*+ IndexOnlyScan(t5 t5_id[0-9].*)*/
7268 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7269 LOG: available indexes for IndexOnlyScan(t5):
7272 IndexOnlyScan(t5 t5_id[0-9].*)
7278 --------------------
7283 /*+ BitmapScanRegexp(t5 t5_[^i].*)*/
7284 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7285 LOG: available indexes for BitmapScanRegexp(t5): t5_val t5_pkey
7288 BitmapScanRegexp(t5 t5_[^i].*)
7294 ------------------------------------
7295 Bitmap Heap Scan on t5
7296 Recheck Cond: (id = 1)
7297 -> Bitmap Index Scan on t5_pkey
7298 Index Cond: (id = 1)
7301 /*+ BitmapScanRegexp(t5 t5_id[0-9].*)*/
7302 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7303 LOG: available indexes for BitmapScanRegexp(t5): t5_id3 t5_id2 t5_id1
7306 BitmapScanRegexp(t5 t5_id[0-9].*)
7312 -----------------------------------
7313 Bitmap Heap Scan on t5
7314 Recheck Cond: (id = 1)
7315 -> Bitmap Index Scan on t5_id3
7316 Index Cond: (id = 1)
7319 /*+ BitmapScanRegexp(t5 t5[^_].*)*/
7320 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7321 LOG: available indexes for BitmapScanRegexp(t5):
7324 BitmapScanRegexp(t5 t5[^_].*)
7330 --------------------
7335 /*+ BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7336 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7337 LOG: available indexes for BitmapScanRegexp(t5):
7340 BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7346 --------------------
7351 /*+ BitmapScan(t5 t5_id[0-9].*)*/
7352 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7353 LOG: available indexes for BitmapScan(t5):
7356 BitmapScan(t5 t5_id[0-9].*)
7362 --------------------
7368 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7370 ----------------------------
7374 -> Seq Scan on p1_c1
7376 -> Seq Scan on p1_c2
7378 -> Seq Scan on p1_c3
7380 -> Seq Scan on p1_c4
7382 -> Seq Scan on p1_c1_c1
7384 -> Seq Scan on p1_c1_c2
7386 -> Seq Scan on p1_c3_c1
7388 -> Seq Scan on p1_c3_c2
7392 /*+ IndexScanRegexp(p1 p1_.*[^0-9]$)*/
7393 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7394 LOG: available indexes for IndexScanRegexp(p1): p1_pkey
7395 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_pkey
7396 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_pkey
7397 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_pkey
7398 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_pkey
7399 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7400 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7401 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7402 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7405 IndexScanRegexp(p1 p1_.*[^0-9]$)
7411 ----------------------------
7415 -> Seq Scan on p1_c1
7417 -> Seq Scan on p1_c2
7419 -> Seq Scan on p1_c3
7421 -> Seq Scan on p1_c4
7423 -> Seq Scan on p1_c1_c1
7425 -> Seq Scan on p1_c1_c2
7427 -> Seq Scan on p1_c3_c1
7429 -> Seq Scan on p1_c3_c2
7433 /*+ IndexScanRegexp(p1 p1_.*val2.*)*/
7434 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7435 LOG: available indexes for IndexScanRegexp(p1): p1_val2
7436 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_val2
7437 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_val2
7438 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_val2
7439 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_val2
7440 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_val2
7441 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_val2
7442 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_val2
7443 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_val2
7446 IndexScanRegexp(p1 p1_.*val2.*)
7452 --------------------------------------------------
7454 -> Index Scan using p1_val2 on p1
7455 Index Cond: (val = 1)
7456 -> Index Scan using p1_c1_val2 on p1_c1
7457 Index Cond: (val = 1)
7458 -> Index Scan using p1_c2_val2 on p1_c2
7459 Index Cond: (val = 1)
7460 -> Index Scan using p1_c3_val2 on p1_c3
7461 Index Cond: (val = 1)
7462 -> Index Scan using p1_c4_val2 on p1_c4
7463 Index Cond: (val = 1)
7464 -> Index Scan using p1_c1_c1_val2 on p1_c1_c1
7465 Index Cond: (val = 1)
7466 -> Index Scan using p1_c1_c2_val2 on p1_c1_c2
7467 Index Cond: (val = 1)
7468 -> Index Scan using p1_c3_c1_val2 on p1_c3_c1
7469 Index Cond: (val = 1)
7470 -> Index Scan using p1_c3_c2_val2 on p1_c3_c2
7471 Index Cond: (val = 1)
7474 /*+ IndexScanRegexp(p1 p1[^_].*)*/
7475 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7476 LOG: available indexes for IndexScanRegexp(p1):
7477 LOG: available indexes for IndexScanRegexp(p1_c1):
7478 LOG: available indexes for IndexScanRegexp(p1_c2):
7479 LOG: available indexes for IndexScanRegexp(p1_c3):
7480 LOG: available indexes for IndexScanRegexp(p1_c4):
7481 LOG: available indexes for IndexScanRegexp(p1_c1_c1):
7482 LOG: available indexes for IndexScanRegexp(p1_c1_c2):
7483 LOG: available indexes for IndexScanRegexp(p1_c3_c1):
7484 LOG: available indexes for IndexScanRegexp(p1_c3_c2):
7487 IndexScanRegexp(p1 p1[^_].*)
7493 ----------------------------
7497 -> Seq Scan on p1_c1
7499 -> Seq Scan on p1_c2
7501 -> Seq Scan on p1_c3
7503 -> Seq Scan on p1_c4
7505 -> Seq Scan on p1_c1_c1
7507 -> Seq Scan on p1_c1_c2
7509 -> Seq Scan on p1_c3_c1
7511 -> Seq Scan on p1_c3_c2
7515 /*+ IndexScan(p1 p1_.*val2.*)*/
7516 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7517 LOG: available indexes for IndexScan(p1):
7518 LOG: available indexes for IndexScan(p1_c1):
7519 LOG: available indexes for IndexScan(p1_c2):
7520 LOG: available indexes for IndexScan(p1_c3):
7521 LOG: available indexes for IndexScan(p1_c4):
7522 LOG: available indexes for IndexScan(p1_c1_c1):
7523 LOG: available indexes for IndexScan(p1_c1_c2):
7524 LOG: available indexes for IndexScan(p1_c3_c1):
7525 LOG: available indexes for IndexScan(p1_c3_c2):
7528 IndexScan(p1 p1_.*val2.*)
7534 ----------------------------
7538 -> Seq Scan on p1_c1
7540 -> Seq Scan on p1_c2
7542 -> Seq Scan on p1_c3
7544 -> Seq Scan on p1_c4
7546 -> Seq Scan on p1_c1_c1
7548 -> Seq Scan on p1_c1_c2
7550 -> Seq Scan on p1_c3_c1
7552 -> Seq Scan on p1_c3_c2
7556 /*+ IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)*/
7557 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7558 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_pkey
7559 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_pkey
7560 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_pkey
7561 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_pkey
7562 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_pkey
7563 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7564 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7565 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7566 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7569 IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)
7575 ----------------------------
7579 -> Seq Scan on p1_c1
7581 -> Seq Scan on p1_c2
7583 -> Seq Scan on p1_c3
7585 -> Seq Scan on p1_c4
7587 -> Seq Scan on p1_c1_c1
7589 -> Seq Scan on p1_c1_c2
7591 -> Seq Scan on p1_c3_c1
7593 -> Seq Scan on p1_c3_c2
7597 /*+ IndexOnlyScanRegexp(p1 p1_.*val2.*)*/
7598 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7599 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_val2
7600 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_val2
7601 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_val2
7602 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_val2
7603 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_val2
7604 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_val2
7605 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_val2
7606 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_val2
7607 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_val2
7610 IndexOnlyScanRegexp(p1 p1_.*val2.*)
7616 -------------------------------------------------------
7618 -> Index Only Scan using p1_val2 on p1
7619 Index Cond: (val = 1)
7620 -> Index Only Scan using p1_c1_val2 on p1_c1
7621 Index Cond: (val = 1)
7622 -> Index Only Scan using p1_c2_val2 on p1_c2
7623 Index Cond: (val = 1)
7624 -> Index Only Scan using p1_c3_val2 on p1_c3
7625 Index Cond: (val = 1)
7626 -> Index Only Scan using p1_c4_val2 on p1_c4
7627 Index Cond: (val = 1)
7628 -> Index Only Scan using p1_c1_c1_val2 on p1_c1_c1
7629 Index Cond: (val = 1)
7630 -> Index Only Scan using p1_c1_c2_val2 on p1_c1_c2
7631 Index Cond: (val = 1)
7632 -> Index Only Scan using p1_c3_c1_val2 on p1_c3_c1
7633 Index Cond: (val = 1)
7634 -> Index Only Scan using p1_c3_c2_val2 on p1_c3_c2
7635 Index Cond: (val = 1)
7638 /*+ IndexOnlyScanRegexp(p1 p1[^_].*)*/
7639 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7640 LOG: available indexes for IndexOnlyScanRegexp(p1):
7641 LOG: available indexes for IndexOnlyScanRegexp(p1_c1):
7642 LOG: available indexes for IndexOnlyScanRegexp(p1_c2):
7643 LOG: available indexes for IndexOnlyScanRegexp(p1_c3):
7644 LOG: available indexes for IndexOnlyScanRegexp(p1_c4):
7645 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1):
7646 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2):
7647 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1):
7648 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2):
7651 IndexOnlyScanRegexp(p1 p1[^_].*)
7657 ----------------------------
7661 -> Seq Scan on p1_c1
7663 -> Seq Scan on p1_c2
7665 -> Seq Scan on p1_c3
7667 -> Seq Scan on p1_c4
7669 -> Seq Scan on p1_c1_c1
7671 -> Seq Scan on p1_c1_c2
7673 -> Seq Scan on p1_c3_c1
7675 -> Seq Scan on p1_c3_c2
7679 /*+ IndexOnlyScan(p1 p1_.*val2.*)*/
7680 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7681 LOG: available indexes for IndexOnlyScan(p1):
7682 LOG: available indexes for IndexOnlyScan(p1_c1):
7683 LOG: available indexes for IndexOnlyScan(p1_c2):
7684 LOG: available indexes for IndexOnlyScan(p1_c3):
7685 LOG: available indexes for IndexOnlyScan(p1_c4):
7686 LOG: available indexes for IndexOnlyScan(p1_c1_c1):
7687 LOG: available indexes for IndexOnlyScan(p1_c1_c2):
7688 LOG: available indexes for IndexOnlyScan(p1_c3_c1):
7689 LOG: available indexes for IndexOnlyScan(p1_c3_c2):
7692 IndexOnlyScan(p1 p1_.*val2.*)
7698 ----------------------------
7702 -> Seq Scan on p1_c1
7704 -> Seq Scan on p1_c2
7706 -> Seq Scan on p1_c3
7708 -> Seq Scan on p1_c4
7710 -> Seq Scan on p1_c1_c1
7712 -> Seq Scan on p1_c1_c2
7714 -> Seq Scan on p1_c3_c1
7716 -> Seq Scan on p1_c3_c2
7720 /*+ BitmapScanRegexp(p1 p1_.*[^0-9]$)*/
7721 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7722 LOG: available indexes for BitmapScanRegexp(p1): p1_pkey
7723 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_pkey
7724 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_pkey
7725 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_pkey
7726 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_pkey
7727 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7728 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7729 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7730 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7733 BitmapScanRegexp(p1 p1_.*[^0-9]$)
7739 ----------------------------
7743 -> Seq Scan on p1_c1
7745 -> Seq Scan on p1_c2
7747 -> Seq Scan on p1_c3
7749 -> Seq Scan on p1_c4
7751 -> Seq Scan on p1_c1_c1
7753 -> Seq Scan on p1_c1_c2
7755 -> Seq Scan on p1_c3_c1
7757 -> Seq Scan on p1_c3_c2
7761 /*+ BitmapScanRegexp(p1 p1_.*val2.*)*/
7762 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7763 LOG: available indexes for BitmapScanRegexp(p1): p1_val2
7764 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_val2
7765 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_val2
7766 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_val2
7767 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_val2
7768 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_val2
7769 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_val2
7770 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_val2
7771 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_val2
7774 BitmapScanRegexp(p1 p1_.*val2.*)
7780 ------------------------------------------------
7782 -> Bitmap Heap Scan on p1
7783 Recheck Cond: (val = 1)
7784 -> Bitmap Index Scan on p1_val2
7785 Index Cond: (val = 1)
7786 -> Bitmap Heap Scan on p1_c1
7787 Recheck Cond: (val = 1)
7788 -> Bitmap Index Scan on p1_c1_val2
7789 Index Cond: (val = 1)
7790 -> Bitmap Heap Scan on p1_c2
7791 Recheck Cond: (val = 1)
7792 -> Bitmap Index Scan on p1_c2_val2
7793 Index Cond: (val = 1)
7794 -> Bitmap Heap Scan on p1_c3
7795 Recheck Cond: (val = 1)
7796 -> Bitmap Index Scan on p1_c3_val2
7797 Index Cond: (val = 1)
7798 -> Bitmap Heap Scan on p1_c4
7799 Recheck Cond: (val = 1)
7800 -> Bitmap Index Scan on p1_c4_val2
7801 Index Cond: (val = 1)
7802 -> Bitmap Heap Scan on p1_c1_c1
7803 Recheck Cond: (val = 1)
7804 -> Bitmap Index Scan on p1_c1_c1_val2
7805 Index Cond: (val = 1)
7806 -> Bitmap Heap Scan on p1_c1_c2
7807 Recheck Cond: (val = 1)
7808 -> Bitmap Index Scan on p1_c1_c2_val2
7809 Index Cond: (val = 1)
7810 -> Bitmap Heap Scan on p1_c3_c1
7811 Recheck Cond: (val = 1)
7812 -> Bitmap Index Scan on p1_c3_c1_val2
7813 Index Cond: (val = 1)
7814 -> Bitmap Heap Scan on p1_c3_c2
7815 Recheck Cond: (val = 1)
7816 -> Bitmap Index Scan on p1_c3_c2_val2
7817 Index Cond: (val = 1)
7820 /*+ BitmapScanRegexp(p1 p1[^_].*)*/
7821 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7822 LOG: available indexes for BitmapScanRegexp(p1):
7823 LOG: available indexes for BitmapScanRegexp(p1_c1):
7824 LOG: available indexes for BitmapScanRegexp(p1_c2):
7825 LOG: available indexes for BitmapScanRegexp(p1_c3):
7826 LOG: available indexes for BitmapScanRegexp(p1_c4):
7827 LOG: available indexes for BitmapScanRegexp(p1_c1_c1):
7828 LOG: available indexes for BitmapScanRegexp(p1_c1_c2):
7829 LOG: available indexes for BitmapScanRegexp(p1_c3_c1):
7830 LOG: available indexes for BitmapScanRegexp(p1_c3_c2):
7833 BitmapScanRegexp(p1 p1[^_].*)
7839 ----------------------------
7843 -> Seq Scan on p1_c1
7845 -> Seq Scan on p1_c2
7847 -> Seq Scan on p1_c3
7849 -> Seq Scan on p1_c4
7851 -> Seq Scan on p1_c1_c1
7853 -> Seq Scan on p1_c1_c2
7855 -> Seq Scan on p1_c3_c1
7857 -> Seq Scan on p1_c3_c2
7861 /*+ BitmapScan(p1 p1_.*val2.*)*/
7862 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7863 LOG: available indexes for BitmapScan(p1):
7864 LOG: available indexes for BitmapScan(p1_c1):
7865 LOG: available indexes for BitmapScan(p1_c2):
7866 LOG: available indexes for BitmapScan(p1_c3):
7867 LOG: available indexes for BitmapScan(p1_c4):
7868 LOG: available indexes for BitmapScan(p1_c1_c1):
7869 LOG: available indexes for BitmapScan(p1_c1_c2):
7870 LOG: available indexes for BitmapScan(p1_c3_c1):
7871 LOG: available indexes for BitmapScan(p1_c3_c2):
7874 BitmapScan(p1 p1_.*val2.*)
7880 ----------------------------
7884 -> Seq Scan on p1_c1
7886 -> Seq Scan on p1_c2
7888 -> Seq Scan on p1_c3
7890 -> Seq Scan on p1_c4
7892 -> Seq Scan on p1_c1_c1
7894 -> Seq Scan on p1_c1_c2
7896 -> Seq Scan on p1_c3_c1
7898 -> Seq Scan on p1_c3_c2
7902 -- search from hint table
7903 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?;', '', 'SeqScan(t1)');
7904 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?;', '', 'IndexScan(t1)');
7905 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN SELECT * FROM t1 WHERE t1.id = ?;', '', 'BitmapScan(t1)');
7906 SELECT * FROM hint_plan.hints ORDER BY id;
7907 id | norm_query_string | application_name | hints
7908 ----+----------------------------------------------------------+------------------+----------------
7909 1 | EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?; | | SeqScan(t1)
7910 2 | EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?; | | IndexScan(t1)
7911 3 | EXPLAIN SELECT * FROM t1 WHERE t1.id = ?; | | BitmapScan(t1)
7914 SET pg_hint_plan.enable_hint_table = on;
7915 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7924 --------------------
7929 SET pg_hint_plan.enable_hint_table = off;
7930 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7932 --------------------------------
7933 Index Scan using t1_pkey on t1
7934 Index Cond: (id = 1)
7937 TRUNCATE hint_plan.hints;
7938 VACUUM ANALYZE hint_plan.hints;
7940 EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = 1;
7942 -------------------------------------
7943 Index Only Scan using t1_pkey on t1
7944 Index Cond: (id = 1)
7948 CREATE FUNCTION testfunc() RETURNS RECORD AS $$
7952 SELECT /*+ SeqScan(t1) */ * INTO ret FROM t1 LIMIT 1;
7955 $$ LANGUAGE plpgsql;
7964 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 LIMIT 1"
7965 PL/pgSQL function testfunc() line 5 at SQL statement
7972 DROP FUNCTION testfunc();
7973 CREATE FUNCTION testfunc() RETURNS void AS $$
7975 EXECUTE format('/*+ SeqScan(t1) */ SELECT * FROM t1');
7977 $$ LANGUAGE plpgsql;
7986 CONTEXT: SQL statement "/*+ SeqScan(t1) */ SELECT * FROM t1"
7987 PL/pgSQL function testfunc() line 3 at EXECUTE
7993 -- This should not use SeqScan(t1)
7994 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8008 DROP FUNCTION testfunc();
8009 CREATE FUNCTION testfunc() RETURNS void AS $$
8011 PERFORM 1, /*+ SeqScan(t1) */ * from t1;
8013 $$ LANGUAGE plpgsql;
8022 CONTEXT: SQL statement "SELECT 1, /*+ SeqScan(t1) */ * from t1"
8023 PL/pgSQL function testfunc() line 3 at PERFORM
8030 DROP FUNCTION testfunc();
8031 CREATE FUNCTION testfunc() RETURNS int AS $$
8037 FOR v IN SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id LOOP
8042 $$ LANGUAGE plpgsql;
8051 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id"
8052 PL/pgSQL function testfunc() line 7 at FOR over SELECT rows
8059 DROP FUNCTION testfunc();
8060 CREATE FUNCTION testfunc() RETURNS int AS $$
8067 FOR v IN EXECUTE 'SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id' LOOP
8072 $$ LANGUAGE plpgsql;
8081 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id"
8082 PL/pgSQL function testfunc() line 8 at FOR over EXECUTE statement
8089 DROP FUNCTION testfunc();
8090 CREATE FUNCTION testfunc() RETURNS int AS $$
8092 ref CURSOR FOR SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8097 sum := sum + rec.val;
8101 $$ LANGUAGE plpgsql;
8110 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8111 PL/pgSQL function testfunc() line 7 at FOR over cursor
8118 DROP FUNCTION testfunc();
8119 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8121 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8123 $$ LANGUAGE plpgsql;
8124 SELECT * FROM testfunc() LIMIT 1;
8132 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8133 PL/pgSQL function testfunc() line 3 at RETURN QUERY
8139 -- Test for error exit from inner SQL statement.
8140 DROP FUNCTION testfunc();
8141 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8143 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id;
8145 $$ LANGUAGE plpgsql;
8146 SELECT * FROM testfunc() LIMIT 1;
8147 ERROR: relation "ttx" does not exist
8148 LINE 1: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8150 QUERY: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8151 CONTEXT: PL/pgSQL function testfunc() line 3 at RETURN QUERY
8152 -- this should not use SeqScan(t1) hint.
8153 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8166 DROP FUNCTION testfunc();
8167 DROP EXTENSION pg_hint_plan;
8171 -- Explain result includes "Planning time" if COSTS is enabled, but
8172 -- this test needs it enabled for get rows count. So do tests via psql
8173 -- and grep -v the mutable line.
8175 \o results/pg_hint_plan.tmpout
8176 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8178 \! sql/maskout.sh results/pg_hint_plan.tmpout
8180 ------------------------------------------------------------------------------
8181 Merge Join (cost=xxx rows=1000 width=xxx)
8182 Merge Cond: (t1.id = t2.id)
8183 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8184 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8187 \o results/pg_hint_plan.tmpout
8188 /*+ Rows(t1 t2 #99) */
8189 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8198 \! sql/maskout.sh results/pg_hint_plan.tmpout
8200 ------------------------------------------------------------------------------
8201 Merge Join (cost=xxx rows=99 width=xxx)
8202 Merge Cond: (t1.id = t2.id)
8203 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8204 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8207 \o results/pg_hint_plan.tmpout
8208 /*+ Rows(t1 t2 +99) */
8209 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8218 \! sql/maskout.sh results/pg_hint_plan.tmpout
8220 ------------------------------------------------------------------------------
8221 Merge Join (cost=xxx rows=1099 width=xxx)
8222 Merge Cond: (t1.id = t2.id)
8223 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8224 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8227 \o results/pg_hint_plan.tmpout
8228 /*+ Rows(t1 t2 -99) */
8229 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8238 \! sql/maskout.sh results/pg_hint_plan.tmpout
8240 ------------------------------------------------------------------------------
8241 Merge Join (cost=xxx rows=901 width=xxx)
8242 Merge Cond: (t1.id = t2.id)
8243 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8244 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8247 \o results/pg_hint_plan.tmpout
8248 /*+ Rows(t1 t2 *99) */
8249 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8258 \! sql/maskout.sh results/pg_hint_plan.tmpout
8260 ------------------------------------------------------------------------------
8261 Merge Join (cost=xxx rows=99000 width=xxx)
8262 Merge Cond: (t1.id = t2.id)
8263 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8264 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8267 \o results/pg_hint_plan.tmpout
8268 /*+ Rows(t1 t2 *0.01) */
8269 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8278 \! sql/maskout.sh results/pg_hint_plan.tmpout
8280 ------------------------------------------------------------------------------
8281 Merge Join (cost=xxx rows=10 width=xxx)
8282 Merge Cond: (t1.id = t2.id)
8283 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8284 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8287 \o results/pg_hint_plan.tmpout
8288 /*+ Rows(t1 t2 #aa) */
8289 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8290 INFO: pg_hint_plan: hint syntax error at or near "aa"
8291 DETAIL: Rows hint requires valid number as rows estimation.
8300 \! sql/maskout.sh results/pg_hint_plan.tmpout
8302 ------------------------------------------------------------------------------
8303 Merge Join (cost=xxx rows=1000 width=xxx)
8304 Merge Cond: (t1.id = t2.id)
8305 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8306 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8309 \o results/pg_hint_plan.tmpout
8310 /*+ Rows(t1 t2 /99) */
8311 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8312 INFO: pg_hint_plan: hint syntax error at or near "/99"
8313 DETAIL: Unrecognized rows value type notation.
8322 \! sql/maskout.sh results/pg_hint_plan.tmpout
8324 ------------------------------------------------------------------------------
8325 Merge Join (cost=xxx rows=1000 width=xxx)
8326 Merge Cond: (t1.id = t2.id)
8327 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8328 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8332 \o results/pg_hint_plan.tmpout
8333 /*+ Rows(t1 t2 -99999) */
8334 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8335 WARNING: Force estimate to be at least one row, to avoid possible divide-by-zero when interpolating costs : Rows(t1 t2 -99999)
8344 \! sql/maskout.sh results/pg_hint_plan.tmpout
8346 ------------------------------------------------------------------------------
8347 Merge Join (cost=xxx rows=1 width=xxx)
8348 Merge Cond: (t1.id = t2.id)
8349 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8350 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8353 -- complex join tree
8354 \o results/pg_hint_plan.tmpout
8355 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8357 \! sql/maskout.sh results/pg_hint_plan.tmpout
8359 ------------------------------------------------------------------------------------
8360 Merge Join (cost=xxx rows=10 width=xxx)
8361 Merge Cond: (t1.id = t3.id)
8362 -> Merge Join (cost=xxx rows=1000 width=xxx)
8363 Merge Cond: (t1.id = t2.id)
8364 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8365 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8366 -> Sort (cost=xxx rows=100 width=xxx)
8368 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
8371 \o results/pg_hint_plan.tmpout
8372 /*+ Rows(t1 t2 #22) */
8373 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8382 \! sql/maskout.sh results/pg_hint_plan.tmpout
8384 ------------------------------------------------------------------------------------
8385 Merge Join (cost=xxx rows=1 width=xxx)
8386 Merge Cond: (t1.id = t3.id)
8387 -> Merge Join (cost=xxx rows=22 width=xxx)
8388 Merge Cond: (t1.id = t2.id)
8389 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8390 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8391 -> Sort (cost=xxx rows=100 width=xxx)
8393 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
8396 \o results/pg_hint_plan.tmpout
8397 /*+ Rows(t1 t3 *10) */
8398 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8407 \! sql/maskout.sh results/pg_hint_plan.tmpout
8409 ------------------------------------------------------------------------------------
8410 Merge Join (cost=xxx rows=100 width=xxx)
8411 Merge Cond: (t1.id = t3.id)
8412 -> Merge Join (cost=xxx rows=1000 width=xxx)
8413 Merge Cond: (t1.id = t2.id)
8414 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8415 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8416 -> Sort (cost=xxx rows=100 width=xxx)
8418 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
8421 \! rm results/pg_hint_plan.tmpout