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 ---------------------------------------
1489 Join Filter: (t1.id = t2.id)
1491 Filter: (ctid = '(1,1)'::tid)
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: (t2.id = t1.id)
3020 -- inheritance tables test
3021 SET constraint_exclusion TO off;
3022 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3024 -----------------------------------------------------------------------
3027 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3028 -> Seq Scan on p1_c1
3029 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3030 -> Seq Scan on p1_c2
3031 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3032 -> Seq Scan on p1_c3
3033 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3034 -> Seq Scan on p1_c4
3035 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3036 -> Seq Scan on p1_c1_c1
3037 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3038 -> Seq Scan on p1_c1_c2
3039 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3040 -> Seq Scan on p1_c3_c1
3041 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3042 -> Seq Scan on p1_c3_c2
3043 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3046 SET constraint_exclusion TO on;
3047 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3049 -----------------------------------------------------------------------
3052 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3053 -> Seq Scan on p1_c1
3054 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3055 -> Seq Scan on p1_c1_c1
3056 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3057 -> Seq Scan on p1_c1_c2
3058 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3061 SET constraint_exclusion TO off;
3063 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3072 -----------------------------------------------------------------------
3075 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3076 -> Seq Scan on p1_c1
3077 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3078 -> Seq Scan on p1_c2
3079 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3080 -> Seq Scan on p1_c3
3081 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3082 -> Seq Scan on p1_c4
3083 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3084 -> Seq Scan on p1_c1_c1
3085 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3086 -> Seq Scan on p1_c1_c2
3087 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3088 -> Seq Scan on p1_c3_c1
3089 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3090 -> Seq Scan on p1_c3_c2
3091 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3095 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3104 --------------------------------------------------
3106 -> Index Scan using p1_pkey on p1
3107 Index Cond: ((id >= 50) AND (id <= 51))
3108 Filter: (ctid = '(1,1)'::tid)
3109 -> Index Scan using p1_c1_pkey on p1_c1
3110 Index Cond: ((id >= 50) AND (id <= 51))
3111 Filter: (ctid = '(1,1)'::tid)
3112 -> Index Scan using p1_c2_pkey on p1_c2
3113 Index Cond: ((id >= 50) AND (id <= 51))
3114 Filter: (ctid = '(1,1)'::tid)
3115 -> Index Scan using p1_c3_pkey on p1_c3
3116 Index Cond: ((id >= 50) AND (id <= 51))
3117 Filter: (ctid = '(1,1)'::tid)
3118 -> Index Scan using p1_c4_pkey on p1_c4
3119 Index Cond: ((id >= 50) AND (id <= 51))
3120 Filter: (ctid = '(1,1)'::tid)
3121 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3122 Index Cond: ((id >= 50) AND (id <= 51))
3123 Filter: (ctid = '(1,1)'::tid)
3124 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3125 Index Cond: ((id >= 50) AND (id <= 51))
3126 Filter: (ctid = '(1,1)'::tid)
3127 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
3128 Index Cond: ((id >= 50) AND (id <= 51))
3129 Filter: (ctid = '(1,1)'::tid)
3130 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
3131 Index Cond: ((id >= 50) AND (id <= 51))
3132 Filter: (ctid = '(1,1)'::tid)
3136 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3145 -------------------------------------------------------
3147 -> Bitmap Heap Scan on p1
3148 Recheck Cond: ((id >= 50) AND (id <= 51))
3149 Filter: (ctid = '(1,1)'::tid)
3150 -> Bitmap Index Scan on p1_pkey
3151 Index Cond: ((id >= 50) AND (id <= 51))
3152 -> Bitmap Heap Scan on p1_c1
3153 Recheck Cond: ((id >= 50) AND (id <= 51))
3154 Filter: (ctid = '(1,1)'::tid)
3155 -> Bitmap Index Scan on p1_c1_pkey
3156 Index Cond: ((id >= 50) AND (id <= 51))
3157 -> Bitmap Heap Scan on p1_c2
3158 Recheck Cond: ((id >= 50) AND (id <= 51))
3159 Filter: (ctid = '(1,1)'::tid)
3160 -> Bitmap Index Scan on p1_c2_pkey
3161 Index Cond: ((id >= 50) AND (id <= 51))
3162 -> Bitmap Heap Scan on p1_c3
3163 Recheck Cond: ((id >= 50) AND (id <= 51))
3164 Filter: (ctid = '(1,1)'::tid)
3165 -> Bitmap Index Scan on p1_c3_pkey
3166 Index Cond: ((id >= 50) AND (id <= 51))
3167 -> Bitmap Heap Scan on p1_c4
3168 Recheck Cond: ((id >= 50) AND (id <= 51))
3169 Filter: (ctid = '(1,1)'::tid)
3170 -> Bitmap Index Scan on p1_c4_pkey
3171 Index Cond: ((id >= 50) AND (id <= 51))
3172 -> Bitmap Heap Scan on p1_c1_c1
3173 Recheck Cond: ((id >= 50) AND (id <= 51))
3174 Filter: (ctid = '(1,1)'::tid)
3175 -> Bitmap Index Scan on p1_c1_c1_pkey
3176 Index Cond: ((id >= 50) AND (id <= 51))
3177 -> Bitmap Heap Scan on p1_c1_c2
3178 Recheck Cond: ((id >= 50) AND (id <= 51))
3179 Filter: (ctid = '(1,1)'::tid)
3180 -> Bitmap Index Scan on p1_c1_c2_pkey
3181 Index Cond: ((id >= 50) AND (id <= 51))
3182 -> Bitmap Heap Scan on p1_c3_c1
3183 Recheck Cond: ((id >= 50) AND (id <= 51))
3184 Filter: (ctid = '(1,1)'::tid)
3185 -> Bitmap Index Scan on p1_c3_c1_pkey
3186 Index Cond: ((id >= 50) AND (id <= 51))
3187 -> Bitmap Heap Scan on p1_c3_c2
3188 Recheck Cond: ((id >= 50) AND (id <= 51))
3189 Filter: (ctid = '(1,1)'::tid)
3190 -> Bitmap Index Scan on p1_c3_c2_pkey
3191 Index Cond: ((id >= 50) AND (id <= 51))
3195 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3204 ---------------------------------------------
3207 TID Cond: (ctid = '(1,1)'::tid)
3208 Filter: ((id >= 50) AND (id <= 51))
3209 -> Tid Scan on p1_c1
3210 TID Cond: (ctid = '(1,1)'::tid)
3211 Filter: ((id >= 50) AND (id <= 51))
3212 -> Tid Scan on p1_c2
3213 TID Cond: (ctid = '(1,1)'::tid)
3214 Filter: ((id >= 50) AND (id <= 51))
3215 -> Tid Scan on p1_c3
3216 TID Cond: (ctid = '(1,1)'::tid)
3217 Filter: ((id >= 50) AND (id <= 51))
3218 -> Tid Scan on p1_c4
3219 TID Cond: (ctid = '(1,1)'::tid)
3220 Filter: ((id >= 50) AND (id <= 51))
3221 -> Tid Scan on p1_c1_c1
3222 TID Cond: (ctid = '(1,1)'::tid)
3223 Filter: ((id >= 50) AND (id <= 51))
3224 -> Tid Scan on p1_c1_c2
3225 TID Cond: (ctid = '(1,1)'::tid)
3226 Filter: ((id >= 50) AND (id <= 51))
3227 -> Tid Scan on p1_c3_c1
3228 TID Cond: (ctid = '(1,1)'::tid)
3229 Filter: ((id >= 50) AND (id <= 51))
3230 -> Tid Scan on p1_c3_c2
3231 TID Cond: (ctid = '(1,1)'::tid)
3232 Filter: ((id >= 50) AND (id <= 51))
3235 SET constraint_exclusion TO on;
3237 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3246 -----------------------------------------------------------------------
3249 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3250 -> Seq Scan on p1_c1
3251 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3252 -> Seq Scan on p1_c1_c1
3253 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3254 -> Seq Scan on p1_c1_c2
3255 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3259 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3268 --------------------------------------------------
3270 -> Index Scan using p1_pkey on p1
3271 Index Cond: ((id >= 50) AND (id <= 51))
3272 Filter: (ctid = '(1,1)'::tid)
3273 -> Index Scan using p1_c1_pkey on p1_c1
3274 Index Cond: ((id >= 50) AND (id <= 51))
3275 Filter: (ctid = '(1,1)'::tid)
3276 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3277 Index Cond: ((id >= 50) AND (id <= 51))
3278 Filter: (ctid = '(1,1)'::tid)
3279 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3280 Index Cond: ((id >= 50) AND (id <= 51))
3281 Filter: (ctid = '(1,1)'::tid)
3285 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3294 -------------------------------------------------------
3296 -> Bitmap Heap Scan on p1
3297 Recheck Cond: ((id >= 50) AND (id <= 51))
3298 Filter: (ctid = '(1,1)'::tid)
3299 -> Bitmap Index Scan on p1_pkey
3300 Index Cond: ((id >= 50) AND (id <= 51))
3301 -> Bitmap Heap Scan on p1_c1
3302 Recheck Cond: ((id >= 50) AND (id <= 51))
3303 Filter: (ctid = '(1,1)'::tid)
3304 -> Bitmap Index Scan on p1_c1_pkey
3305 Index Cond: ((id >= 50) AND (id <= 51))
3306 -> Bitmap Heap Scan on p1_c1_c1
3307 Recheck Cond: ((id >= 50) AND (id <= 51))
3308 Filter: (ctid = '(1,1)'::tid)
3309 -> Bitmap Index Scan on p1_c1_c1_pkey
3310 Index Cond: ((id >= 50) AND (id <= 51))
3311 -> Bitmap Heap Scan on p1_c1_c2
3312 Recheck Cond: ((id >= 50) AND (id <= 51))
3313 Filter: (ctid = '(1,1)'::tid)
3314 -> Bitmap Index Scan on p1_c1_c2_pkey
3315 Index Cond: ((id >= 50) AND (id <= 51))
3319 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3328 ---------------------------------------------
3331 TID Cond: (ctid = '(1,1)'::tid)
3332 Filter: ((id >= 50) AND (id <= 51))
3333 -> Tid Scan on p1_c1
3334 TID Cond: (ctid = '(1,1)'::tid)
3335 Filter: ((id >= 50) AND (id <= 51))
3336 -> Tid Scan on p1_c1_c1
3337 TID Cond: (ctid = '(1,1)'::tid)
3338 Filter: ((id >= 50) AND (id <= 51))
3339 -> Tid Scan on p1_c1_c2
3340 TID Cond: (ctid = '(1,1)'::tid)
3341 Filter: ((id >= 50) AND (id <= 51))
3344 SET constraint_exclusion TO off;
3345 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3347 -----------------------------------------------------------------------------------
3349 Merge Cond: (p1.id = t1.id)
3354 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3355 -> Seq Scan on p1_c1
3356 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3357 -> Seq Scan on p1_c2
3358 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3359 -> Seq Scan on p1_c3
3360 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3361 -> Seq Scan on p1_c4
3362 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3363 -> Seq Scan on p1_c1_c1
3364 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3365 -> Seq Scan on p1_c1_c2
3366 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3367 -> Seq Scan on p1_c3_c1
3368 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3369 -> Seq Scan on p1_c3_c2
3370 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3371 -> Index Scan using t1_pkey on t1
3372 Index Cond: (id < 10)
3375 SET constraint_exclusion TO on;
3376 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3378 -----------------------------------------------------------------------------------
3380 Merge Cond: (p1.id = t1.id)
3385 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3386 -> Seq Scan on p1_c1
3387 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3388 -> Seq Scan on p1_c1_c1
3389 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3390 -> Seq Scan on p1_c1_c2
3391 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3392 -> Index Scan using t1_pkey on t1
3393 Index Cond: (id < 10)
3396 SET constraint_exclusion TO off;
3398 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3407 -----------------------------------------------------------------------------------
3409 Merge Cond: (p1.id = t1.id)
3414 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3415 -> Seq Scan on p1_c1
3416 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3417 -> Seq Scan on p1_c2
3418 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3419 -> Seq Scan on p1_c3
3420 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3421 -> Seq Scan on p1_c4
3422 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3423 -> Seq Scan on p1_c1_c1
3424 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3425 -> Seq Scan on p1_c1_c2
3426 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3427 -> Seq Scan on p1_c3_c1
3428 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3429 -> Seq Scan on p1_c3_c2
3430 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3431 -> Index Scan using t1_pkey on t1
3432 Index Cond: (id < 10)
3436 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3445 --------------------------------------------------------
3447 Merge Cond: (p1.id = t1.id)
3450 -> Index Scan using p1_pkey on p1
3451 Index Cond: ((id >= 50) AND (id <= 51))
3452 Filter: (ctid = '(1,1)'::tid)
3453 -> Index Scan using p1_c1_pkey on p1_c1
3454 Index Cond: ((id >= 50) AND (id <= 51))
3455 Filter: (ctid = '(1,1)'::tid)
3456 -> Index Scan using p1_c2_pkey on p1_c2
3457 Index Cond: ((id >= 50) AND (id <= 51))
3458 Filter: (ctid = '(1,1)'::tid)
3459 -> Index Scan using p1_c3_pkey on p1_c3
3460 Index Cond: ((id >= 50) AND (id <= 51))
3461 Filter: (ctid = '(1,1)'::tid)
3462 -> Index Scan using p1_c4_pkey on p1_c4
3463 Index Cond: ((id >= 50) AND (id <= 51))
3464 Filter: (ctid = '(1,1)'::tid)
3465 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3466 Index Cond: ((id >= 50) AND (id <= 51))
3467 Filter: (ctid = '(1,1)'::tid)
3468 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3469 Index Cond: ((id >= 50) AND (id <= 51))
3470 Filter: (ctid = '(1,1)'::tid)
3471 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
3472 Index Cond: ((id >= 50) AND (id <= 51))
3473 Filter: (ctid = '(1,1)'::tid)
3474 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
3475 Index Cond: ((id >= 50) AND (id <= 51))
3476 Filter: (ctid = '(1,1)'::tid)
3477 -> Index Scan using t1_pkey on t1
3478 Index Cond: (id < 10)
3482 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3491 -------------------------------------------------------------------
3493 Merge Cond: (p1.id = t1.id)
3497 -> Bitmap Heap Scan on p1
3498 Recheck Cond: ((id >= 50) AND (id <= 51))
3499 Filter: (ctid = '(1,1)'::tid)
3500 -> Bitmap Index Scan on p1_pkey
3501 Index Cond: ((id >= 50) AND (id <= 51))
3502 -> Bitmap Heap Scan on p1_c1
3503 Recheck Cond: ((id >= 50) AND (id <= 51))
3504 Filter: (ctid = '(1,1)'::tid)
3505 -> Bitmap Index Scan on p1_c1_pkey
3506 Index Cond: ((id >= 50) AND (id <= 51))
3507 -> Bitmap Heap Scan on p1_c2
3508 Recheck Cond: ((id >= 50) AND (id <= 51))
3509 Filter: (ctid = '(1,1)'::tid)
3510 -> Bitmap Index Scan on p1_c2_pkey
3511 Index Cond: ((id >= 50) AND (id <= 51))
3512 -> Bitmap Heap Scan on p1_c3
3513 Recheck Cond: ((id >= 50) AND (id <= 51))
3514 Filter: (ctid = '(1,1)'::tid)
3515 -> Bitmap Index Scan on p1_c3_pkey
3516 Index Cond: ((id >= 50) AND (id <= 51))
3517 -> Bitmap Heap Scan on p1_c4
3518 Recheck Cond: ((id >= 50) AND (id <= 51))
3519 Filter: (ctid = '(1,1)'::tid)
3520 -> Bitmap Index Scan on p1_c4_pkey
3521 Index Cond: ((id >= 50) AND (id <= 51))
3522 -> Bitmap Heap Scan on p1_c1_c1
3523 Recheck Cond: ((id >= 50) AND (id <= 51))
3524 Filter: (ctid = '(1,1)'::tid)
3525 -> Bitmap Index Scan on p1_c1_c1_pkey
3526 Index Cond: ((id >= 50) AND (id <= 51))
3527 -> Bitmap Heap Scan on p1_c1_c2
3528 Recheck Cond: ((id >= 50) AND (id <= 51))
3529 Filter: (ctid = '(1,1)'::tid)
3530 -> Bitmap Index Scan on p1_c1_c2_pkey
3531 Index Cond: ((id >= 50) AND (id <= 51))
3532 -> Bitmap Heap Scan on p1_c3_c1
3533 Recheck Cond: ((id >= 50) AND (id <= 51))
3534 Filter: (ctid = '(1,1)'::tid)
3535 -> Bitmap Index Scan on p1_c3_c1_pkey
3536 Index Cond: ((id >= 50) AND (id <= 51))
3537 -> Bitmap Heap Scan on p1_c3_c2
3538 Recheck Cond: ((id >= 50) AND (id <= 51))
3539 Filter: (ctid = '(1,1)'::tid)
3540 -> Bitmap Index Scan on p1_c3_c2_pkey
3541 Index Cond: ((id >= 50) AND (id <= 51))
3542 -> Index Scan using t1_pkey on t1
3543 Index Cond: (id < 10)
3547 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3556 ---------------------------------------------------------
3558 Merge Cond: (p1.id = t1.id)
3563 TID Cond: (ctid = '(1,1)'::tid)
3564 Filter: ((id >= 50) AND (id <= 51))
3565 -> Tid Scan on p1_c1
3566 TID Cond: (ctid = '(1,1)'::tid)
3567 Filter: ((id >= 50) AND (id <= 51))
3568 -> Tid Scan on p1_c2
3569 TID Cond: (ctid = '(1,1)'::tid)
3570 Filter: ((id >= 50) AND (id <= 51))
3571 -> Tid Scan on p1_c3
3572 TID Cond: (ctid = '(1,1)'::tid)
3573 Filter: ((id >= 50) AND (id <= 51))
3574 -> Tid Scan on p1_c4
3575 TID Cond: (ctid = '(1,1)'::tid)
3576 Filter: ((id >= 50) AND (id <= 51))
3577 -> Tid Scan on p1_c1_c1
3578 TID Cond: (ctid = '(1,1)'::tid)
3579 Filter: ((id >= 50) AND (id <= 51))
3580 -> Tid Scan on p1_c1_c2
3581 TID Cond: (ctid = '(1,1)'::tid)
3582 Filter: ((id >= 50) AND (id <= 51))
3583 -> Tid Scan on p1_c3_c1
3584 TID Cond: (ctid = '(1,1)'::tid)
3585 Filter: ((id >= 50) AND (id <= 51))
3586 -> Tid Scan on p1_c3_c2
3587 TID Cond: (ctid = '(1,1)'::tid)
3588 Filter: ((id >= 50) AND (id <= 51))
3589 -> Index Scan using t1_pkey on t1
3590 Index Cond: (id < 10)
3593 /*+NestLoop(p1 t1)*/
3594 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3603 -----------------------------------------------------------------------------
3605 Join Filter: (p1.id = t1.id)
3608 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3609 -> Seq Scan on p1_c1
3610 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3611 -> Seq Scan on p1_c2
3612 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3613 -> Seq Scan on p1_c3
3614 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3615 -> Seq Scan on p1_c4
3616 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3617 -> Seq Scan on p1_c1_c1
3618 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3619 -> Seq Scan on p1_c1_c2
3620 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3621 -> Seq Scan on p1_c3_c1
3622 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3623 -> Seq Scan on p1_c3_c2
3624 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3626 -> Index Scan using t1_pkey on t1
3627 Index Cond: (id < 10)
3630 /*+MergeJoin(p1 t1)*/
3631 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3640 -----------------------------------------------------------------------------------
3642 Merge Cond: (p1.id = t1.id)
3647 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3648 -> Seq Scan on p1_c1
3649 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3650 -> Seq Scan on p1_c2
3651 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3652 -> Seq Scan on p1_c3
3653 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3654 -> Seq Scan on p1_c4
3655 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3656 -> Seq Scan on p1_c1_c1
3657 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3658 -> Seq Scan on p1_c1_c2
3659 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3660 -> Seq Scan on p1_c3_c1
3661 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3662 -> Seq Scan on p1_c3_c2
3663 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3664 -> Index Scan using t1_pkey on t1
3665 Index Cond: (id < 10)
3668 /*+HashJoin(p1 t1)*/
3669 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3678 -----------------------------------------------------------------------------
3680 Hash Cond: (p1.id = t1.id)
3683 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3684 -> Seq Scan on p1_c1
3685 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3686 -> Seq Scan on p1_c2
3687 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3688 -> Seq Scan on p1_c3
3689 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3690 -> Seq Scan on p1_c4
3691 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3692 -> Seq Scan on p1_c1_c1
3693 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3694 -> Seq Scan on p1_c1_c2
3695 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3696 -> Seq Scan on p1_c3_c1
3697 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3698 -> Seq Scan on p1_c3_c2
3699 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3701 -> Index Scan using t1_pkey on t1
3702 Index Cond: (id < 10)
3705 SET constraint_exclusion TO on;
3707 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3716 -----------------------------------------------------------------------------------
3718 Merge Cond: (p1.id = t1.id)
3723 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3724 -> Seq Scan on p1_c1
3725 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3726 -> Seq Scan on p1_c1_c1
3727 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3728 -> Seq Scan on p1_c1_c2
3729 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3730 -> Index Scan using t1_pkey on t1
3731 Index Cond: (id < 10)
3735 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3744 --------------------------------------------------------
3746 Merge Cond: (p1.id = t1.id)
3749 -> Index Scan using p1_pkey on p1
3750 Index Cond: ((id >= 50) AND (id <= 51))
3751 Filter: (ctid = '(1,1)'::tid)
3752 -> Index Scan using p1_c1_pkey on p1_c1
3753 Index Cond: ((id >= 50) AND (id <= 51))
3754 Filter: (ctid = '(1,1)'::tid)
3755 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3756 Index Cond: ((id >= 50) AND (id <= 51))
3757 Filter: (ctid = '(1,1)'::tid)
3758 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3759 Index Cond: ((id >= 50) AND (id <= 51))
3760 Filter: (ctid = '(1,1)'::tid)
3761 -> Index Scan using t1_pkey on t1
3762 Index Cond: (id < 10)
3766 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3775 -------------------------------------------------------------------
3777 Merge Cond: (p1.id = t1.id)
3781 -> Bitmap Heap Scan on p1
3782 Recheck Cond: ((id >= 50) AND (id <= 51))
3783 Filter: (ctid = '(1,1)'::tid)
3784 -> Bitmap Index Scan on p1_pkey
3785 Index Cond: ((id >= 50) AND (id <= 51))
3786 -> Bitmap Heap Scan on p1_c1
3787 Recheck Cond: ((id >= 50) AND (id <= 51))
3788 Filter: (ctid = '(1,1)'::tid)
3789 -> Bitmap Index Scan on p1_c1_pkey
3790 Index Cond: ((id >= 50) AND (id <= 51))
3791 -> Bitmap Heap Scan on p1_c1_c1
3792 Recheck Cond: ((id >= 50) AND (id <= 51))
3793 Filter: (ctid = '(1,1)'::tid)
3794 -> Bitmap Index Scan on p1_c1_c1_pkey
3795 Index Cond: ((id >= 50) AND (id <= 51))
3796 -> Bitmap Heap Scan on p1_c1_c2
3797 Recheck Cond: ((id >= 50) AND (id <= 51))
3798 Filter: (ctid = '(1,1)'::tid)
3799 -> Bitmap Index Scan on p1_c1_c2_pkey
3800 Index Cond: ((id >= 50) AND (id <= 51))
3801 -> Index Scan using t1_pkey on t1
3802 Index Cond: (id < 10)
3806 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3815 ---------------------------------------------------------
3817 Merge Cond: (p1.id = t1.id)
3822 TID Cond: (ctid = '(1,1)'::tid)
3823 Filter: ((id >= 50) AND (id <= 51))
3824 -> Tid Scan on p1_c1
3825 TID Cond: (ctid = '(1,1)'::tid)
3826 Filter: ((id >= 50) AND (id <= 51))
3827 -> Tid Scan on p1_c1_c1
3828 TID Cond: (ctid = '(1,1)'::tid)
3829 Filter: ((id >= 50) AND (id <= 51))
3830 -> Tid Scan on p1_c1_c2
3831 TID Cond: (ctid = '(1,1)'::tid)
3832 Filter: ((id >= 50) AND (id <= 51))
3833 -> Index Scan using t1_pkey on t1
3834 Index Cond: (id < 10)
3837 /*+NestLoop(p1 t1)*/
3838 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3847 -----------------------------------------------------------------------------------
3849 Join Filter: (p1.id = t1.id)
3850 -> Index Scan using t1_pkey on t1
3851 Index Cond: (id < 10)
3855 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3856 -> Seq Scan on p1_c1
3857 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3858 -> Seq Scan on p1_c1_c1
3859 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3860 -> Seq Scan on p1_c1_c2
3861 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3864 /*+MergeJoin(p1 t1)*/
3865 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3874 -----------------------------------------------------------------------------------
3876 Merge Cond: (p1.id = t1.id)
3881 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3882 -> Seq Scan on p1_c1
3883 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3884 -> Seq Scan on p1_c1_c1
3885 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3886 -> Seq Scan on p1_c1_c2
3887 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3888 -> Index Scan using t1_pkey on t1
3889 Index Cond: (id < 10)
3892 /*+HashJoin(p1 t1)*/
3893 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3902 -----------------------------------------------------------------------------------
3904 Hash Cond: (t1.id = p1.id)
3905 -> Index Scan using t1_pkey on t1
3906 Index Cond: (id < 10)
3910 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3911 -> Seq Scan on p1_c1
3912 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3913 -> Seq Scan on p1_c1_c1
3914 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3915 -> Seq Scan on p1_c1_c2
3916 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3919 SET constraint_exclusion TO off;
3920 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3922 -----------------------------------------------------------------
3924 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3927 SET constraint_exclusion TO on;
3928 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3930 -----------------------------------------------------------------
3932 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3935 SET constraint_exclusion TO off;
3937 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3946 -----------------------------------------------------------------
3948 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3952 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3961 -------------------------------------------
3962 Index Scan using p1_pkey on p1
3963 Index Cond: ((id >= 50) AND (id <= 51))
3964 Filter: (ctid = '(1,1)'::tid)
3968 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3977 -------------------------------------------------
3978 Bitmap Heap Scan on p1
3979 Recheck Cond: ((id >= 50) AND (id <= 51))
3980 Filter: (ctid = '(1,1)'::tid)
3981 -> Bitmap Index Scan on p1_pkey
3982 Index Cond: ((id >= 50) AND (id <= 51))
3986 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3995 ---------------------------------------
3997 TID Cond: (ctid = '(1,1)'::tid)
3998 Filter: ((id >= 50) AND (id <= 51))
4001 /*+NestLoop(p1 t1)*/
4002 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4011 -----------------------------------------------------------------------
4013 Join Filter: (p1.id = t1.id)
4015 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4016 -> Index Scan using t1_pkey on t1
4017 Index Cond: (id < 10)
4020 /*+MergeJoin(p1 t1)*/
4021 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;
4030 -----------------------------------------------------------------------------
4032 Merge Cond: (p1.id = t1.id)
4036 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4037 -> Index Scan using t1_pkey on t1
4038 Index Cond: (id < 10)
4041 /*+HashJoin(p1 t1)*/
4042 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;
4051 -----------------------------------------------------------------------------
4053 Hash Cond: (t1.id = p1.id)
4054 -> Index Scan using t1_pkey on t1
4055 Index Cond: (id < 10)
4058 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4061 SET constraint_exclusion TO on;
4063 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4072 -----------------------------------------------------------------
4074 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4078 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4087 -------------------------------------------
4088 Index Scan using p1_pkey on p1
4089 Index Cond: ((id >= 50) AND (id <= 51))
4090 Filter: (ctid = '(1,1)'::tid)
4094 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4103 -------------------------------------------------
4104 Bitmap Heap Scan on p1
4105 Recheck Cond: ((id >= 50) AND (id <= 51))
4106 Filter: (ctid = '(1,1)'::tid)
4107 -> Bitmap Index Scan on p1_pkey
4108 Index Cond: ((id >= 50) AND (id <= 51))
4112 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4121 ---------------------------------------
4123 TID Cond: (ctid = '(1,1)'::tid)
4124 Filter: ((id >= 50) AND (id <= 51))
4127 /*+NestLoop(p1 t1)*/
4128 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;
4137 -----------------------------------------------------------------------
4139 Join Filter: (p1.id = t1.id)
4141 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4142 -> Index Scan using t1_pkey on t1
4143 Index Cond: (id < 10)
4146 /*+MergeJoin(p1 t1)*/
4147 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;
4156 -----------------------------------------------------------------------------
4158 Merge Cond: (p1.id = t1.id)
4162 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4163 -> Index Scan using t1_pkey on t1
4164 Index Cond: (id < 10)
4167 /*+HashJoin(p1 t1)*/
4168 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;
4177 -----------------------------------------------------------------------------
4179 Hash Cond: (t1.id = p1.id)
4180 -> Index Scan using t1_pkey on t1
4181 Index Cond: (id < 10)
4184 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4187 SET constraint_exclusion TO off;
4188 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;
4190 -----------------------------------------------------------------------
4192 Join Filter: (p1.id = t1.id)
4194 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4195 -> Index Scan using t1_pkey on t1
4196 Index Cond: (id < 10)
4199 SET constraint_exclusion TO on;
4200 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;
4202 -----------------------------------------------------------------------
4204 Join Filter: (p1.id = t1.id)
4206 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4207 -> Index Scan using t1_pkey on t1
4208 Index Cond: (id < 10)
4211 SET constraint_exclusion TO off;
4213 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;
4222 -----------------------------------------------------------------------
4224 Join Filter: (p1.id = t1.id)
4226 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4227 -> Index Scan using t1_pkey on t1
4228 Index Cond: (id < 10)
4232 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;
4241 -------------------------------------------------
4243 Merge Cond: (p1.id = t1.id)
4244 -> Index Scan using p1_pkey on p1
4245 Index Cond: ((id >= 50) AND (id <= 51))
4246 Filter: (ctid = '(1,1)'::tid)
4247 -> Index Scan using t1_pkey on t1
4248 Index Cond: (id < 10)
4252 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;
4261 -------------------------------------------------------
4263 Join Filter: (p1.id = t1.id)
4264 -> Bitmap Heap Scan on p1
4265 Recheck Cond: ((id >= 50) AND (id <= 51))
4266 Filter: (ctid = '(1,1)'::tid)
4267 -> Bitmap Index Scan on p1_pkey
4268 Index Cond: ((id >= 50) AND (id <= 51))
4269 -> Index Scan using t1_pkey on t1
4270 Index Cond: (id < 10)
4274 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;
4283 ---------------------------------------------
4285 Join Filter: (p1.id = t1.id)
4287 TID Cond: (ctid = '(1,1)'::tid)
4288 Filter: ((id >= 50) AND (id <= 51))
4289 -> Index Scan using t1_pkey on t1
4290 Index Cond: (id < 10)
4293 SET constraint_exclusion TO on;
4295 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;
4304 -----------------------------------------------------------------------
4306 Join Filter: (p1.id = t1.id)
4308 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4309 -> Index Scan using t1_pkey on t1
4310 Index Cond: (id < 10)
4314 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4323 -------------------------------------------------
4325 Merge Cond: (p1.id = t1.id)
4326 -> Index Scan using p1_pkey on p1
4327 Index Cond: ((id >= 50) AND (id <= 51))
4328 Filter: (ctid = '(1,1)'::tid)
4329 -> Index Scan using t1_pkey on t1
4330 Index Cond: (id < 10)
4334 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;
4343 -------------------------------------------------------
4345 Join Filter: (p1.id = t1.id)
4346 -> Bitmap Heap Scan on p1
4347 Recheck Cond: ((id >= 50) AND (id <= 51))
4348 Filter: (ctid = '(1,1)'::tid)
4349 -> Bitmap Index Scan on p1_pkey
4350 Index Cond: ((id >= 50) AND (id <= 51))
4351 -> Index Scan using t1_pkey on t1
4352 Index Cond: (id < 10)
4356 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;
4365 ---------------------------------------------
4367 Join Filter: (p1.id = t1.id)
4369 TID Cond: (ctid = '(1,1)'::tid)
4370 Filter: ((id >= 50) AND (id <= 51))
4371 -> Index Scan using t1_pkey on t1
4372 Index Cond: (id < 10)
4376 /*+SeqScan("""t1 ) ")IndexScan("t 2 """)HashJoin("""t1 ) "T3"t 2 """)Leading("""t1 ) "T3"t 2 """)Set(application_name"a a a"" a A")*/
4377 EXPLAIN (COSTS false) SELECT * FROM t1 """t1 ) ", t2 "t 2 """, t3 "T3" WHERE """t1 ) ".id = "t 2 """.id AND """t1 ) ".id = "T3".id;
4382 HashJoin("""t1 ) " T3 "t 2 """)
4383 Leading("""t1 ) " T3 "t 2 """)
4384 Set(application_name "a a a"" a A")
4390 ---------------------------------------------------------
4392 Hash Cond: ("t 2 """.id = """t1 ) ".id)
4393 -> Index Scan using t2_pkey on t2 "t 2 """
4396 Hash Cond: ("""t1 ) ".id = "T3".id)
4397 -> Seq Scan on t1 """t1 ) "
4399 -> Seq Scan on t3 "T3"
4402 -- duplicate hint test
4403 /*+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)*/
4404 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
4405 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)"
4406 DETAIL: Conflict scan method hint.
4407 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)"
4408 DETAIL: Conflict scan method hint.
4409 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)"
4410 DETAIL: Conflict scan method hint.
4411 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)"
4412 DETAIL: Conflict scan method hint.
4413 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)"
4414 DETAIL: Conflict scan method hint.
4415 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)"
4416 DETAIL: Conflict scan method hint.
4417 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)"
4418 DETAIL: Conflict join method hint.
4419 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)"
4420 DETAIL: Conflict join method hint.
4421 INFO: pg_hint_plan: hint syntax error at or near "Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4422 DETAIL: Conflict set hint.
4423 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)"
4424 DETAIL: Conflict leading hint.
4431 Set(enable_mergejoin on)
4432 Set(enable_seqscan on)
4444 Set(enable_seqscan off)
4448 -----------------------------------------------
4450 Merge Cond: (t1.id = t2.id)
4454 TID Cond: (ctid = '(1,1)'::tid)
4458 TID Cond: (ctid = '(1,1)'::tid)
4461 -- sub query Leading hint test
4462 SET from_collapse_limit TO 100;
4463 SET geqo_threshold TO 100;
4464 EXPLAIN (COSTS false)
4466 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
4469 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
4470 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4471 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
4472 ) 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 = (
4473 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
4476 ------------------------------------------------------------------------------
4481 Merge Cond: (t1_5.id = t3_5.id)
4483 Merge Cond: (t1_5.id = t2_5.id)
4484 -> Index Only Scan using t1_pkey on t1 t1_5
4485 -> Index Only Scan using t2_pkey on t2 t2_5
4488 -> Seq Scan on t3 t3_5
4489 InitPlan 2 (returns $1)
4492 Merge Cond: (t1_2.id = t3_2.id)
4494 Merge Cond: (t1_2.id = t2_2.id)
4495 -> Index Only Scan using t1_pkey on t1 t1_2
4496 -> Index Only Scan using t2_pkey on t2 t2_2
4499 -> Seq Scan on t3 t3_2
4500 InitPlan 3 (returns $2)
4503 Merge Cond: (t1_4.id = t3_4.id)
4505 Merge Cond: (t1_4.id = t2_4.id)
4506 -> Index Only Scan using t1_pkey on t1 t1_4
4507 -> Index Only Scan using t2_pkey on t2 t2_4
4510 -> Seq Scan on t3 t3_4
4516 -> Index Only Scan using t1_pkey on t1 t1_1
4517 Index Cond: (id = $2)
4518 -> Index Only Scan using t2_pkey on t2 t2_1
4519 Index Cond: (id = $2)
4520 -> Seq Scan on t3 t3_1
4522 -> Index Only Scan using t1_pkey on t1 t1_3
4523 Index Cond: (id = $2)
4524 -> Index Only Scan using t2_pkey on t2 t2_3
4525 Index Cond: (id = $2)
4526 -> Seq Scan on t3 t3_3
4532 /*+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)*/
4533 EXPLAIN (COSTS false)
4535 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
4538 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
4539 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4540 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
4541 ) 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 = (
4542 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
4548 MergeJoin(t1_3 t3_3)
4556 ------------------------------------------------------------------------------
4561 Merge Cond: (t1_5.id = t3_5.id)
4563 -> Index Only Scan using t2_pkey on t2 t2_5
4564 -> Index Only Scan using t1_pkey on t1 t1_5
4565 Index Cond: (id = t2_5.id)
4568 -> Seq Scan on t3 t3_5
4569 InitPlan 2 (returns $3)
4572 Merge Cond: (t1_2.id = t3_2.id)
4574 -> Index Only Scan using t2_pkey on t2 t2_2
4575 -> Index Only Scan using t1_pkey on t1 t1_2
4576 Index Cond: (id = t2_2.id)
4579 -> Seq Scan on t3 t3_2
4580 InitPlan 3 (returns $5)
4583 Merge Cond: (t1_4.id = t3_4.id)
4585 -> Index Only Scan using t2_pkey on t2 t2_4
4586 -> Index Only Scan using t1_pkey on t1 t1_4
4587 Index Cond: (id = t2_4.id)
4590 -> Seq Scan on t3 t3_4
4596 -> Index Only Scan using t1_pkey on t1 t1_1
4597 Index Cond: (id = $5)
4598 -> Index Only Scan using t2_pkey on t2 t2_1
4599 Index Cond: (id = $5)
4600 -> Seq Scan on t3 t3_1
4602 -> Index Only Scan using t1_pkey on t1 t1_3
4603 Index Cond: (id = $5)
4604 -> Index Only Scan using t2_pkey on t2 t2_3
4605 Index Cond: (id = $5)
4606 -> Seq Scan on t3 t3_3
4612 /*+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)*/
4613 EXPLAIN (COSTS false)
4615 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
4618 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
4619 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4620 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
4621 ) 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 = (
4622 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
4628 MergeJoin(t1_3 t3_3)
4632 Leading(a t1_1 t1_2 t1_4 t1_5)
4637 ------------------------------------------------------------------------------
4642 Merge Cond: (t1_5.id = t3_5.id)
4644 -> Index Only Scan using t2_pkey on t2 t2_5
4645 -> Index Only Scan using t1_pkey on t1 t1_5
4646 Index Cond: (id = t2_5.id)
4649 -> Seq Scan on t3 t3_5
4650 InitPlan 2 (returns $3)
4653 Merge Cond: (t1_2.id = t3_2.id)
4655 -> Index Only Scan using t2_pkey on t2 t2_2
4656 -> Index Only Scan using t1_pkey on t1 t1_2
4657 Index Cond: (id = t2_2.id)
4660 -> Seq Scan on t3 t3_2
4661 InitPlan 3 (returns $5)
4664 Merge Cond: (t1_4.id = t3_4.id)
4666 -> Index Only Scan using t2_pkey on t2 t2_4
4667 -> Index Only Scan using t1_pkey on t1 t1_4
4668 Index Cond: (id = t2_4.id)
4671 -> Seq Scan on t3 t3_4
4677 -> Index Only Scan using t1_pkey on t1 t1_1
4678 Index Cond: (id = $5)
4679 -> Index Only Scan using t2_pkey on t2 t2_1
4680 Index Cond: (id = $5)
4681 -> Seq Scan on t3 t3_1
4683 -> Index Only Scan using t1_pkey on t1 t1_3
4684 Index Cond: (id = $5)
4685 -> Index Only Scan using t2_pkey on t2 t2_3
4686 Index Cond: (id = $5)
4687 -> Seq Scan on t3 t3_3
4693 /*+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)*/
4694 EXPLAIN (COSTS false)
4696 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
4699 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
4700 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4701 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
4702 ) 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 = (
4703 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
4709 MergeJoin(t1_3 t3_3)
4713 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)
4718 ------------------------------------------------------------------------------
4723 Merge Cond: (t1_5.id = t3_5.id)
4725 -> Index Only Scan using t2_pkey on t2 t2_5
4726 -> Index Only Scan using t1_pkey on t1 t1_5
4727 Index Cond: (id = t2_5.id)
4730 -> Seq Scan on t3 t3_5
4731 InitPlan 2 (returns $3)
4734 Merge Cond: (t1_2.id = t3_2.id)
4736 -> Index Only Scan using t2_pkey on t2 t2_2
4737 -> Index Only Scan using t1_pkey on t1 t1_2
4738 Index Cond: (id = t2_2.id)
4741 -> Seq Scan on t3 t3_2
4742 InitPlan 3 (returns $5)
4745 Merge Cond: (t1_4.id = t3_4.id)
4747 -> Index Only Scan using t2_pkey on t2 t2_4
4748 -> Index Only Scan using t1_pkey on t1 t1_4
4749 Index Cond: (id = t2_4.id)
4752 -> Seq Scan on t3 t3_4
4758 -> Index Only Scan using t1_pkey on t1 t1_1
4759 Index Cond: (id = $5)
4760 -> Index Only Scan using t2_pkey on t2 t2_1
4761 Index Cond: (id = $5)
4762 -> Seq Scan on t3 t3_1
4764 -> Index Only Scan using t1_pkey on t1 t1_3
4765 Index Cond: (id = $5)
4766 -> Index Only Scan using t2_pkey on t2 t2_3
4767 Index Cond: (id = $5)
4768 -> Seq Scan on t3 t3_3
4774 /*+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)*/
4775 EXPLAIN (COSTS false)
4777 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
4780 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
4781 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4782 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
4783 ) 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 = (
4784 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
4788 Leading(t3_5 t2_5 t1_5)
4789 Leading(t3_2 t2_2 t1_2)
4790 Leading(t3_4 t2_4 t1_4)
4791 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
4795 MergeJoin(t1_3 t3_3)
4802 ------------------------------------------------------------------------
4807 Merge Cond: (t2_5.id = t1_5.id)
4809 Merge Cond: (t2_5.id = t3_5.id)
4810 -> Index Only Scan using t2_pkey on t2 t2_5
4813 -> Seq Scan on t3 t3_5
4814 -> Index Only Scan using t1_pkey on t1 t1_5
4815 InitPlan 2 (returns $1)
4818 Merge Cond: (t2_2.id = t1_2.id)
4820 Merge Cond: (t2_2.id = t3_2.id)
4821 -> Index Only Scan using t2_pkey on t2 t2_2
4824 -> Seq Scan on t3 t3_2
4825 -> Index Only Scan using t1_pkey on t1 t1_2
4826 InitPlan 3 (returns $2)
4829 Merge Cond: (t2_4.id = t1_4.id)
4831 Merge Cond: (t2_4.id = t3_4.id)
4832 -> Index Only Scan using t2_pkey on t2 t2_4
4835 -> Seq Scan on t3 t3_4
4836 -> Index Only Scan using t1_pkey on t1 t1_4
4842 -> Seq Scan on t3 t3_3
4846 -> Index Only Scan using t2_pkey on t2 t2_3
4847 Index Cond: (id = $2)
4848 -> Index Only Scan using t1_pkey on t1 t1_3
4849 Index Cond: (id = $2)
4850 -> Seq Scan on t3 t3_1
4852 -> Index Only Scan using t2_pkey on t2 t2_1
4853 Index Cond: (id = $2)
4854 -> Index Only Scan using t1_pkey on t1 t1_1
4855 Index Cond: (id = $2)
4858 SET from_collapse_limit TO 1;
4859 EXPLAIN (COSTS false)
4861 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
4864 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
4865 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4866 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
4867 ) 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 = (
4868 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
4871 --------------------------------------------------------------------
4876 Merge Cond: (t1_5.id = t3_5.id)
4878 Merge Cond: (t1_5.id = t2_5.id)
4879 -> Index Only Scan using t1_pkey on t1 t1_5
4880 -> Index Only Scan using t2_pkey on t2 t2_5
4883 -> Seq Scan on t3 t3_5
4884 InitPlan 2 (returns $1)
4887 Merge Cond: (t1_2.id = t3_2.id)
4889 Merge Cond: (t1_2.id = t2_2.id)
4890 -> Index Only Scan using t1_pkey on t1 t1_2
4891 -> Index Only Scan using t2_pkey on t2 t2_2
4894 -> Seq Scan on t3 t3_2
4895 InitPlan 3 (returns $2)
4898 Merge Cond: (t1_4.id = t3_4.id)
4900 Merge Cond: (t1_4.id = t2_4.id)
4901 -> Index Only Scan using t1_pkey on t1 t1_4
4902 -> Index Only Scan using t2_pkey on t2 t2_4
4905 -> Seq Scan on t3 t3_4
4909 -> Index Only Scan using t1_pkey on t1 t1_1
4910 Index Cond: (id = $2)
4911 -> Index Only Scan using t2_pkey on t2 t2_1
4912 Index Cond: (id = $2)
4913 -> Seq Scan on t3 t3_1
4917 -> Index Only Scan using t1_pkey on t1 t1_3
4918 Index Cond: (id = $2)
4919 -> Index Only Scan using t2_pkey on t2 t2_3
4920 Index Cond: (id = $2)
4921 -> Seq Scan on t3 t3_3
4927 /*+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)*/
4928 EXPLAIN (COSTS false)
4930 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
4933 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
4934 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4935 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
4936 ) 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 = (
4937 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
4943 MergeJoin(t1_3 t3_3)
4951 --------------------------------------------------------------------
4956 Merge Cond: (t1_5.id = t3_5.id)
4958 -> Index Only Scan using t2_pkey on t2 t2_5
4959 -> Index Only Scan using t1_pkey on t1 t1_5
4960 Index Cond: (id = t2_5.id)
4963 -> Seq Scan on t3 t3_5
4964 InitPlan 2 (returns $3)
4967 Merge Cond: (t1_2.id = t3_2.id)
4969 -> Index Only Scan using t2_pkey on t2 t2_2
4970 -> Index Only Scan using t1_pkey on t1 t1_2
4971 Index Cond: (id = t2_2.id)
4974 -> Seq Scan on t3 t3_2
4975 InitPlan 3 (returns $5)
4978 Merge Cond: (t1_4.id = t3_4.id)
4980 -> Index Only Scan using t2_pkey on t2 t2_4
4981 -> Index Only Scan using t1_pkey on t1 t1_4
4982 Index Cond: (id = t2_4.id)
4985 -> Seq Scan on t3 t3_4
4989 -> Index Only Scan using t1_pkey on t1 t1_1
4990 Index Cond: (id = $5)
4991 -> Index Only Scan using t2_pkey on t2 t2_1
4992 Index Cond: (id = $5)
4993 -> Seq Scan on t3 t3_1
4997 -> Index Only Scan using t1_pkey on t1 t1_3
4998 Index Cond: (id = $5)
4999 -> Index Only Scan using t2_pkey on t2 t2_3
5000 Index Cond: (id = $5)
5001 -> Seq Scan on t3 t3_3
5007 /*+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)*/
5008 EXPLAIN (COSTS false)
5010 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
5013 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
5014 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5015 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
5016 ) 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 = (
5017 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
5023 MergeJoin(t1_3 t3_3)
5027 Leading(a t1_1 t1_2 t1_4 t1_5)
5032 --------------------------------------------------------------------
5037 Merge Cond: (t1_5.id = t3_5.id)
5039 -> Index Only Scan using t2_pkey on t2 t2_5
5040 -> Index Only Scan using t1_pkey on t1 t1_5
5041 Index Cond: (id = t2_5.id)
5044 -> Seq Scan on t3 t3_5
5045 InitPlan 2 (returns $3)
5048 Merge Cond: (t1_2.id = t3_2.id)
5050 -> Index Only Scan using t2_pkey on t2 t2_2
5051 -> Index Only Scan using t1_pkey on t1 t1_2
5052 Index Cond: (id = t2_2.id)
5055 -> Seq Scan on t3 t3_2
5056 InitPlan 3 (returns $5)
5059 Merge Cond: (t1_4.id = t3_4.id)
5061 -> Index Only Scan using t2_pkey on t2 t2_4
5062 -> Index Only Scan using t1_pkey on t1 t1_4
5063 Index Cond: (id = t2_4.id)
5066 -> Seq Scan on t3 t3_4
5070 -> Index Only Scan using t1_pkey on t1 t1_1
5071 Index Cond: (id = $5)
5072 -> Index Only Scan using t2_pkey on t2 t2_1
5073 Index Cond: (id = $5)
5074 -> Seq Scan on t3 t3_1
5078 -> Index Only Scan using t1_pkey on t1 t1_3
5079 Index Cond: (id = $5)
5080 -> Index Only Scan using t2_pkey on t2 t2_3
5081 Index Cond: (id = $5)
5082 -> Seq Scan on t3 t3_3
5088 /*+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)*/
5089 EXPLAIN (COSTS false)
5091 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
5094 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
5095 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5096 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
5097 ) 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 = (
5098 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
5104 MergeJoin(t1_3 t3_3)
5108 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)
5113 --------------------------------------------------------------------
5118 Merge Cond: (t1_5.id = t3_5.id)
5120 -> Index Only Scan using t2_pkey on t2 t2_5
5121 -> Index Only Scan using t1_pkey on t1 t1_5
5122 Index Cond: (id = t2_5.id)
5125 -> Seq Scan on t3 t3_5
5126 InitPlan 2 (returns $3)
5129 Merge Cond: (t1_2.id = t3_2.id)
5131 -> Index Only Scan using t2_pkey on t2 t2_2
5132 -> Index Only Scan using t1_pkey on t1 t1_2
5133 Index Cond: (id = t2_2.id)
5136 -> Seq Scan on t3 t3_2
5137 InitPlan 3 (returns $5)
5140 Merge Cond: (t1_4.id = t3_4.id)
5142 -> Index Only Scan using t2_pkey on t2 t2_4
5143 -> Index Only Scan using t1_pkey on t1 t1_4
5144 Index Cond: (id = t2_4.id)
5147 -> Seq Scan on t3 t3_4
5151 -> Index Only Scan using t1_pkey on t1 t1_1
5152 Index Cond: (id = $5)
5153 -> Index Only Scan using t2_pkey on t2 t2_1
5154 Index Cond: (id = $5)
5155 -> Seq Scan on t3 t3_1
5159 -> Index Only Scan using t1_pkey on t1 t1_3
5160 Index Cond: (id = $5)
5161 -> Index Only Scan using t2_pkey on t2 t2_3
5162 Index Cond: (id = $5)
5163 -> Seq Scan on t3 t3_3
5169 /*+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)*/
5170 EXPLAIN (COSTS false)
5172 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
5175 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
5176 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5177 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
5178 ) 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 = (
5179 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
5183 MergeJoin(t1_3 t3_3)
5184 Leading(t3_5 t2_5 t1_5)
5185 Leading(t3_2 t2_2 t1_2)
5186 Leading(t3_4 t2_4 t1_4)
5187 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
5197 ------------------------------------------------------------------------------
5202 Merge Cond: (t2_5.id = t1_5.id)
5204 Merge Cond: (t2_5.id = t3_5.id)
5205 -> Index Only Scan using t2_pkey on t2 t2_5
5208 -> Seq Scan on t3 t3_5
5209 -> Index Only Scan using t1_pkey on t1 t1_5
5210 InitPlan 2 (returns $1)
5213 Merge Cond: (t2_2.id = t1_2.id)
5215 Merge Cond: (t2_2.id = t3_2.id)
5216 -> Index Only Scan using t2_pkey on t2 t2_2
5219 -> Seq Scan on t3 t3_2
5220 -> Index Only Scan using t1_pkey on t1 t1_2
5221 InitPlan 3 (returns $2)
5224 Merge Cond: (t2_4.id = t1_4.id)
5226 Merge Cond: (t2_4.id = t3_4.id)
5227 -> Index Only Scan using t2_pkey on t2 t2_4
5230 -> Seq Scan on t3 t3_4
5231 -> Index Only Scan using t1_pkey on t1 t1_4
5237 -> Index Only Scan using t1_pkey on t1 t1_3
5238 Index Cond: (id = $2)
5239 -> Index Only Scan using t2_pkey on t2 t2_3
5240 Index Cond: (id = $2)
5241 -> Seq Scan on t3 t3_3
5245 -> Seq Scan on t3 t3_1
5247 -> Index Only Scan using t2_pkey on t2 t2_1
5248 Index Cond: (id = $2)
5249 -> Index Only Scan using t1_pkey on t1 t1_1
5250 Index Cond: (id = $2)
5254 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5256 -------------------------------------------------
5258 Merge Cond: (t1.id = t2.id)
5260 Merge Cond: (t1.id = t1_1.id)
5261 -> Index Scan using t1_pkey on t1
5262 -> Index Scan using t1_pkey on t1 t1_1
5263 -> Index Scan using t2_pkey on t2
5266 /*+NestLoop(t1 t2)*/
5267 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5268 INFO: pg_hint_plan: hint syntax error at or near "NestLoop(t1 t2)"
5269 DETAIL: Relation name "t1" is ambiguous.
5278 -------------------------------------------------
5280 Merge Cond: (t1.id = t2.id)
5282 Merge Cond: (t1.id = t1_1.id)
5283 -> Index Scan using t1_pkey on t1
5284 -> Index Scan using t1_pkey on t1 t1_1
5285 -> Index Scan using t2_pkey on t2
5288 /*+Leading(t1 t2 t1)*/
5289 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5290 INFO: pg_hint_plan: hint syntax error at or near "Leading(t1 t2 t1)"
5291 DETAIL: Relation name "t1" is ambiguous.
5300 -------------------------------------------------
5302 Merge Cond: (t1.id = t2.id)
5304 Merge Cond: (t1.id = t1_1.id)
5305 -> Index Scan using t1_pkey on t1
5306 -> Index Scan using t1_pkey on t1 t1_1
5307 -> Index Scan using t2_pkey on t2
5310 -- identifier length test
5311 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5313 --------------------------------------------------------------------------------------------------------------
5315 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5317 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id)
5318 -> Index Scan using t1_pkey on t1 "123456789012345678901234567890123456789012345678901234567890123"
5319 -> Index Scan using t2_pkey on t2
5326 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5327 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5328 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5329 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5331 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5332 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5335 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5336 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5337 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5341 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5344 ----------------------------------------------------------------------------------------------------
5346 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5348 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5349 -> Index Scan using t2_pkey on t2
5351 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5352 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5359 Leading(1234567890123456789012345678901234567890123456789012345678901234 t2 t3)
5360 SeqScan(1234567890123456789012345678901234567890123456789012345678901234)
5361 MergeJoin(1234567890123456789012345678901234567890123456789012345678901234 t2)
5362 Set(1234567890123456789012345678901234567890123456789012345678901234 1)
5363 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5365 EXPLAIN (COSTS false) SELECT * FROM t1 "1234567890123456789012345678901234567890123456789012345678901234" JOIN t2 ON ("1234567890123456789012345678901234567890123456789012345678901234".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5366 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5367 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5368 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5369 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5370 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5371 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5372 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5375 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5376 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5377 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5378 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5382 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5385 ----------------------------------------------------------------------------------------------------
5387 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5389 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5390 -> Index Scan using t2_pkey on t2
5392 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5393 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5399 SET "123456789012345678901234567890123456789012345678901234567890123" TO 1;
5400 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5401 SET "1234567890123456789012345678901234567890123456789012345678901234" TO 1;
5402 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5403 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5404 SET cursor_tuple_fraction TO 1234567890123456789012345678901234567890123456789012345678901234;
5405 ERROR: 1.23457e+63 is outside the valid range for parameter "cursor_tuple_fraction" (0 .. 1)
5407 /*+ Set(enable_seqscan 100)Set(seq_page_cost on)*/
5408 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
5409 INFO: parameter "enable_seqscan" requires a Boolean value
5410 INFO: parameter "seq_page_cost" requires a numeric value
5416 Set(enable_seqscan 100)
5417 Set(seq_page_cost on)
5420 --------------------------------------
5422 Merge Cond: (t1.id = t2.id)
5423 -> Index Scan using t1_pkey on t1
5424 -> Index Scan using t2_pkey on t2
5427 -- debug log of candidate index to use IndexScan
5428 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5430 ----------------------------------------------------------------------------------------
5431 Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
5432 Index Cond: (id = 1)
5435 /*+IndexScan(t5 t5_id2)*/
5436 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5437 LOG: available indexes for IndexScan(t5): t5_id2
5440 IndexScan(t5 t5_id2)
5446 -------------------------------
5447 Index Scan using t5_id2 on t5
5448 Index Cond: (id = 1)
5451 /*+IndexScan(t5 no_exist)*/
5452 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5453 LOG: available indexes for IndexScan(t5):
5456 IndexScan(t5 no_exist)
5462 --------------------
5467 /*+IndexScan(t5 t5_id1 t5_id2)*/
5468 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5469 LOG: available indexes for IndexScan(t5): t5_id2 t5_id1
5472 IndexScan(t5 t5_id1 t5_id2)
5478 -------------------------------
5479 Index Scan using t5_id2 on t5
5480 Index Cond: (id = 1)
5483 /*+IndexScan(t5 no_exist t5_id2)*/
5484 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5485 LOG: available indexes for IndexScan(t5): t5_id2
5488 IndexScan(t5 no_exist t5_id2)
5494 -------------------------------
5495 Index Scan using t5_id2 on t5
5496 Index Cond: (id = 1)
5499 /*+IndexScan(t5 no_exist5 no_exist2)*/
5500 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5501 LOG: available indexes for IndexScan(t5):
5504 IndexScan(t5 no_exist5 no_exist2)
5510 --------------------
5516 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5518 --------------------------------------------------------
5520 Hash Cond: (t3.val = t2.val)
5524 Hash Cond: (t2.id = t1.id)
5527 -> Index Scan using t1_pkey on t1
5528 Index Cond: (id < 10)
5532 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5533 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1))"
5534 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5543 --------------------------------------------------------
5545 Hash Cond: (t3.val = t2.val)
5549 Hash Cond: (t2.id = t1.id)
5552 -> Index Scan using t1_pkey on t1
5553 Index Cond: (id < 10)
5556 /*+Leading((t1 t2))*/
5557 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5566 --------------------------------------------
5568 Join Filter: (t2.val = t3.val)
5570 Hash Cond: (t1.id = t2.id)
5571 -> Index Scan using t1_pkey on t1
5572 Index Cond: (id < 10)
5578 /*+Leading((t1 t2 t3))*/
5579 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5580 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1 t2 t3))"
5581 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5590 --------------------------------------------------------
5592 Hash Cond: (t3.val = t2.val)
5596 Hash Cond: (t2.id = t1.id)
5599 -> Index Scan using t1_pkey on t1
5600 Index Cond: (id < 10)
5603 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5605 --------------------------------------------
5607 Hash Cond: (t2.id = t1.id)
5610 -> Index Scan using t1_pkey on t1
5611 Index Cond: (id < 10)
5614 /*+Leading((t1 t2))*/
5615 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5624 --------------------------------------
5626 Hash Cond: (t1.id = t2.id)
5627 -> Index Scan using t1_pkey on t1
5628 Index Cond: (id < 10)
5633 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5635 --------------------------------------------------------
5637 Hash Cond: (t3.val = t2.val)
5641 Hash Cond: (t2.id = t1.id)
5644 -> Index Scan using t1_pkey on t1
5645 Index Cond: (id < 10)
5648 /*+Leading(((t1 t2) t3))*/
5649 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5652 Leading(((t1 t2) t3))
5658 --------------------------------------------
5660 Join Filter: (t2.val = t3.val)
5662 Hash Cond: (t1.id = t2.id)
5663 -> Index Scan using t1_pkey on t1
5664 Index Cond: (id < 10)
5670 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;
5672 --------------------------------------------------------
5675 Merge Cond: (t3.id = t4.id)
5677 Join Filter: (t1.val = t3.val)
5678 -> Index Scan using t3_pkey on t3
5680 -> Index Scan using t1_pkey on t1
5681 Index Cond: (id < 10)
5685 -> Index Scan using t2_pkey on t2
5686 Index Cond: (id = t1.id)
5689 /*+Leading((((t1 t2) t3) t4))*/
5690 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t3.id = t4.id AND t1.val = t3.val AND t1.id < 10;
5693 Leading((((t1 t2) t3) t4))
5699 --------------------------------------------------
5702 Join Filter: (t1.val = t3.val)
5704 Hash Cond: (t1.id = t2.id)
5705 -> Index Scan using t1_pkey on t1
5706 Index Cond: (id < 10)
5710 -> Index Scan using t4_pkey on t4
5711 Index Cond: (id = t3.id)
5714 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5716 --------------------------------------------------------
5718 Hash Cond: (t3.val = t2.val)
5722 Hash Cond: (t2.id = t1.id)
5725 -> Index Scan using t1_pkey on t1
5726 Index Cond: (id < 10)
5729 /*+Leading(((t1 t2) t3))*/
5730 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5733 Leading(((t1 t2) t3))
5739 --------------------------------------------
5741 Join Filter: (t2.val = t3.val)
5743 Hash Cond: (t1.id = t2.id)
5744 -> Index Scan using t1_pkey on t1
5745 Index Cond: (id < 10)
5751 /*+Leading((t1 (t2 t3)))*/
5752 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5755 Leading((t1 (t2 t3)))
5761 --------------------------------------------
5763 Hash Cond: (t1.id = t2.id)
5764 -> Index Scan using t1_pkey on t1
5765 Index Cond: (id < 10)
5768 Hash Cond: (t2.val = t3.val)
5774 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;
5776 --------------------------------------------------------
5779 Merge Cond: (t3.id = t4.id)
5781 Join Filter: (t1.val = t3.val)
5782 -> Index Scan using t3_pkey on t3
5784 -> Index Scan using t1_pkey on t1
5785 Index Cond: (id < 10)
5789 -> Index Scan using t2_pkey on t2
5790 Index Cond: (id = t1.id)
5793 /*+Leading(((t1 t2) (t3 t4)))*/
5794 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t3.id = t4.id AND t1.val = t3.val AND t1.id < 10;
5797 Leading(((t1 t2) (t3 t4)))
5803 --------------------------------------------
5805 Join Filter: (t1.val = t3.val)
5807 Hash Cond: (t1.id = t2.id)
5808 -> Index Scan using t1_pkey on t1
5809 Index Cond: (id < 10)
5813 Merge Cond: (t3.id = t4.id)
5814 -> Index Scan using t3_pkey on t3
5820 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);
5822 --------------------------------------------------------------------
5824 Hash Cond: (t2.val = t3.val)
5825 InitPlan 1 (returns $1)
5830 -> Index Scan using t2_val on t2 t2_2
5831 Index Cond: (val > 100)
5832 -> Index Only Scan using t1_pkey on t1 t1_2
5833 Index Cond: (id = t2_2.id)
5835 Merge Cond: (t1.id = t2.id)
5836 -> Index Scan using t1_pkey on t1
5837 Index Cond: (id < $1)
5838 -> Index Scan using t2_pkey on t2
5843 /*+Leading(((t1 t2) t3)) Leading(((t3 t1) t2))*/
5844 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);
5845 INFO: pg_hint_plan: hint syntax error at or near "Leading(((t1 t2) t3)) Leading(((t3 t1) t2))"
5846 DETAIL: Conflict leading hint.
5849 Leading(((t3 t1) t2))
5852 Leading(((t1 t2) t3))
5856 --------------------------------------------------------------------
5858 Hash Cond: (t1.id = t2.id)
5859 InitPlan 1 (returns $1)
5864 -> Index Scan using t2_val on t2 t2_2
5865 Index Cond: (val > 100)
5866 -> Index Only Scan using t1_pkey on t1 t1_2
5867 Index Cond: (id = t2_2.id)
5869 Hash Cond: (t3.val = t1.val)
5872 -> Index Scan using t1_pkey on t1
5873 Index Cond: (id < $1)
5878 /*+Leading(((t1 t2) t3)) Leading((t1_2 t2_2))*/
5879 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);
5882 Leading(((t1 t2) t3))
5883 Leading((t1_2 t2_2))
5889 --------------------------------------------------------------
5891 Hash Cond: (t2.val = t3.val)
5892 InitPlan 1 (returns $0)
5895 Merge Cond: (t1_2.id = t2_2.id)
5896 -> Index Only Scan using t1_pkey on t1 t1_2
5899 -> Index Scan using t2_val on t2 t2_2
5900 Index Cond: (val > 100)
5902 Merge Cond: (t1.id = t2.id)
5903 -> Index Scan using t1_pkey on t1
5904 Index Cond: (id < $0)
5905 -> Index Scan using t2_pkey on t2
5910 /*+Leading(((((t1 t2) t3) t1_2) t2_2))*/
5911 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);
5915 Leading(((((t1 t2) t3) t1_2) t2_2))
5920 --------------------------------------------------------------------
5922 Hash Cond: (t2.val = t3.val)
5923 InitPlan 1 (returns $1)
5928 -> Index Scan using t2_val on t2 t2_2
5929 Index Cond: (val > 100)
5930 -> Index Only Scan using t1_pkey on t1 t1_2
5931 Index Cond: (id = t2_2.id)
5933 Merge Cond: (t1.id = t2.id)
5934 -> Index Scan using t1_pkey on t1
5935 Index Cond: (id < $1)
5936 -> Index Scan using t2_pkey on t2
5941 -- Specified outer/inner leading hint and join method hint at the same time
5942 /*+Leading(((t1 t2) t3))*/
5943 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5946 Leading(((t1 t2) t3))
5952 --------------------------------------------
5954 Join Filter: (t2.val = t3.val)
5956 Hash Cond: (t1.id = t2.id)
5957 -> Index Scan using t1_pkey on t1
5958 Index Cond: (id < 10)
5964 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2)*/
5965 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5969 Leading(((t1 t2) t3))
5975 --------------------------------------------
5977 Join Filter: (t2.val = t3.val)
5979 Merge Cond: (t1.id = t2.id)
5980 -> Index Scan using t1_pkey on t1
5981 Index Cond: (id < 10)
5982 -> Index Scan using t2_pkey on t2
5986 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3)*/
5987 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5991 Leading(((t1 t2) t3))
5997 --------------------------------------------------
5999 Merge Cond: (t2.val = t3.val)
6003 Hash Cond: (t1.id = t2.id)
6004 -> Index Scan using t1_pkey on t1
6005 Index Cond: (id < 10)
6013 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t3)*/
6014 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6017 Leading(((t1 t2) t3))
6024 --------------------------------------------
6026 Join Filter: (t2.val = t3.val)
6028 Hash Cond: (t1.id = t2.id)
6029 -> Index Scan using t1_pkey on t1
6030 Index Cond: (id < 10)
6036 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;
6038 --------------------------------------------------------
6041 Merge Cond: (t3.id = t4.id)
6043 Join Filter: (t1.val = t3.val)
6044 -> Index Scan using t3_pkey on t3
6046 -> Index Scan using t1_pkey on t1
6047 Index Cond: (id < 10)
6051 -> Index Scan using t2_pkey on t2
6052 Index Cond: (id = t1.id)
6055 /*+Leading(((t1 t2) t3)) MergeJoin(t3 t4)*/
6056 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t3.id = t4.id AND t1.val = t3.val AND t1.id < 10;
6059 Leading(((t1 t2) t3))
6066 --------------------------------------------------
6068 Join Filter: (t3.id = t4.id)
6070 Join Filter: (t1.val = t3.val)
6072 Hash Cond: (t1.id = t2.id)
6073 -> Index Scan using t1_pkey on t1
6074 Index Cond: (id < 10)
6081 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3 t4)*/
6082 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;
6085 MergeJoin(t1 t2 t3 t4)
6086 Leading(((t1 t2) t3))
6092 --------------------------------------------------------
6094 Merge Cond: (t3.id = t4.id)
6098 Join Filter: (t1.val = t3.val)
6100 Hash Cond: (t1.id = t2.id)
6101 -> Index Scan using t1_pkey on t1
6102 Index Cond: (id < 10)
6111 /*+ Leading ( ( t1 ( t2 t3 ) ) ) */
6112 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6115 Leading((t1 (t2 t3)))
6121 --------------------------------------------
6123 Hash Cond: (t1.id = t2.id)
6124 -> Index Scan using t1_pkey on t1
6125 Index Cond: (id < 10)
6128 Hash Cond: (t2.val = t3.val)
6134 /*+Leading((t1(t2 t3)))*/
6135 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6138 Leading((t1 (t2 t3)))
6144 --------------------------------------------
6146 Hash Cond: (t1.id = t2.id)
6147 -> Index Scan using t1_pkey on t1
6148 Index Cond: (id < 10)
6151 Hash Cond: (t2.val = t3.val)
6157 /*+Leading(("t1(t2" "t3)"))*/
6158 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6162 Leading(("t1(t2" "t3)"))
6167 --------------------------------------------------------
6169 Hash Cond: (t3.val = t2.val)
6173 Hash Cond: (t2.id = t1.id)
6176 -> Index Scan using t1_pkey on t1
6177 Index Cond: (id < 10)
6180 /*+ Leading ( ( ( t1 t2 ) t3 ) ) */
6181 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6184 Leading(((t1 t2) t3))
6190 --------------------------------------------
6192 Join Filter: (t2.val = t3.val)
6194 Hash Cond: (t1.id = t2.id)
6195 -> Index Scan using t1_pkey on t1
6196 Index Cond: (id < 10)
6202 /*+Leading(((t1 t2)t3))*/
6203 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6206 Leading(((t1 t2) t3))
6212 --------------------------------------------
6214 Join Filter: (t2.val = t3.val)
6216 Hash Cond: (t1.id = t2.id)
6217 -> Index Scan using t1_pkey on t1
6218 Index Cond: (id < 10)
6224 /*+Leading(("(t1" "t2)t3"))*/
6225 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6229 Leading(("(t1" "t2)t3"))
6234 --------------------------------------------------------
6236 Hash Cond: (t3.val = t2.val)
6240 Hash Cond: (t2.id = t1.id)
6243 -> Index Scan using t1_pkey on t1
6244 Index Cond: (id < 10)
6247 /*+Leading((t1(t2(t3(t4 t5)))))*/
6248 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;
6251 Leading((t1 (t2 (t3 (t4 t5)))))
6257 ----------------------------------------------------------------------------------------------------------------------------------
6259 Merge Cond: (t1.id = t2.id)
6260 -> Index Scan using t1_pkey on t1
6263 Merge Cond: (t2.id = t3.id)
6264 -> Index Scan using t2_pkey on t2
6267 Merge Cond: (t3.id = t4.id)
6268 -> Index Scan using t3_pkey on t3
6271 Merge Cond: (t4.id = t5.id)
6272 -> Index Scan using t4_pkey on t4
6273 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6276 /*+Leading((t5(t4(t3(t2 t1)))))*/
6277 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;
6280 Leading((t5 (t4 (t3 (t2 t1)))))
6286 --------------------------------------------------------------------------
6288 Hash Cond: (t5.id = t1.id)
6292 Merge Cond: (t4.id = t1.id)
6298 Merge Cond: (t3.id = t1.id)
6304 Merge Cond: (t2.id = t1.id)
6305 -> Index Scan using t2_pkey on t2
6306 -> Index Scan using t1_pkey on t1
6309 /*+Leading(((((t1 t2)t3)t4)t5))*/
6310 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;
6313 Leading(((((t1 t2) t3) t4) t5))
6319 ----------------------------------------------------------------------------------------------
6322 Merge Cond: (t1.id = t4.id)
6324 Merge Cond: (t1.id = t3.id)
6326 Merge Cond: (t1.id = t2.id)
6327 -> Index Scan using t1_pkey on t1
6328 -> Index Scan using t2_pkey on t2
6335 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6336 Index Cond: (id = t1.id)
6339 /*+Leading(((((t5 t4)t3)t2)t1))*/
6340 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;
6343 Leading(((((t5 t4) t3) t2) t1))
6349 ----------------------------------------------------------------------------------------------------------------
6351 Join Filter: (t2.id = t1.id)
6353 Join Filter: (t3.id = t2.id)
6355 Merge Cond: (t4.id = t3.id)
6357 Merge Cond: (t5.id = t4.id)
6358 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6362 -> Index Scan using t3_pkey on t3
6363 -> Index Scan using t2_pkey on t2
6364 Index Cond: (id = t5.id)
6365 -> Index Scan using t1_pkey on t1
6366 Index Cond: (id = t5.id)
6369 /*+Leading(((t1 t2)(t3(t4 t5))))*/
6370 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;
6373 Leading(((t1 t2) (t3 (t4 t5))))
6379 ----------------------------------------------------------------------------------------------------------------------
6381 Merge Cond: (t1.id = t3.id)
6383 Merge Cond: (t1.id = t2.id)
6384 -> Index Scan using t1_pkey on t1
6385 -> Index Scan using t2_pkey on t2
6388 Merge Cond: (t3.id = t4.id)
6389 -> Index Scan using t3_pkey on t3
6392 Merge Cond: (t4.id = t5.id)
6393 -> Index Scan using t4_pkey on t4
6394 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6397 /*+Leading(((t5 t4)(t3(t2 t1))))*/
6398 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;
6401 Leading(((t5 t4) (t3 (t2 t1))))
6407 ----------------------------------------------------------------------------------------------------
6409 Merge Cond: (t4.id = t1.id)
6411 Merge Cond: (t5.id = t4.id)
6412 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6418 Merge Cond: (t3.id = t1.id)
6424 Merge Cond: (t2.id = t1.id)
6425 -> Index Scan using t2_pkey on t2
6426 -> Index Scan using t1_pkey on t1
6429 /*+Leading((((t1 t2)t3)(t4 t5)))*/
6430 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;
6433 Leading((((t1 t2) t3) (t4 t5)))
6439 ----------------------------------------------------------------------------------------------------------
6441 Merge Cond: (t1.id = t4.id)
6443 Merge Cond: (t1.id = t3.id)
6445 Merge Cond: (t1.id = t2.id)
6446 -> Index Scan using t1_pkey on t1
6447 -> Index Scan using t2_pkey on t2
6453 Merge Cond: (t4.id = t5.id)
6454 -> Index Scan using t4_pkey on t4
6455 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6458 /*+Leading((((t5 t4)t3)(t2 t1)))*/
6459 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;
6462 Leading((((t5 t4) t3) (t2 t1)))
6468 ----------------------------------------------------------------------------------------------------------
6470 Merge Cond: (t3.id = t1.id)
6472 Merge Cond: (t4.id = t3.id)
6474 Merge Cond: (t5.id = t4.id)
6475 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6479 -> Index Scan using t3_pkey on t3
6482 Merge Cond: (t2.id = t1.id)
6483 -> Index Scan using t2_pkey on t2
6484 -> Index Scan using t1_pkey on t1
6487 -- inherite table test to specify the index's name
6488 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6490 -----------------------------------------------------------------------
6493 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6494 -> Seq Scan on p2_c1
6495 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6496 -> Seq Scan on p2_c1_c1
6497 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6498 -> Seq Scan on p2_c1_c2
6499 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6502 /*+IndexScan(p2 p2_pkey)*/
6503 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6504 LOG: available indexes for IndexScan(p2): p2_pkey
6505 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6506 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6507 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6510 IndexScan(p2 p2_pkey)
6516 --------------------------------------------------
6518 -> Index Scan using p2_pkey on p2
6519 Index Cond: ((id >= 50) AND (id <= 51))
6520 Filter: (ctid = '(1,1)'::tid)
6521 -> Index Scan using p2_c1_pkey on p2_c1
6522 Index Cond: ((id >= 50) AND (id <= 51))
6523 Filter: (ctid = '(1,1)'::tid)
6524 -> Index Scan using p2_c1_c1_pkey 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_pkey on p2_c1_c2
6528 Index Cond: ((id >= 50) AND (id <= 51))
6529 Filter: (ctid = '(1,1)'::tid)
6532 /*+IndexScan(p2 p2_id_val_idx)*/
6533 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6534 LOG: available indexes for IndexScan(p2): p2_id_val_idx
6535 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6536 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
6537 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
6540 IndexScan(p2 p2_id_val_idx)
6546 --------------------------------------------------------
6548 -> Index Scan using p2_id_val_idx on p2
6549 Index Cond: ((id >= 50) AND (id <= 51))
6550 Filter: (ctid = '(1,1)'::tid)
6551 -> Index Scan using p2_c1_id_val_idx on p2_c1
6552 Index Cond: ((id >= 50) AND (id <= 51))
6553 Filter: (ctid = '(1,1)'::tid)
6554 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
6555 Index Cond: ((id >= 50) AND (id <= 51))
6556 Filter: (ctid = '(1,1)'::tid)
6557 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
6558 Index Cond: ((id >= 50) AND (id <= 51))
6559 Filter: (ctid = '(1,1)'::tid)
6562 /*+IndexScan(p2 p2_val_id_idx)*/
6563 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6564 LOG: available indexes for IndexScan(p2): p2_val_id_idx
6565 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_id_idx
6566 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_id_idx
6567 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_id_idx
6570 IndexScan(p2 p2_val_id_idx)
6576 --------------------------------------------------------
6578 -> Index Scan using p2_val_id_idx on p2
6579 Index Cond: ((id >= 50) AND (id <= 51))
6580 Filter: (ctid = '(1,1)'::tid)
6581 -> Index Scan using p2_c1_val_id_idx on p2_c1
6582 Index Cond: ((id >= 50) AND (id <= 51))
6583 Filter: (ctid = '(1,1)'::tid)
6584 -> Index Scan using p2_c1_c1_val_id_idx on p2_c1_c1
6585 Index Cond: ((id >= 50) AND (id <= 51))
6586 Filter: (ctid = '(1,1)'::tid)
6587 -> Index Scan using p2_c1_c2_val_id_idx on p2_c1_c2
6588 Index Cond: ((id >= 50) AND (id <= 51))
6589 Filter: (ctid = '(1,1)'::tid)
6592 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6594 -----------------------------------------------------------------------------------------
6597 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6598 -> Seq Scan on p2_c1
6599 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6600 -> Seq Scan on p2_c2
6601 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6602 -> Seq Scan on p2_c3
6603 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6604 -> Seq Scan on p2_c4
6605 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6606 -> Seq Scan on p2_c1_c1
6607 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6608 -> Seq Scan on p2_c1_c2
6609 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6610 -> Seq Scan on p2_c3_c1
6611 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6612 -> Seq Scan on p2_c3_c2
6613 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6616 -- Inhibit parallel exection to avoid interfaring the hint
6617 set max_parallel_workers_per_gather to 0;
6618 /*+ IndexScan(p2 p2_val)*/
6619 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6620 LOG: available indexes for IndexScan(p2):
6621 LOG: available indexes for IndexScan(p2_c1):
6622 LOG: available indexes for IndexScan(p2_c2):
6623 LOG: available indexes for IndexScan(p2_c3):
6624 LOG: available indexes for IndexScan(p2_c4):
6625 LOG: available indexes for IndexScan(p2_c1_c1):
6626 LOG: available indexes for IndexScan(p2_c1_c2):
6627 LOG: available indexes for IndexScan(p2_c3_c1):
6628 LOG: available indexes for IndexScan(p2_c3_c2):
6631 IndexScan(p2 p2_val)
6637 -----------------------------------------------------------------------------------------
6640 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6641 -> Seq Scan on p2_c1
6642 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6643 -> Seq Scan on p2_c2
6644 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6645 -> Seq Scan on p2_c3
6646 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6647 -> Seq Scan on p2_c4
6648 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6649 -> Seq Scan on p2_c1_c1
6650 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6651 -> Seq Scan on p2_c1_c2
6652 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6653 -> Seq Scan on p2_c3_c1
6654 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6655 -> Seq Scan on p2_c3_c2
6656 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6659 /*+IndexScan(p2 p2_pkey)*/
6660 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6661 LOG: available indexes for IndexScan(p2): p2_pkey
6662 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6663 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6664 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6667 IndexScan(p2 p2_pkey)
6673 --------------------------------------------------
6675 -> Index Scan using p2_pkey on p2
6676 Index Cond: ((id >= 50) AND (id <= 51))
6677 Filter: (ctid = '(1,1)'::tid)
6678 -> Index Scan using p2_c1_pkey on p2_c1
6679 Index Cond: ((id >= 50) AND (id <= 51))
6680 Filter: (ctid = '(1,1)'::tid)
6681 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6682 Index Cond: ((id >= 50) AND (id <= 51))
6683 Filter: (ctid = '(1,1)'::tid)
6684 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6685 Index Cond: ((id >= 50) AND (id <= 51))
6686 Filter: (ctid = '(1,1)'::tid)
6689 /*+IndexScan(p2 p2_id2_val)*/
6690 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6691 LOG: available indexes for IndexScan(p2): p2_id2_val
6692 LOG: available indexes for IndexScan(p2_c1): p2_c1_id2_val
6693 LOG: available indexes for IndexScan(p2_c1_c1):
6694 LOG: available indexes for IndexScan(p2_c1_c2):
6697 IndexScan(p2 p2_id2_val)
6703 -----------------------------------------------------------------------
6705 -> Index Scan using p2_id2_val on p2
6706 Index Cond: ((id >= 50) AND (id <= 51))
6707 Filter: (ctid = '(1,1)'::tid)
6708 -> Index Scan using p2_c1_id2_val on p2_c1
6709 Index Cond: ((id >= 50) AND (id <= 51))
6710 Filter: (ctid = '(1,1)'::tid)
6711 -> Seq Scan on p2_c1_c1
6712 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6713 -> Seq Scan on p2_c1_c2
6714 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6717 /*+IndexScan(p2 p2_val2_id)*/
6718 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6719 LOG: available indexes for IndexScan(p2): p2_val2_id
6720 LOG: available indexes for IndexScan(p2_c1):
6721 LOG: available indexes for IndexScan(p2_c1_c1):
6722 LOG: available indexes for IndexScan(p2_c1_c2):
6725 IndexScan(p2 p2_val2_id)
6731 -----------------------------------------------------------------------
6733 -> Index Scan using p2_val2_id on p2
6734 Index Cond: ((id >= 50) AND (id <= 51))
6735 Filter: (ctid = '(1,1)'::tid)
6736 -> Seq Scan on p2_c1
6737 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6738 -> Seq Scan on p2_c1_c1
6739 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6740 -> Seq Scan on p2_c1_c2
6741 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6744 /*+IndexScan(p2 p2_pkey)*/
6745 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6746 LOG: available indexes for IndexScan(p2): p2_pkey
6747 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6748 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6749 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6752 IndexScan(p2 p2_pkey)
6758 --------------------------------------------------
6760 -> Index Scan using p2_pkey on p2
6761 Index Cond: ((id >= 50) AND (id <= 51))
6762 Filter: (ctid = '(1,1)'::tid)
6763 -> Index Scan using p2_c1_pkey on p2_c1
6764 Index Cond: ((id >= 50) AND (id <= 51))
6765 Filter: (ctid = '(1,1)'::tid)
6766 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6767 Index Cond: ((id >= 50) AND (id <= 51))
6768 Filter: (ctid = '(1,1)'::tid)
6769 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6770 Index Cond: ((id >= 50) AND (id <= 51))
6771 Filter: (ctid = '(1,1)'::tid)
6774 /*+IndexScan(p2 p2_c1_id_val_idx)*/
6775 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6776 LOG: available indexes for IndexScan(p2):
6777 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6778 LOG: available indexes for IndexScan(p2_c1_c1):
6779 LOG: available indexes for IndexScan(p2_c1_c2):
6782 IndexScan(p2 p2_c1_id_val_idx)
6788 -----------------------------------------------------------------------
6791 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6792 -> Index Scan using p2_c1_id_val_idx on p2_c1
6793 Index Cond: ((id >= 50) AND (id <= 51))
6794 Filter: (ctid = '(1,1)'::tid)
6795 -> Seq Scan on p2_c1_c1
6796 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6797 -> Seq Scan on p2_c1_c2
6798 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6801 /*+IndexScan(p2 no_exist)*/
6802 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6803 LOG: available indexes for IndexScan(p2):
6804 LOG: available indexes for IndexScan(p2_c1):
6805 LOG: available indexes for IndexScan(p2_c1_c1):
6806 LOG: available indexes for IndexScan(p2_c1_c2):
6809 IndexScan(p2 no_exist)
6815 -----------------------------------------------------------------------
6818 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6819 -> Seq Scan on p2_c1
6820 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6821 -> Seq Scan on p2_c1_c1
6822 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6823 -> Seq Scan on p2_c1_c2
6824 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6827 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx)*/
6828 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6829 LOG: available indexes for IndexScan(p2): p2_pkey
6830 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6831 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6832 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6835 IndexScan(p2 p2_pkey p2_c1_id_val_idx)
6841 --------------------------------------------------
6843 -> Index Scan using p2_pkey on p2
6844 Index Cond: ((id >= 50) AND (id <= 51))
6845 Filter: (ctid = '(1,1)'::tid)
6846 -> Index Scan using p2_c1_id_val_idx on p2_c1
6847 Index Cond: ((id >= 50) AND (id <= 51))
6848 Filter: (ctid = '(1,1)'::tid)
6849 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6850 Index Cond: ((id >= 50) AND (id <= 51))
6851 Filter: (ctid = '(1,1)'::tid)
6852 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6853 Index Cond: ((id >= 50) AND (id <= 51))
6854 Filter: (ctid = '(1,1)'::tid)
6857 /*+IndexScan(p2 p2_pkey no_exist)*/
6858 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6859 LOG: available indexes for IndexScan(p2): p2_pkey
6860 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6861 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6862 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6865 IndexScan(p2 p2_pkey no_exist)
6871 --------------------------------------------------
6873 -> Index Scan using p2_pkey on p2
6874 Index Cond: ((id >= 50) AND (id <= 51))
6875 Filter: (ctid = '(1,1)'::tid)
6876 -> Index Scan using p2_c1_pkey on p2_c1
6877 Index Cond: ((id >= 50) AND (id <= 51))
6878 Filter: (ctid = '(1,1)'::tid)
6879 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6880 Index Cond: ((id >= 50) AND (id <= 51))
6881 Filter: (ctid = '(1,1)'::tid)
6882 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6883 Index Cond: ((id >= 50) AND (id <= 51))
6884 Filter: (ctid = '(1,1)'::tid)
6887 /*+IndexScan(p2 p2_c1_id_val_idx no_exist)*/
6888 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6889 LOG: available indexes for IndexScan(p2):
6890 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6891 LOG: available indexes for IndexScan(p2_c1_c1):
6892 LOG: available indexes for IndexScan(p2_c1_c2):
6895 IndexScan(p2 p2_c1_id_val_idx no_exist)
6901 -----------------------------------------------------------------------
6904 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6905 -> Index Scan using p2_c1_id_val_idx on p2_c1
6906 Index Cond: ((id >= 50) AND (id <= 51))
6907 Filter: (ctid = '(1,1)'::tid)
6908 -> Seq Scan on p2_c1_c1
6909 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6910 -> Seq Scan on p2_c1_c2
6911 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6914 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)*/
6915 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6916 LOG: available indexes for IndexScan(p2): p2_pkey
6917 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6918 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6919 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6922 IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)
6928 --------------------------------------------------
6930 -> Index Scan using p2_pkey on p2
6931 Index Cond: ((id >= 50) AND (id <= 51))
6932 Filter: (ctid = '(1,1)'::tid)
6933 -> Index Scan using p2_c1_id_val_idx on p2_c1
6934 Index Cond: ((id >= 50) AND (id <= 51))
6935 Filter: (ctid = '(1,1)'::tid)
6936 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6937 Index Cond: ((id >= 50) AND (id <= 51))
6938 Filter: (ctid = '(1,1)'::tid)
6939 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6940 Index Cond: ((id >= 50) AND (id <= 51))
6941 Filter: (ctid = '(1,1)'::tid)
6944 /*+IndexScan(p2 p2_val_idx)*/
6945 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6946 LOG: available indexes for IndexScan(p2): p2_val_idx
6947 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx
6948 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx
6949 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx
6950 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx
6951 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx
6952 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx
6953 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx
6954 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx
6957 IndexScan(p2 p2_val_idx)
6963 -------------------------------------------------------------------
6965 -> Index Scan using p2_val_idx on p2
6966 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6967 Filter: (ctid = '(1,1)'::tid)
6968 -> Index Scan using p2_c1_val_idx on p2_c1
6969 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6970 Filter: (ctid = '(1,1)'::tid)
6971 -> Index Scan using p2_c2_val_idx on p2_c2
6972 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6973 Filter: (ctid = '(1,1)'::tid)
6974 -> Index Scan using p2_c3_val_idx on p2_c3
6975 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6976 Filter: (ctid = '(1,1)'::tid)
6977 -> Index Scan using p2_c4_val_idx on p2_c4
6978 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6979 Filter: (ctid = '(1,1)'::tid)
6980 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
6981 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6982 Filter: (ctid = '(1,1)'::tid)
6983 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
6984 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6985 Filter: (ctid = '(1,1)'::tid)
6986 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
6987 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6988 Filter: (ctid = '(1,1)'::tid)
6989 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
6990 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6991 Filter: (ctid = '(1,1)'::tid)
6994 /*+IndexScan(p2 p2_expr)*/
6995 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6996 LOG: available indexes for IndexScan(p2): p2_expr
6997 LOG: available indexes for IndexScan(p2_c1): p2_c1_expr_idx
6998 LOG: available indexes for IndexScan(p2_c2): p2_c2_expr_idx
6999 LOG: available indexes for IndexScan(p2_c3): p2_c3_expr_idx
7000 LOG: available indexes for IndexScan(p2_c4): p2_c4_expr_idx
7001 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_expr_idx
7002 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_expr_idx
7003 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_expr_idx
7004 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_expr_idx
7007 IndexScan(p2 p2_expr)
7013 -----------------------------------------------------------------------------------------
7016 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7017 -> Seq Scan on p2_c1
7018 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7019 -> Seq Scan on p2_c2
7020 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7021 -> Seq Scan on p2_c3
7022 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7023 -> Seq Scan on p2_c4
7024 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7025 -> Seq Scan on p2_c1_c1
7026 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7027 -> Seq Scan on p2_c1_c2
7028 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7029 -> Seq Scan on p2_c3_c1
7030 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7031 -> Seq Scan on p2_c3_c2
7032 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7035 /*+IndexScan(p2 p2_val_idx6)*/
7036 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7037 LOG: available indexes for IndexScan(p2): p2_val_idx6
7038 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx6
7039 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx6
7040 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx6
7041 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx6
7042 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx6
7043 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx6
7044 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx6
7045 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx6
7048 IndexScan(p2 p2_val_idx6)
7054 -----------------------------------------------------------------------------------------
7057 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7058 -> Seq Scan on p2_c1
7059 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7060 -> Seq Scan on p2_c2
7061 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7062 -> Seq Scan on p2_c3
7063 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7064 -> Seq Scan on p2_c4
7065 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7066 -> Seq Scan on p2_c1_c1
7067 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7068 -> Seq Scan on p2_c1_c2
7069 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7070 -> Seq Scan on p2_c3_c1
7071 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7072 -> Seq Scan on p2_c3_c2
7073 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7076 /*+IndexScan(p2 p2_val_idx p2_val_idx6)*/
7077 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7078 LOG: available indexes for IndexScan(p2): p2_val_idx6 p2_val_idx
7079 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx6 p2_c1_val_idx
7080 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx6 p2_c2_val_idx
7081 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx6 p2_c3_val_idx
7082 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx6 p2_c4_val_idx
7083 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx6 p2_c1_c1_val_idx
7084 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx6 p2_c1_c2_val_idx
7085 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx6 p2_c3_c1_val_idx
7086 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx6 p2_c3_c2_val_idx
7089 IndexScan(p2 p2_val_idx p2_val_idx6)
7095 -------------------------------------------------------------------
7097 -> Index Scan using p2_val_idx on p2
7098 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7099 Filter: (ctid = '(1,1)'::tid)
7100 -> Index Scan using p2_c1_val_idx on p2_c1
7101 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7102 Filter: (ctid = '(1,1)'::tid)
7103 -> Index Scan using p2_c2_val_idx on p2_c2
7104 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7105 Filter: (ctid = '(1,1)'::tid)
7106 -> Index Scan using p2_c3_val_idx on p2_c3
7107 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7108 Filter: (ctid = '(1,1)'::tid)
7109 -> Index Scan using p2_c4_val_idx on p2_c4
7110 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7111 Filter: (ctid = '(1,1)'::tid)
7112 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
7113 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7114 Filter: (ctid = '(1,1)'::tid)
7115 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
7116 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7117 Filter: (ctid = '(1,1)'::tid)
7118 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
7119 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7120 Filter: (ctid = '(1,1)'::tid)
7121 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
7122 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7123 Filter: (ctid = '(1,1)'::tid)
7126 -- regular expression
7128 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7130 ---------------------------------------------------------------------------------------------
7131 Index Only Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
7132 Index Cond: (id = 1)
7135 /*+ IndexScanRegexp(t5 t5_[^i].*)*/
7136 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7137 LOG: available indexes for IndexScanRegexp(t5): t5_val t5_pkey
7140 IndexScanRegexp(t5 t5_[^i].*)
7146 --------------------------------
7147 Index Scan using t5_pkey on t5
7148 Index Cond: (id = 1)
7151 /*+ IndexScanRegexp(t5 t5_id[0-9].*)*/
7152 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7153 LOG: available indexes for IndexScanRegexp(t5): t5_id3 t5_id2 t5_id1
7156 IndexScanRegexp(t5 t5_id[0-9].*)
7162 -------------------------------
7163 Index Scan using t5_id3 on t5
7164 Index Cond: (id = 1)
7167 /*+ IndexScanRegexp(t5 t5[^_].*)*/
7168 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7169 LOG: available indexes for IndexScanRegexp(t5):
7172 IndexScanRegexp(t5 t5[^_].*)
7178 --------------------
7183 /*+ IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7184 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7185 LOG: available indexes for IndexScanRegexp(t5):
7188 IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7194 --------------------
7199 /*+ IndexScan(t5 t5_id[0-9].*)*/
7200 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7201 LOG: available indexes for IndexScan(t5):
7204 IndexScan(t5 t5_id[0-9].*)
7210 --------------------
7215 /*+ IndexOnlyScanRegexp(t5 t5_[^i].*)*/
7216 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7217 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_val t5_pkey
7220 IndexOnlyScanRegexp(t5 t5_[^i].*)
7226 -------------------------------------
7227 Index Only Scan using t5_pkey on t5
7228 Index Cond: (id = 1)
7231 /*+ IndexOnlyScanRegexp(t5 t5_id[0-9].*)*/
7232 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7233 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_id3 t5_id2 t5_id1
7236 IndexOnlyScanRegexp(t5 t5_id[0-9].*)
7242 ------------------------------------
7243 Index Only Scan using t5_id3 on t5
7244 Index Cond: (id = 1)
7247 /*+ IndexOnlyScanRegexp(t5 t5[^_].*)*/
7248 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7249 LOG: available indexes for IndexOnlyScanRegexp(t5):
7252 IndexOnlyScanRegexp(t5 t5[^_].*)
7258 --------------------
7263 /*+ IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7264 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7265 LOG: available indexes for IndexOnlyScanRegexp(t5):
7268 IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7274 --------------------
7279 /*+ IndexOnlyScan(t5 t5_id[0-9].*)*/
7280 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7281 LOG: available indexes for IndexOnlyScan(t5):
7284 IndexOnlyScan(t5 t5_id[0-9].*)
7290 --------------------
7295 /*+ BitmapScanRegexp(t5 t5_[^i].*)*/
7296 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7297 LOG: available indexes for BitmapScanRegexp(t5): t5_val t5_pkey
7300 BitmapScanRegexp(t5 t5_[^i].*)
7306 ------------------------------------
7307 Bitmap Heap Scan on t5
7308 Recheck Cond: (id = 1)
7309 -> Bitmap Index Scan on t5_pkey
7310 Index Cond: (id = 1)
7313 /*+ BitmapScanRegexp(t5 t5_id[0-9].*)*/
7314 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7315 LOG: available indexes for BitmapScanRegexp(t5): t5_id3 t5_id2 t5_id1
7318 BitmapScanRegexp(t5 t5_id[0-9].*)
7324 -----------------------------------
7325 Bitmap Heap Scan on t5
7326 Recheck Cond: (id = 1)
7327 -> Bitmap Index Scan on t5_id3
7328 Index Cond: (id = 1)
7331 /*+ BitmapScanRegexp(t5 t5[^_].*)*/
7332 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7333 LOG: available indexes for BitmapScanRegexp(t5):
7336 BitmapScanRegexp(t5 t5[^_].*)
7342 --------------------
7347 /*+ BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7348 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7349 LOG: available indexes for BitmapScanRegexp(t5):
7352 BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7358 --------------------
7363 /*+ BitmapScan(t5 t5_id[0-9].*)*/
7364 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7365 LOG: available indexes for BitmapScan(t5):
7368 BitmapScan(t5 t5_id[0-9].*)
7374 --------------------
7380 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7382 ----------------------------
7386 -> Seq Scan on p1_c1
7388 -> Seq Scan on p1_c2
7390 -> Seq Scan on p1_c3
7392 -> Seq Scan on p1_c4
7394 -> Seq Scan on p1_c1_c1
7396 -> Seq Scan on p1_c1_c2
7398 -> Seq Scan on p1_c3_c1
7400 -> Seq Scan on p1_c3_c2
7404 /*+ IndexScanRegexp(p1 p1_.*[^0-9]$)*/
7405 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7406 LOG: available indexes for IndexScanRegexp(p1): p1_pkey
7407 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_pkey
7408 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_pkey
7409 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_pkey
7410 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_pkey
7411 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7412 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7413 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7414 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7417 IndexScanRegexp(p1 p1_.*[^0-9]$)
7423 ----------------------------
7427 -> Seq Scan on p1_c1
7429 -> Seq Scan on p1_c2
7431 -> Seq Scan on p1_c3
7433 -> Seq Scan on p1_c4
7435 -> Seq Scan on p1_c1_c1
7437 -> Seq Scan on p1_c1_c2
7439 -> Seq Scan on p1_c3_c1
7441 -> Seq Scan on p1_c3_c2
7445 /*+ IndexScanRegexp(p1 p1_.*val2.*)*/
7446 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7447 LOG: available indexes for IndexScanRegexp(p1): p1_val2
7448 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_val2
7449 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_val2
7450 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_val2
7451 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_val2
7452 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_val2
7453 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_val2
7454 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_val2
7455 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_val2
7458 IndexScanRegexp(p1 p1_.*val2.*)
7464 --------------------------------------------------
7466 -> Index Scan using p1_val2 on p1
7467 Index Cond: (val = 1)
7468 -> Index Scan using p1_c1_val2 on p1_c1
7469 Index Cond: (val = 1)
7470 -> Index Scan using p1_c2_val2 on p1_c2
7471 Index Cond: (val = 1)
7472 -> Index Scan using p1_c3_val2 on p1_c3
7473 Index Cond: (val = 1)
7474 -> Index Scan using p1_c4_val2 on p1_c4
7475 Index Cond: (val = 1)
7476 -> Index Scan using p1_c1_c1_val2 on p1_c1_c1
7477 Index Cond: (val = 1)
7478 -> Index Scan using p1_c1_c2_val2 on p1_c1_c2
7479 Index Cond: (val = 1)
7480 -> Index Scan using p1_c3_c1_val2 on p1_c3_c1
7481 Index Cond: (val = 1)
7482 -> Index Scan using p1_c3_c2_val2 on p1_c3_c2
7483 Index Cond: (val = 1)
7486 /*+ IndexScanRegexp(p1 p1[^_].*)*/
7487 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7488 LOG: available indexes for IndexScanRegexp(p1):
7489 LOG: available indexes for IndexScanRegexp(p1_c1):
7490 LOG: available indexes for IndexScanRegexp(p1_c2):
7491 LOG: available indexes for IndexScanRegexp(p1_c3):
7492 LOG: available indexes for IndexScanRegexp(p1_c4):
7493 LOG: available indexes for IndexScanRegexp(p1_c1_c1):
7494 LOG: available indexes for IndexScanRegexp(p1_c1_c2):
7495 LOG: available indexes for IndexScanRegexp(p1_c3_c1):
7496 LOG: available indexes for IndexScanRegexp(p1_c3_c2):
7499 IndexScanRegexp(p1 p1[^_].*)
7505 ----------------------------
7509 -> Seq Scan on p1_c1
7511 -> Seq Scan on p1_c2
7513 -> Seq Scan on p1_c3
7515 -> Seq Scan on p1_c4
7517 -> Seq Scan on p1_c1_c1
7519 -> Seq Scan on p1_c1_c2
7521 -> Seq Scan on p1_c3_c1
7523 -> Seq Scan on p1_c3_c2
7527 /*+ IndexScan(p1 p1_.*val2.*)*/
7528 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7529 LOG: available indexes for IndexScan(p1):
7530 LOG: available indexes for IndexScan(p1_c1):
7531 LOG: available indexes for IndexScan(p1_c2):
7532 LOG: available indexes for IndexScan(p1_c3):
7533 LOG: available indexes for IndexScan(p1_c4):
7534 LOG: available indexes for IndexScan(p1_c1_c1):
7535 LOG: available indexes for IndexScan(p1_c1_c2):
7536 LOG: available indexes for IndexScan(p1_c3_c1):
7537 LOG: available indexes for IndexScan(p1_c3_c2):
7540 IndexScan(p1 p1_.*val2.*)
7546 ----------------------------
7550 -> Seq Scan on p1_c1
7552 -> Seq Scan on p1_c2
7554 -> Seq Scan on p1_c3
7556 -> Seq Scan on p1_c4
7558 -> Seq Scan on p1_c1_c1
7560 -> Seq Scan on p1_c1_c2
7562 -> Seq Scan on p1_c3_c1
7564 -> Seq Scan on p1_c3_c2
7568 /*+ IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)*/
7569 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7570 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_pkey
7571 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_pkey
7572 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_pkey
7573 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_pkey
7574 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_pkey
7575 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7576 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7577 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7578 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7581 IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)
7587 ----------------------------
7591 -> Seq Scan on p1_c1
7593 -> Seq Scan on p1_c2
7595 -> Seq Scan on p1_c3
7597 -> Seq Scan on p1_c4
7599 -> Seq Scan on p1_c1_c1
7601 -> Seq Scan on p1_c1_c2
7603 -> Seq Scan on p1_c3_c1
7605 -> Seq Scan on p1_c3_c2
7609 /*+ IndexOnlyScanRegexp(p1 p1_.*val2.*)*/
7610 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7611 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_val2
7612 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_val2
7613 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_val2
7614 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_val2
7615 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_val2
7616 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_val2
7617 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_val2
7618 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_val2
7619 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_val2
7622 IndexOnlyScanRegexp(p1 p1_.*val2.*)
7628 -------------------------------------------------------
7630 -> Index Only Scan using p1_val2 on p1
7631 Index Cond: (val = 1)
7632 -> Index Only Scan using p1_c1_val2 on p1_c1
7633 Index Cond: (val = 1)
7634 -> Index Only Scan using p1_c2_val2 on p1_c2
7635 Index Cond: (val = 1)
7636 -> Index Only Scan using p1_c3_val2 on p1_c3
7637 Index Cond: (val = 1)
7638 -> Index Only Scan using p1_c4_val2 on p1_c4
7639 Index Cond: (val = 1)
7640 -> Index Only Scan using p1_c1_c1_val2 on p1_c1_c1
7641 Index Cond: (val = 1)
7642 -> Index Only Scan using p1_c1_c2_val2 on p1_c1_c2
7643 Index Cond: (val = 1)
7644 -> Index Only Scan using p1_c3_c1_val2 on p1_c3_c1
7645 Index Cond: (val = 1)
7646 -> Index Only Scan using p1_c3_c2_val2 on p1_c3_c2
7647 Index Cond: (val = 1)
7650 /*+ IndexOnlyScanRegexp(p1 p1[^_].*)*/
7651 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7652 LOG: available indexes for IndexOnlyScanRegexp(p1):
7653 LOG: available indexes for IndexOnlyScanRegexp(p1_c1):
7654 LOG: available indexes for IndexOnlyScanRegexp(p1_c2):
7655 LOG: available indexes for IndexOnlyScanRegexp(p1_c3):
7656 LOG: available indexes for IndexOnlyScanRegexp(p1_c4):
7657 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1):
7658 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2):
7659 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1):
7660 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2):
7663 IndexOnlyScanRegexp(p1 p1[^_].*)
7669 ----------------------------
7673 -> Seq Scan on p1_c1
7675 -> Seq Scan on p1_c2
7677 -> Seq Scan on p1_c3
7679 -> Seq Scan on p1_c4
7681 -> Seq Scan on p1_c1_c1
7683 -> Seq Scan on p1_c1_c2
7685 -> Seq Scan on p1_c3_c1
7687 -> Seq Scan on p1_c3_c2
7691 /*+ IndexOnlyScan(p1 p1_.*val2.*)*/
7692 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7693 LOG: available indexes for IndexOnlyScan(p1):
7694 LOG: available indexes for IndexOnlyScan(p1_c1):
7695 LOG: available indexes for IndexOnlyScan(p1_c2):
7696 LOG: available indexes for IndexOnlyScan(p1_c3):
7697 LOG: available indexes for IndexOnlyScan(p1_c4):
7698 LOG: available indexes for IndexOnlyScan(p1_c1_c1):
7699 LOG: available indexes for IndexOnlyScan(p1_c1_c2):
7700 LOG: available indexes for IndexOnlyScan(p1_c3_c1):
7701 LOG: available indexes for IndexOnlyScan(p1_c3_c2):
7704 IndexOnlyScan(p1 p1_.*val2.*)
7710 ----------------------------
7714 -> Seq Scan on p1_c1
7716 -> Seq Scan on p1_c2
7718 -> Seq Scan on p1_c3
7720 -> Seq Scan on p1_c4
7722 -> Seq Scan on p1_c1_c1
7724 -> Seq Scan on p1_c1_c2
7726 -> Seq Scan on p1_c3_c1
7728 -> Seq Scan on p1_c3_c2
7732 /*+ BitmapScanRegexp(p1 p1_.*[^0-9]$)*/
7733 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7734 LOG: available indexes for BitmapScanRegexp(p1): p1_pkey
7735 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_pkey
7736 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_pkey
7737 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_pkey
7738 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_pkey
7739 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7740 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7741 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7742 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7745 BitmapScanRegexp(p1 p1_.*[^0-9]$)
7751 ----------------------------
7755 -> Seq Scan on p1_c1
7757 -> Seq Scan on p1_c2
7759 -> Seq Scan on p1_c3
7761 -> Seq Scan on p1_c4
7763 -> Seq Scan on p1_c1_c1
7765 -> Seq Scan on p1_c1_c2
7767 -> Seq Scan on p1_c3_c1
7769 -> Seq Scan on p1_c3_c2
7773 /*+ BitmapScanRegexp(p1 p1_.*val2.*)*/
7774 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7775 LOG: available indexes for BitmapScanRegexp(p1): p1_val2
7776 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_val2
7777 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_val2
7778 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_val2
7779 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_val2
7780 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_val2
7781 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_val2
7782 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_val2
7783 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_val2
7786 BitmapScanRegexp(p1 p1_.*val2.*)
7792 ------------------------------------------------
7794 -> Bitmap Heap Scan on p1
7795 Recheck Cond: (val = 1)
7796 -> Bitmap Index Scan on p1_val2
7797 Index Cond: (val = 1)
7798 -> Bitmap Heap Scan on p1_c1
7799 Recheck Cond: (val = 1)
7800 -> Bitmap Index Scan on p1_c1_val2
7801 Index Cond: (val = 1)
7802 -> Bitmap Heap Scan on p1_c2
7803 Recheck Cond: (val = 1)
7804 -> Bitmap Index Scan on p1_c2_val2
7805 Index Cond: (val = 1)
7806 -> Bitmap Heap Scan on p1_c3
7807 Recheck Cond: (val = 1)
7808 -> Bitmap Index Scan on p1_c3_val2
7809 Index Cond: (val = 1)
7810 -> Bitmap Heap Scan on p1_c4
7811 Recheck Cond: (val = 1)
7812 -> Bitmap Index Scan on p1_c4_val2
7813 Index Cond: (val = 1)
7814 -> Bitmap Heap Scan on p1_c1_c1
7815 Recheck Cond: (val = 1)
7816 -> Bitmap Index Scan on p1_c1_c1_val2
7817 Index Cond: (val = 1)
7818 -> Bitmap Heap Scan on p1_c1_c2
7819 Recheck Cond: (val = 1)
7820 -> Bitmap Index Scan on p1_c1_c2_val2
7821 Index Cond: (val = 1)
7822 -> Bitmap Heap Scan on p1_c3_c1
7823 Recheck Cond: (val = 1)
7824 -> Bitmap Index Scan on p1_c3_c1_val2
7825 Index Cond: (val = 1)
7826 -> Bitmap Heap Scan on p1_c3_c2
7827 Recheck Cond: (val = 1)
7828 -> Bitmap Index Scan on p1_c3_c2_val2
7829 Index Cond: (val = 1)
7832 /*+ BitmapScanRegexp(p1 p1[^_].*)*/
7833 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7834 LOG: available indexes for BitmapScanRegexp(p1):
7835 LOG: available indexes for BitmapScanRegexp(p1_c1):
7836 LOG: available indexes for BitmapScanRegexp(p1_c2):
7837 LOG: available indexes for BitmapScanRegexp(p1_c3):
7838 LOG: available indexes for BitmapScanRegexp(p1_c4):
7839 LOG: available indexes for BitmapScanRegexp(p1_c1_c1):
7840 LOG: available indexes for BitmapScanRegexp(p1_c1_c2):
7841 LOG: available indexes for BitmapScanRegexp(p1_c3_c1):
7842 LOG: available indexes for BitmapScanRegexp(p1_c3_c2):
7845 BitmapScanRegexp(p1 p1[^_].*)
7851 ----------------------------
7855 -> Seq Scan on p1_c1
7857 -> Seq Scan on p1_c2
7859 -> Seq Scan on p1_c3
7861 -> Seq Scan on p1_c4
7863 -> Seq Scan on p1_c1_c1
7865 -> Seq Scan on p1_c1_c2
7867 -> Seq Scan on p1_c3_c1
7869 -> Seq Scan on p1_c3_c2
7873 /*+ BitmapScan(p1 p1_.*val2.*)*/
7874 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7875 LOG: available indexes for BitmapScan(p1):
7876 LOG: available indexes for BitmapScan(p1_c1):
7877 LOG: available indexes for BitmapScan(p1_c2):
7878 LOG: available indexes for BitmapScan(p1_c3):
7879 LOG: available indexes for BitmapScan(p1_c4):
7880 LOG: available indexes for BitmapScan(p1_c1_c1):
7881 LOG: available indexes for BitmapScan(p1_c1_c2):
7882 LOG: available indexes for BitmapScan(p1_c3_c1):
7883 LOG: available indexes for BitmapScan(p1_c3_c2):
7886 BitmapScan(p1 p1_.*val2.*)
7892 ----------------------------
7896 -> Seq Scan on p1_c1
7898 -> Seq Scan on p1_c2
7900 -> Seq Scan on p1_c3
7902 -> Seq Scan on p1_c4
7904 -> Seq Scan on p1_c1_c1
7906 -> Seq Scan on p1_c1_c2
7908 -> Seq Scan on p1_c3_c1
7910 -> Seq Scan on p1_c3_c2
7914 -- search from hint table
7915 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?;', '', 'SeqScan(t1)');
7916 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?;', '', 'IndexScan(t1)');
7917 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN SELECT * FROM t1 WHERE t1.id = ?;', '', 'BitmapScan(t1)');
7918 SELECT * FROM hint_plan.hints ORDER BY id;
7919 id | norm_query_string | application_name | hints
7920 ----+----------------------------------------------------------+------------------+----------------
7921 1 | EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?; | | SeqScan(t1)
7922 2 | EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?; | | IndexScan(t1)
7923 3 | EXPLAIN SELECT * FROM t1 WHERE t1.id = ?; | | BitmapScan(t1)
7926 SET pg_hint_plan.enable_hint_table = on;
7927 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7936 --------------------
7941 SET pg_hint_plan.enable_hint_table = off;
7942 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7944 --------------------------------
7945 Index Scan using t1_pkey on t1
7946 Index Cond: (id = 1)
7949 TRUNCATE hint_plan.hints;
7950 VACUUM ANALYZE hint_plan.hints;
7952 EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = 1;
7954 -------------------------------------
7955 Index Only Scan using t1_pkey on t1
7956 Index Cond: (id = 1)
7960 CREATE FUNCTION testfunc() RETURNS RECORD AS $$
7964 SELECT /*+ SeqScan(t1) */ * INTO ret FROM t1 LIMIT 1;
7967 $$ LANGUAGE plpgsql;
7976 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 LIMIT 1"
7977 PL/pgSQL function testfunc() line 5 at SQL statement
7984 DROP FUNCTION testfunc();
7985 CREATE FUNCTION testfunc() RETURNS void AS $$
7987 EXECUTE format('/*+ SeqScan(t1) */ SELECT * FROM t1');
7989 $$ LANGUAGE plpgsql;
7998 CONTEXT: SQL statement "/*+ SeqScan(t1) */ SELECT * FROM t1"
7999 PL/pgSQL function testfunc() line 3 at EXECUTE
8005 -- This should not use SeqScan(t1)
8006 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8020 DROP FUNCTION testfunc();
8021 CREATE FUNCTION testfunc() RETURNS void AS $$
8023 PERFORM 1, /*+ SeqScan(t1) */ * from t1;
8025 $$ LANGUAGE plpgsql;
8034 CONTEXT: SQL statement "SELECT 1, /*+ SeqScan(t1) */ * from t1"
8035 PL/pgSQL function testfunc() line 3 at PERFORM
8042 DROP FUNCTION testfunc();
8043 CREATE FUNCTION testfunc() RETURNS int AS $$
8049 FOR v IN SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id LOOP
8054 $$ LANGUAGE plpgsql;
8063 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id"
8064 PL/pgSQL function testfunc() line 7 at FOR over SELECT rows
8071 DROP FUNCTION testfunc();
8072 CREATE FUNCTION testfunc() RETURNS int AS $$
8079 FOR v IN EXECUTE 'SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id' LOOP
8084 $$ LANGUAGE plpgsql;
8093 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id"
8094 PL/pgSQL function testfunc() line 8 at FOR over EXECUTE statement
8101 DROP FUNCTION testfunc();
8102 CREATE FUNCTION testfunc() RETURNS int AS $$
8104 ref CURSOR FOR SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8109 sum := sum + rec.val;
8113 $$ LANGUAGE plpgsql;
8122 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8123 PL/pgSQL function testfunc() line 7 at FOR over cursor
8130 DROP FUNCTION testfunc();
8131 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8133 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8135 $$ LANGUAGE plpgsql;
8136 SELECT * FROM testfunc() LIMIT 1;
8144 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8145 PL/pgSQL function testfunc() line 3 at RETURN QUERY
8151 -- Test for error exit from inner SQL statement.
8152 DROP FUNCTION testfunc();
8153 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8155 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id;
8157 $$ LANGUAGE plpgsql;
8158 SELECT * FROM testfunc() LIMIT 1;
8159 ERROR: relation "ttx" does not exist
8160 LINE 1: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8162 QUERY: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8163 CONTEXT: PL/pgSQL function testfunc() line 3 at RETURN QUERY
8164 -- this should not use SeqScan(t1) hint.
8165 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8178 DROP FUNCTION testfunc();
8179 DROP EXTENSION pg_hint_plan;
8183 -- Explain result includes "Planning time" if COSTS is enabled, but
8184 -- this test needs it enabled for get rows count. So do tests via psql
8185 -- and grep -v the mutable line.
8187 \o results/pg_hint_plan.tmpout
8188 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8190 \! sql/maskout.sh results/pg_hint_plan.tmpout
8192 ------------------------------------------------------------------------------
8193 Merge Join (cost=xxx rows=1000 width=xxx)
8194 Merge Cond: (t1.id = t2.id)
8195 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8196 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8199 \o results/pg_hint_plan.tmpout
8200 /*+ Rows(t1 t2 #99) */
8201 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8210 \! sql/maskout.sh results/pg_hint_plan.tmpout
8212 ------------------------------------------------------------------------------
8213 Merge Join (cost=xxx rows=99 width=xxx)
8214 Merge Cond: (t1.id = t2.id)
8215 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8216 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8219 \o results/pg_hint_plan.tmpout
8220 /*+ Rows(t1 t2 +99) */
8221 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8230 \! sql/maskout.sh results/pg_hint_plan.tmpout
8232 ------------------------------------------------------------------------------
8233 Merge Join (cost=xxx rows=1099 width=xxx)
8234 Merge Cond: (t1.id = t2.id)
8235 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8236 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8239 \o results/pg_hint_plan.tmpout
8240 /*+ Rows(t1 t2 -99) */
8241 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8250 \! sql/maskout.sh results/pg_hint_plan.tmpout
8252 ------------------------------------------------------------------------------
8253 Merge Join (cost=xxx rows=901 width=xxx)
8254 Merge Cond: (t1.id = t2.id)
8255 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8256 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8259 \o results/pg_hint_plan.tmpout
8260 /*+ Rows(t1 t2 *99) */
8261 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8270 \! sql/maskout.sh results/pg_hint_plan.tmpout
8272 ------------------------------------------------------------------------------
8273 Merge Join (cost=xxx rows=99000 width=xxx)
8274 Merge Cond: (t1.id = t2.id)
8275 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8276 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8279 \o results/pg_hint_plan.tmpout
8280 /*+ Rows(t1 t2 *0.01) */
8281 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8290 \! sql/maskout.sh results/pg_hint_plan.tmpout
8292 ------------------------------------------------------------------------------
8293 Merge Join (cost=xxx rows=10 width=xxx)
8294 Merge Cond: (t1.id = t2.id)
8295 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8296 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8299 \o results/pg_hint_plan.tmpout
8300 /*+ Rows(t1 t2 #aa) */
8301 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8302 INFO: pg_hint_plan: hint syntax error at or near "aa"
8303 DETAIL: Rows hint requires valid number as rows estimation.
8312 \! sql/maskout.sh results/pg_hint_plan.tmpout
8314 ------------------------------------------------------------------------------
8315 Merge Join (cost=xxx rows=1000 width=xxx)
8316 Merge Cond: (t1.id = t2.id)
8317 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8318 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8321 \o results/pg_hint_plan.tmpout
8322 /*+ Rows(t1 t2 /99) */
8323 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8324 INFO: pg_hint_plan: hint syntax error at or near "/99"
8325 DETAIL: Unrecognized rows value type notation.
8334 \! sql/maskout.sh results/pg_hint_plan.tmpout
8336 ------------------------------------------------------------------------------
8337 Merge Join (cost=xxx rows=1000 width=xxx)
8338 Merge Cond: (t1.id = t2.id)
8339 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8340 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8344 \o results/pg_hint_plan.tmpout
8345 /*+ Rows(t1 t2 -99999) */
8346 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8347 WARNING: Force estimate to be at least one row, to avoid possible divide-by-zero when interpolating costs : Rows(t1 t2 -99999)
8356 \! sql/maskout.sh results/pg_hint_plan.tmpout
8358 ------------------------------------------------------------------------------
8359 Merge Join (cost=xxx rows=1 width=xxx)
8360 Merge Cond: (t1.id = t2.id)
8361 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8362 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8365 -- complex join tree
8366 \o results/pg_hint_plan.tmpout
8367 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8369 \! sql/maskout.sh results/pg_hint_plan.tmpout
8371 ------------------------------------------------------------------------------------
8372 Merge Join (cost=xxx rows=10 width=xxx)
8373 Merge Cond: (t1.id = t3.id)
8374 -> Merge Join (cost=xxx rows=1000 width=xxx)
8375 Merge Cond: (t1.id = t2.id)
8376 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8377 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8378 -> Sort (cost=xxx rows=100 width=xxx)
8380 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
8383 \o results/pg_hint_plan.tmpout
8384 /*+ Rows(t1 t2 #22) */
8385 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8394 \! sql/maskout.sh results/pg_hint_plan.tmpout
8396 ------------------------------------------------------------------------------------
8397 Merge Join (cost=xxx rows=1 width=xxx)
8398 Merge Cond: (t1.id = t3.id)
8399 -> Merge Join (cost=xxx rows=22 width=xxx)
8400 Merge Cond: (t1.id = t2.id)
8401 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8402 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8403 -> Sort (cost=xxx rows=100 width=xxx)
8405 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
8408 \o results/pg_hint_plan.tmpout
8409 /*+ Rows(t1 t3 *10) */
8410 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8419 set max_parallel_workers_per_gather to DEFAULT;
8420 \! sql/maskout.sh results/pg_hint_plan.tmpout
8422 ------------------------------------------------------------------------------------
8423 Merge Join (cost=xxx rows=100 width=xxx)
8424 Merge Cond: (t1.id = t3.id)
8425 -> Merge Join (cost=xxx rows=1000 width=xxx)
8426 Merge Cond: (t1.id = t2.id)
8427 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8428 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8429 -> Sort (cost=xxx rows=100 width=xxx)
8431 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
8434 \! rm results/pg_hint_plan.tmpout
8436 set client_min_messages to 'DEBUG1';
8437 set pg_hint_plan.debug_level to 'verbose';
8438 /*+ SeqScan( */ SELECT 1;
8439 INFO: pg_hint_plan: hint syntax error at or near ""
8440 DETAIL: Closing parenthesis is necessary.
8446 /*+ SeqScan(t1) */ SELECT * FROM t1 LIMIT 0;
8458 set pg_hint_plan.message_level to 'DEBUG1';
8459 set pg_hint_plan.parse_messages to 'NOTICE';
8460 /*+ SeqScan( */ SELECT 1;
8461 NOTICE: pg_hint_plan: hint syntax error at or near ""
8462 DETAIL: Closing parenthesis is necessary.
8468 /*+ SeqScan(t1) */ SELECT * FROM t1 LIMIT 0;
8469 DEBUG: pg_hint_plan: