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 -------------------------------------------
20 -> Index Scan using t1_val on t1
21 Index Cond: (val = t2.val)
25 SET pg_hint_plan.debug_print TO on;
26 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
28 --------------------------------------
30 Merge Cond: (t1.id = t2.id)
31 -> Index Scan using t1_pkey on t1
32 -> Index Scan using t2_pkey on t2
35 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.val = t2.val;
37 -------------------------------------------
42 -> Index Scan using t1_val on t1
43 Index Cond: (val = t2.val)
47 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
48 INFO: pg_hint_plan: hint syntax error at or near "Test (t1 t2) "
49 DETAIL: Unrecognized hint keyword "Test".
51 --------------------------------------
53 Merge Cond: (t1.id = t2.id)
54 -> Index Scan using t1_pkey on t1
55 -> Index Scan using t2_pkey on t2
58 SET pg_hint_plan.enable_hint TO off;
60 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
62 --------------------------------------
64 Merge Cond: (t1.id = t2.id)
65 -> Index Scan using t1_pkey on t1
66 -> Index Scan using t2_pkey on t2
69 SET pg_hint_plan.enable_hint TO on;
70 /*Set(enable_indexscan off)*/
71 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
73 --------------------------------------
75 Merge Cond: (t1.id = t2.id)
76 -> Index Scan using t1_pkey on t1
77 -> Index Scan using t2_pkey on t2
80 --+Set(enable_indexscan off)
81 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
83 --------------------------------------
85 Merge Cond: (t1.id = t2.id)
86 -> Index Scan using t1_pkey on t1
87 -> Index Scan using t2_pkey on t2
90 /*+Set(enable_indexscan off) /* nest comment */ */
91 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
92 INFO: pg_hint_plan: hint syntax error at or near "/* nest comment */ */
93 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;"
94 DETAIL: Nested block comments are not supported.
96 --------------------------------------
98 Merge Cond: (t1.id = t2.id)
99 -> Index Scan using t1_pkey on t1
100 -> Index Scan using t2_pkey on t2
103 /*+Set(enable_indexscan off)*/
104 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
107 Set(enable_indexscan off)
113 ------------------------------
115 Hash Cond: (t1.id = t2.id)
121 EXPLAIN (COSTS false) /*+Set(enable_indexscan off)*/
122 SELECT * FROM t1, t2 WHERE t1.id = t2.id;
125 Set(enable_indexscan off)
131 ------------------------------
133 Hash Cond: (t1.id = t2.id)
139 /*+ Set(enable_indexscan off) Set(enable_hashjoin off) */
140 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
143 Set(enable_hashjoin off)
144 Set(enable_indexscan off)
150 -------------------------------
152 Merge Cond: (t1.id = t2.id)
161 /*+ Set ( enable_indexscan off ) */
162 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
165 Set(enable_indexscan off)
171 ------------------------------
173 Hash Cond: (t1.id = t2.id)
186 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
189 Set(enable_indexscan off)
195 ------------------------------
197 Hash Cond: (t1.id = t2.id)
203 /*+ Set(enable_indexscan off)Set(enable_nestloop off)Set(enable_mergejoin off)
204 Set(enable_seqscan off)
206 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
209 Set(enable_indexscan off)
210 Set(enable_mergejoin off)
211 Set(enable_nestloop off)
212 Set(enable_seqscan off)
218 --------------------------------------------
220 Hash Cond: (t1.id = t2.id)
221 -> Index Scan using t1_pkey on t1
223 -> Index Scan using t2_pkey on t2
226 /*+Set(work_mem "1M")*/
227 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
228 INFO: invalid value for parameter "work_mem": "1M"
229 HINT: Valid units for this parameter are "B", "kB", "MB", "GB", and "TB".
238 --------------------------------------
240 Merge Cond: (t1.id = t2.id)
241 -> Index Scan using t1_pkey on t1
242 -> Index Scan using t2_pkey on t2
245 /*+Set(work_mem "1MB")*/
246 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
255 --------------------------------------
257 Merge Cond: (t1.id = t2.id)
258 -> Index Scan using t1_pkey on t1
259 -> Index Scan using t2_pkey on t2
262 /*+Set(work_mem TO "1MB")*/
263 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
264 INFO: pg_hint_plan: hint syntax error at or near "Set(work_mem TO "1MB")"
265 DETAIL: Set hint requires name and value of GUC parameter.
274 --------------------------------------
276 Merge Cond: (t1.id = t2.id)
277 -> Index Scan using t1_pkey on t1
278 -> Index Scan using t2_pkey on t2
281 /*+SeqScan() */ SELECT 1;
282 INFO: pg_hint_plan: hint syntax error at or near " "
283 DETAIL: SeqScan hint requires a relation.
297 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
298 INFO: pg_hint_plan: hint syntax error at or near ""
299 DETAIL: SeqScan hint accepts only one relation.
308 --------------------------------------
310 Merge Cond: (t1.id = t2.id)
311 -> Index Scan using t1_pkey on t1
312 -> Index Scan using t2_pkey on t2
316 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
325 ------------------------------
327 Hash Cond: (t1.id = t2.id)
333 /*+SeqScan(t1)IndexScan(t2)*/
334 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
344 --------------------------------------------
346 Hash Cond: (t1.id = t2.id)
349 -> Index Scan using t2_pkey on t2
353 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
362 ------------------------------------------
365 -> Bitmap Heap Scan on t2
366 Recheck Cond: (id = t1.id)
367 -> Bitmap Index Scan on t2_pkey
368 Index Cond: (id = t1.id)
371 /*+BitmapScan(t2)NoSeqScan(t1)*/
372 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
382 ------------------------------------------
384 -> Index Scan using t1_pkey on t1
385 -> Bitmap Heap Scan on t2
386 Recheck Cond: (id = t1.id)
387 -> Bitmap Index Scan on t2_pkey
388 Index Cond: (id = t1.id)
392 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
401 ------------------------------
403 Hash Cond: (t1.id = t2.id)
409 /*+NoBitmapScan(t1)*/
410 EXPLAIN (COSTS false) SELECT * FROM t1, t4 WHERE t1.val < 10;
419 ----------------------------
428 EXPLAIN (COSTS false) SELECT * FROM t3, t4 WHERE t3.id = t4.id AND t4.ctid = '(1,1)';
437 -----------------------------------------------
439 Merge Cond: (t3.id = t4.id)
440 -> Index Scan using t3_pkey on t3
444 TID Cond: (ctid = '(1,1)'::tid)
448 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)';
457 ---------------------------------------
460 Filter: (ctid = '(1,1)'::tid)
461 -> Index Scan using t2_pkey on t2
462 Index Cond: (id = t1.id)
465 /*+ NestLoop() */ SELECT 1;
466 INFO: pg_hint_plan: hint syntax error at or near " "
467 DETAIL: NestLoop hint requires at least two relations.
480 /*+ NestLoop(x) */ SELECT 1;
481 INFO: pg_hint_plan: hint syntax error at or near " "
482 DETAIL: NestLoop hint requires at least two relations.
496 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
505 ------------------------------
507 Hash Cond: (t1.id = t2.id)
514 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
523 --------------------------------------
526 -> Index Scan using t1_pkey on t1
527 Index Cond: (id = t2.id)
530 /*+NoMergeJoin(t1 t2)*/
531 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
540 ------------------------------
542 Hash Cond: (t1.id = t2.id)
548 /*+MergeJoin(t1 t3)*/
549 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
558 -------------------------------------
560 Merge Cond: (t1.val = t3.val)
561 -> Index Scan using t1_val on t1
568 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
577 -------------------------------------
580 -> Index Scan using t1_val on t1
581 Index Cond: (val = t3.val)
584 /*+NoHashJoin(t1 t3)*/
585 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
594 -------------------------------------
597 -> Index Scan using t1_val on t1
598 Index Cond: (val = t3.val)
601 /*+MergeJoin(t4 t1 t2 t3)*/
602 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
605 MergeJoin(t1 t2 t3 t4)
611 --------------------------------------------------
613 Merge Cond: (t1.id = t3.id)
615 Merge Cond: (t1.id = t2.id)
616 -> Index Scan using t1_pkey on t1
617 -> Index Scan using t2_pkey on t2
620 Merge Cond: (t3.id = t4.id)
621 -> Index Scan using t3_pkey on t3
627 /*+HashJoin(t3 t4 t1 t2)*/
628 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
631 HashJoin(t1 t2 t3 t4)
637 --------------------------------------------------------
639 Hash Cond: (t3.id = t1.id)
643 Merge Cond: (t1.id = t4.id)
645 Merge Cond: (t1.id = t2.id)
646 -> Index Scan using t1_pkey on t1
647 -> Index Scan using t2_pkey on t2
653 /*+NestLoop(t2 t3 t4 t1) IndexScan(t3)*/
654 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
658 NestLoop(t1 t2 t3 t4)
664 --------------------------------------------------
667 Merge Cond: (t1.id = t4.id)
669 Merge Cond: (t1.id = t2.id)
670 -> Index Scan using t1_pkey on t1
671 -> Index Scan using t2_pkey on t2
675 -> Index Scan using t3_pkey on t3
676 Index Cond: (id = t1.id)
679 /*+NoNestLoop(t4 t1 t3 t2)*/
680 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
683 NoNestLoop(t1 t2 t3 t4)
689 --------------------------------------------------
691 Merge Cond: (t1.id = t3.id)
693 Merge Cond: (t1.id = t2.id)
694 -> Index Scan using t1_pkey on t1
695 -> Index Scan using t2_pkey on t2
698 Merge Cond: (t3.id = t4.id)
699 -> Index Scan using t3_pkey on t3
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 ""
708 DETAIL: Closing parenthesis is necessary.
710 --------------------------------------------------
713 Merge Cond: (t1.id = t4.id)
715 Merge Cond: (t1.id = t2.id)
716 -> Index Scan using t1_pkey on t1
717 -> Index Scan using t2_pkey on t2
721 -> Index Scan using t3_pkey on t3
722 Index Cond: (id = t1.id)
726 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
727 INFO: pg_hint_plan: hint syntax error at or near "Leading( )"
728 DETAIL: Leading hint requires at least two relations.
737 --------------------------------------------------
740 Merge Cond: (t1.id = t4.id)
742 Merge Cond: (t1.id = t2.id)
743 -> Index Scan using t1_pkey on t1
744 -> Index Scan using t2_pkey on t2
748 -> Index Scan using t3_pkey on t3
749 Index Cond: (id = t1.id)
753 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
754 INFO: pg_hint_plan: hint syntax error at or near "Leading( t3 )"
755 DETAIL: Leading hint requires at least two relations.
764 --------------------------------------------------
767 Merge Cond: (t1.id = t4.id)
769 Merge Cond: (t1.id = t2.id)
770 -> Index Scan using t1_pkey on t1
771 -> Index Scan using t2_pkey on t2
775 -> Index Scan using t3_pkey on t3
776 Index Cond: (id = t1.id)
779 /*+Leading( t3 t4 )*/
780 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
789 --------------------------------------------------
793 Merge Cond: (t3.id = t4.id)
794 -> Index Scan using t3_pkey on t3
798 -> Index Scan using t2_pkey on t2
799 Index Cond: (id = t3.id)
800 -> Index Scan using t1_pkey on t1
801 Index Cond: (id = t2.id)
804 /*+Leading(t3 t4 t1)*/
805 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
814 --------------------------------------------------
817 Merge Cond: (t3.id = t1.id)
819 Merge Cond: (t3.id = t4.id)
820 -> Index Scan using t3_pkey on t3
824 -> Index Scan using t1_pkey on t1
825 -> Index Scan using t2_pkey on t2
826 Index Cond: (id = t1.id)
829 /*+Leading(t3 t4 t1 t2)*/
830 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
839 --------------------------------------------------
842 Merge Cond: (t3.id = t1.id)
844 Merge Cond: (t3.id = t4.id)
845 -> Index Scan using t3_pkey on t3
849 -> Index Scan using t1_pkey on t1
850 -> Index Scan using t2_pkey on t2
851 Index Cond: (id = t1.id)
854 /*+Leading(t3 t4 t1 t2 t1)*/
855 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
856 INFO: pg_hint_plan: hint syntax error at or near "Leading(t3 t4 t1 t2 t1)"
857 DETAIL: Relation name "t1" is duplicated.
863 Leading(t3 t4 t1 t2 t1)
866 --------------------------------------------------
869 Merge Cond: (t1.id = t4.id)
871 Merge Cond: (t1.id = t2.id)
872 -> Index Scan using t1_pkey on t1
873 -> Index Scan using t2_pkey on t2
877 -> Index Scan using t3_pkey on t3
878 Index Cond: (id = t1.id)
881 /*+Leading(t3 t4 t4)*/
882 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
883 INFO: pg_hint_plan: hint syntax error at or near "Leading(t3 t4 t4)"
884 DETAIL: Relation name "t4" is duplicated.
893 --------------------------------------------------
896 Merge Cond: (t1.id = t4.id)
898 Merge Cond: (t1.id = t2.id)
899 -> Index Scan using t1_pkey on t1
900 -> Index Scan using t2_pkey on t2
904 -> Index Scan using t3_pkey on t3
905 Index Cond: (id = t1.id)
908 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
910 -----------------------------------------------
912 -> Values Scan on "*VALUES*"
913 -> Index Scan using t1_pkey on t1
914 Index Cond: (id = "*VALUES*".column1)
918 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
927 -----------------------------------------------
929 -> Values Scan on "*VALUES*"
930 -> Index Scan using t1_pkey on t1
931 Index Cond: (id = "*VALUES*".column1)
934 /*+HashJoin(t1 *VALUES*)*/
935 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
938 HashJoin(*VALUES* t1)
944 -------------------------------------------
946 Hash Cond: (t1.id = "*VALUES*".column1)
949 -> Values Scan on "*VALUES*"
952 /*+HashJoin(t1 *VALUES*) IndexScan(t1) IndexScan(*VALUES*)*/
953 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
957 HashJoin(*VALUES* t1)
964 -------------------------------------------
966 Hash Cond: (t1.id = "*VALUES*".column1)
967 -> Index Scan using t1_pkey on t1
969 -> Values Scan on "*VALUES*"
972 -- single table scan hint test
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);
975 ------------------------------------------------------------------------
976 Index Only Scan using t1_pkey on t1
977 Index Cond: (id = $3)
978 InitPlan 2 (returns $1)
980 InitPlan 1 (returns $0)
982 -> Index Only Scan Backward using t1_pkey on t1 v_1
983 Index Cond: ((id IS NOT NULL) AND (id < 10))
984 InitPlan 4 (returns $3)
986 InitPlan 3 (returns $2)
988 -> Index Only Scan Backward using t1_pkey on t1 v_2
989 Index Cond: ((id IS NOT NULL) AND (id < 10))
993 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);
1002 ------------------------------------------------------------------------
1003 Index Only Scan using t1_pkey on t1
1004 Index Cond: (id = $3)
1005 InitPlan 1 (returns $1)
1007 -> Bitmap Heap Scan on t1 v_1
1008 Recheck Cond: (id < 10)
1009 -> Bitmap Index Scan on t1_pkey
1010 Index Cond: (id < 10)
1011 InitPlan 3 (returns $3)
1013 InitPlan 2 (returns $2)
1015 -> Index Only Scan Backward using t1_pkey on t1 v_2
1016 Index Cond: ((id IS NOT NULL) AND (id < 10))
1019 /*+BitmapScan(v_2)*/
1020 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);
1029 ------------------------------------------------------------------------
1030 Index Only Scan using t1_pkey on t1
1031 Index Cond: (id = $3)
1032 InitPlan 2 (returns $1)
1034 InitPlan 1 (returns $0)
1036 -> Index Only Scan Backward using t1_pkey on t1 v_1
1037 Index Cond: ((id IS NOT NULL) AND (id < 10))
1038 InitPlan 3 (returns $3)
1040 -> Bitmap Heap Scan on t1 v_2
1041 Recheck Cond: (id < 10)
1042 -> Bitmap Index Scan on t1_pkey
1043 Index Cond: (id < 10)
1047 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);
1056 ------------------------------------------------------------------------
1057 Bitmap Heap Scan on t1
1058 Recheck Cond: (id = $3)
1059 InitPlan 2 (returns $1)
1061 InitPlan 1 (returns $0)
1063 -> Index Only Scan Backward using t1_pkey on t1 v_1
1064 Index Cond: ((id IS NOT NULL) AND (id < 10))
1065 InitPlan 4 (returns $3)
1067 InitPlan 3 (returns $2)
1069 -> Index Only Scan Backward using t1_pkey on t1 v_2
1070 Index Cond: ((id IS NOT NULL) AND (id < 10))
1071 -> Bitmap Index Scan on t1_pkey
1072 Index Cond: (id = $3)
1075 /*+BitmapScan(v_1)BitmapScan(v_2)*/
1076 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);
1086 --------------------------------------------------
1087 Index Only Scan using t1_pkey on t1
1088 Index Cond: (id = $3)
1089 InitPlan 1 (returns $1)
1091 -> Bitmap Heap Scan on t1 v_1
1092 Recheck Cond: (id < 10)
1093 -> Bitmap Index Scan on t1_pkey
1094 Index Cond: (id < 10)
1095 InitPlan 2 (returns $3)
1097 -> Bitmap Heap Scan on t1 v_2
1098 Recheck Cond: (id < 10)
1099 -> Bitmap Index Scan on t1_pkey
1100 Index Cond: (id < 10)
1103 /*+BitmapScan(v_1)BitmapScan(t1)*/
1104 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);
1114 ------------------------------------------------------------------------
1115 Bitmap Heap Scan on t1
1116 Recheck Cond: (id = $3)
1117 InitPlan 1 (returns $1)
1119 -> Bitmap Heap Scan on t1 v_1
1120 Recheck Cond: (id < 10)
1121 -> Bitmap Index Scan on t1_pkey
1122 Index Cond: (id < 10)
1123 InitPlan 3 (returns $3)
1125 InitPlan 2 (returns $2)
1127 -> Index Only Scan Backward using t1_pkey on t1 v_2
1128 Index Cond: ((id IS NOT NULL) AND (id < 10))
1129 -> Bitmap Index Scan on t1_pkey
1130 Index Cond: (id = $3)
1133 /*+BitmapScan(v_2)BitmapScan(t1)*/
1134 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);
1144 ------------------------------------------------------------------------
1145 Bitmap Heap Scan on t1
1146 Recheck Cond: (id = $3)
1147 InitPlan 2 (returns $1)
1149 InitPlan 1 (returns $0)
1151 -> Index Only Scan Backward using t1_pkey on t1 v_1
1152 Index Cond: ((id IS NOT NULL) AND (id < 10))
1153 InitPlan 3 (returns $3)
1155 -> Bitmap Heap Scan on t1 v_2
1156 Recheck Cond: (id < 10)
1157 -> Bitmap Index Scan on t1_pkey
1158 Index Cond: (id < 10)
1159 -> Bitmap Index Scan on t1_pkey
1160 Index Cond: (id = $3)
1163 /*+BitmapScan(v_1)BitmapScan(v_2)BitmapScan(t1)*/
1164 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);
1175 --------------------------------------------------
1176 Bitmap Heap Scan on t1
1177 Recheck Cond: (id = $3)
1178 InitPlan 1 (returns $1)
1180 -> Bitmap Heap Scan on t1 v_1
1181 Recheck Cond: (id < 10)
1182 -> Bitmap Index Scan on t1_pkey
1183 Index Cond: (id < 10)
1184 InitPlan 2 (returns $3)
1186 -> Bitmap Heap Scan on t1 v_2
1187 Recheck Cond: (id < 10)
1188 -> Bitmap Index Scan on t1_pkey
1189 Index Cond: (id < 10)
1190 -> Bitmap Index Scan on t1_pkey
1191 Index Cond: (id = $3)
1194 -- full scan hint pattern test
1195 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1197 -----------------------------------
1199 TID Cond: (ctid = '(1,1)'::tid)
1204 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1213 -------------------------------------------------
1215 Filter: ((id < 10) AND (ctid = '(1,1)'::tid))
1219 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1228 ---------------------------------
1229 Index Scan using t1_pkey on t1
1230 Index Cond: (id < 10)
1231 Filter: (ctid = '(1,1)'::tid)
1235 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1244 ------------------------------------
1245 Bitmap Heap Scan on t1
1246 Recheck Cond: (id < 10)
1247 Filter: (ctid = '(1,1)'::tid)
1248 -> Bitmap Index Scan on t1_pkey
1249 Index Cond: (id < 10)
1253 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1262 -----------------------------------
1264 TID Cond: (ctid = '(1,1)'::tid)
1269 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1278 -----------------------------------
1280 TID Cond: (ctid = '(1,1)'::tid)
1284 /*+NoIndexScan(t1)*/
1285 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1294 -----------------------------------
1296 TID Cond: (ctid = '(1,1)'::tid)
1300 /*+NoBitmapScan(t1)*/
1301 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1310 -----------------------------------
1312 TID Cond: (ctid = '(1,1)'::tid)
1317 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1326 ---------------------------------
1327 Index Scan using t1_pkey on t1
1328 Index Cond: (id < 10)
1329 Filter: (ctid = '(1,1)'::tid)
1332 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1334 -----------------------------------------
1336 Join Filter: (t1.id = t2.id)
1338 TID Cond: (ctid = '(1,1)'::tid)
1340 TID Cond: (ctid = '(1,1)'::tid)
1344 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1353 -----------------------------------------
1355 Join Filter: (t1.id = t2.id)
1357 Filter: (ctid = '(1,1)'::tid)
1359 TID Cond: (ctid = '(1,1)'::tid)
1363 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1372 -----------------------------------------
1374 Join Filter: (t1.id = t2.id)
1376 TID Cond: (ctid = '(1,1)'::tid)
1378 Filter: (ctid = '(1,1)'::tid)
1381 /*+SeqScan(t1) SeqScan(t2)*/
1382 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1392 ---------------------------------------
1394 Join Filter: (t1.id = t2.id)
1396 Filter: (ctid = '(1,1)'::tid)
1398 Filter: (ctid = '(1,1)'::tid)
1401 /*+SeqScan(t1) IndexScan(t2)*/
1402 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1412 ---------------------------------------
1415 Filter: (ctid = '(1,1)'::tid)
1416 -> Index Scan using t2_pkey on t2
1417 Index Cond: (id = t1.id)
1418 Filter: (ctid = '(1,1)'::tid)
1421 /*+SeqScan(t1) BitmapScan(t2)*/
1422 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1432 ------------------------------------------
1435 Filter: (ctid = '(1,1)'::tid)
1436 -> Bitmap Heap Scan on t2
1437 Recheck Cond: (id = t1.id)
1438 Filter: (ctid = '(1,1)'::tid)
1439 -> Bitmap Index Scan on t2_pkey
1440 Index Cond: (id = t1.id)
1443 /*+SeqScan(t1) TidScan(t2)*/
1444 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1454 -----------------------------------------
1456 Join Filter: (t1.id = t2.id)
1458 Filter: (ctid = '(1,1)'::tid)
1460 TID Cond: (ctid = '(1,1)'::tid)
1463 /*+SeqScan(t1) NoSeqScan(t2)*/
1464 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1474 -----------------------------------------
1476 Join Filter: (t1.id = t2.id)
1478 Filter: (ctid = '(1,1)'::tid)
1480 TID Cond: (ctid = '(1,1)'::tid)
1483 /*+SeqScan(t1) NoIndexScan(t2)*/
1484 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1494 -----------------------------------------
1496 Join Filter: (t1.id = t2.id)
1498 Filter: (ctid = '(1,1)'::tid)
1500 TID Cond: (ctid = '(1,1)'::tid)
1503 /*+SeqScan(t1) NoBitmapScan(t2)*/
1504 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1514 -----------------------------------------
1516 Join Filter: (t1.id = t2.id)
1518 Filter: (ctid = '(1,1)'::tid)
1520 TID Cond: (ctid = '(1,1)'::tid)
1523 /*+SeqScan(t1) NoTidScan(t2)*/
1524 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1534 ---------------------------------------
1536 Join Filter: (t1.id = t2.id)
1538 Filter: (ctid = '(1,1)'::tid)
1540 Filter: (ctid = '(1,1)'::tid)
1544 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1553 -----------------------------------------
1556 TID Cond: (ctid = '(1,1)'::tid)
1557 -> Index Scan using t1_pkey on t1
1558 Index Cond: (id = t2.id)
1559 Filter: (ctid = '(1,1)'::tid)
1563 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1572 -----------------------------------------
1575 TID Cond: (ctid = '(1,1)'::tid)
1576 -> Index Scan using t2_pkey on t2
1577 Index Cond: (id = t1.id)
1578 Filter: (ctid = '(1,1)'::tid)
1581 /*+IndexScan(t1) SeqScan(t2)*/
1582 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1592 ---------------------------------------
1595 Filter: (ctid = '(1,1)'::tid)
1596 -> Index Scan using t1_pkey on t1
1597 Index Cond: (id = t2.id)
1598 Filter: (ctid = '(1,1)'::tid)
1601 /*+IndexScan(t1) IndexScan(t2)*/
1602 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1612 ---------------------------------------
1614 -> Index Scan using t2_pkey on t2
1615 Filter: (ctid = '(1,1)'::tid)
1616 -> Index Scan using t1_pkey on t1
1617 Index Cond: (id = t2.id)
1618 Filter: (ctid = '(1,1)'::tid)
1621 /*+IndexScan(t1) BitmapScan(t2)*/
1622 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1632 ------------------------------------------
1634 -> Index Scan using t1_pkey on t1
1635 Filter: (ctid = '(1,1)'::tid)
1636 -> Bitmap Heap Scan on t2
1637 Recheck Cond: (id = t1.id)
1638 Filter: (ctid = '(1,1)'::tid)
1639 -> Bitmap Index Scan on t2_pkey
1640 Index Cond: (id = t1.id)
1643 /*+IndexScan(t1) TidScan(t2)*/
1644 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1654 -----------------------------------------
1657 TID Cond: (ctid = '(1,1)'::tid)
1658 -> Index Scan using t1_pkey on t1
1659 Index Cond: (id = t2.id)
1660 Filter: (ctid = '(1,1)'::tid)
1663 /*+IndexScan(t1) NoSeqScan(t2)*/
1664 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1674 -----------------------------------------
1677 TID Cond: (ctid = '(1,1)'::tid)
1678 -> Index Scan using t1_pkey on t1
1679 Index Cond: (id = t2.id)
1680 Filter: (ctid = '(1,1)'::tid)
1683 /*+IndexScan(t1) NoIndexScan(t2)*/
1684 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1694 -----------------------------------------
1697 TID Cond: (ctid = '(1,1)'::tid)
1698 -> Index Scan using t1_pkey on t1
1699 Index Cond: (id = t2.id)
1700 Filter: (ctid = '(1,1)'::tid)
1703 /*+IndexScan(t1) NoBitmapScan(t2)*/
1704 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1714 -----------------------------------------
1717 TID Cond: (ctid = '(1,1)'::tid)
1718 -> Index Scan using t1_pkey on t1
1719 Index Cond: (id = t2.id)
1720 Filter: (ctid = '(1,1)'::tid)
1723 /*+IndexScan(t1) NoTidScan(t2)*/
1724 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1734 ---------------------------------------
1737 Filter: (ctid = '(1,1)'::tid)
1738 -> Index Scan using t1_pkey on t1
1739 Index Cond: (id = t2.id)
1740 Filter: (ctid = '(1,1)'::tid)
1744 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1753 ------------------------------------------
1756 TID Cond: (ctid = '(1,1)'::tid)
1757 -> Bitmap Heap Scan on t1
1758 Recheck Cond: (id = t2.id)
1759 Filter: (ctid = '(1,1)'::tid)
1760 -> Bitmap Index Scan on t1_pkey
1761 Index Cond: (id = t2.id)
1765 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1774 ------------------------------------------
1777 TID Cond: (ctid = '(1,1)'::tid)
1778 -> Bitmap Heap Scan on t2
1779 Recheck Cond: (id = t1.id)
1780 Filter: (ctid = '(1,1)'::tid)
1781 -> Bitmap Index Scan on t2_pkey
1782 Index Cond: (id = t1.id)
1786 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1795 ------------------------------------------
1798 TID Cond: (ctid = '(1,1)'::tid)
1799 -> Bitmap Heap Scan on t2
1800 Recheck Cond: (id = t1.id)
1801 Filter: (ctid = '(1,1)'::tid)
1802 -> Bitmap Index Scan on t2_pkey
1803 Index Cond: (id = t1.id)
1806 /*+BitmapScan(t1) SeqScan(t2)*/
1807 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1817 ------------------------------------------
1820 Filter: (ctid = '(1,1)'::tid)
1821 -> Bitmap Heap Scan on t1
1822 Recheck Cond: (id = t2.id)
1823 Filter: (ctid = '(1,1)'::tid)
1824 -> Bitmap Index Scan on t1_pkey
1825 Index Cond: (id = t2.id)
1828 /*+BitmapScan(t1) IndexScan(t2)*/
1829 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1839 ------------------------------------------
1841 -> Index Scan using t2_pkey on t2
1842 Filter: (ctid = '(1,1)'::tid)
1843 -> Bitmap Heap Scan on t1
1844 Recheck Cond: (id = t2.id)
1845 Filter: (ctid = '(1,1)'::tid)
1846 -> Bitmap Index Scan on t1_pkey
1847 Index Cond: (id = t2.id)
1850 /*+BitmapScan(t1) BitmapScan(t2)*/
1851 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1861 ------------------------------------------
1863 -> Index Scan using t2_pkey on t2
1864 Filter: (ctid = '(1,1)'::tid)
1865 -> Bitmap Heap Scan on t1
1866 Recheck Cond: (id = t2.id)
1867 Filter: (ctid = '(1,1)'::tid)
1868 -> Bitmap Index Scan on t1_pkey
1869 Index Cond: (id = t2.id)
1872 /*+BitmapScan(t1) TidScan(t2)*/
1873 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1883 ------------------------------------------
1886 TID Cond: (ctid = '(1,1)'::tid)
1887 -> Bitmap Heap Scan on t1
1888 Recheck Cond: (id = t2.id)
1889 Filter: (ctid = '(1,1)'::tid)
1890 -> Bitmap Index Scan on t1_pkey
1891 Index Cond: (id = t2.id)
1894 /*+BitmapScan(t1) NoSeqScan(t2)*/
1895 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1905 ------------------------------------------
1908 TID Cond: (ctid = '(1,1)'::tid)
1909 -> Bitmap Heap Scan on t1
1910 Recheck Cond: (id = t2.id)
1911 Filter: (ctid = '(1,1)'::tid)
1912 -> Bitmap Index Scan on t1_pkey
1913 Index Cond: (id = t2.id)
1916 /*+BitmapScan(t1) NoIndexScan(t2)*/
1917 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1927 ------------------------------------------
1930 TID Cond: (ctid = '(1,1)'::tid)
1931 -> Bitmap Heap Scan on t1
1932 Recheck Cond: (id = t2.id)
1933 Filter: (ctid = '(1,1)'::tid)
1934 -> Bitmap Index Scan on t1_pkey
1935 Index Cond: (id = t2.id)
1938 /*+BitmapScan(t1) NoBitmapScan(t2)*/
1939 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1949 ------------------------------------------
1952 TID Cond: (ctid = '(1,1)'::tid)
1953 -> Bitmap Heap Scan on t1
1954 Recheck Cond: (id = t2.id)
1955 Filter: (ctid = '(1,1)'::tid)
1956 -> Bitmap Index Scan on t1_pkey
1957 Index Cond: (id = t2.id)
1960 /*+BitmapScan(t1) NoTidScan(t2)*/
1961 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1971 ------------------------------------------
1974 Filter: (ctid = '(1,1)'::tid)
1975 -> Bitmap Heap Scan on t1
1976 Recheck Cond: (id = t2.id)
1977 Filter: (ctid = '(1,1)'::tid)
1978 -> Bitmap Index Scan on t1_pkey
1979 Index Cond: (id = t2.id)
1983 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1992 -----------------------------------------
1994 Join Filter: (t1.id = t2.id)
1996 TID Cond: (ctid = '(1,1)'::tid)
1998 TID Cond: (ctid = '(1,1)'::tid)
2002 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2011 -----------------------------------------
2013 Join Filter: (t1.id = t2.id)
2015 TID Cond: (ctid = '(1,1)'::tid)
2017 TID Cond: (ctid = '(1,1)'::tid)
2020 /*+TidScan(t1) SeqScan(t2)*/
2021 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2031 -----------------------------------------
2033 Join Filter: (t1.id = t2.id)
2035 TID Cond: (ctid = '(1,1)'::tid)
2037 Filter: (ctid = '(1,1)'::tid)
2040 /*+TidScan(t1) IndexScan(t2)*/
2041 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2051 -----------------------------------------
2054 TID Cond: (ctid = '(1,1)'::tid)
2055 -> Index Scan using t2_pkey on t2
2056 Index Cond: (id = t1.id)
2057 Filter: (ctid = '(1,1)'::tid)
2060 /*+TidScan(t1) BitmapScan(t2)*/
2061 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2071 ------------------------------------------
2074 TID Cond: (ctid = '(1,1)'::tid)
2075 -> Bitmap Heap Scan on t2
2076 Recheck Cond: (id = t1.id)
2077 Filter: (ctid = '(1,1)'::tid)
2078 -> Bitmap Index Scan on t2_pkey
2079 Index Cond: (id = t1.id)
2082 /*+TidScan(t1) TidScan(t2)*/
2083 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2093 -----------------------------------------
2095 Join Filter: (t1.id = t2.id)
2097 TID Cond: (ctid = '(1,1)'::tid)
2099 TID Cond: (ctid = '(1,1)'::tid)
2102 /*+TidScan(t1) NoSeqScan(t2)*/
2103 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2113 -----------------------------------------
2115 Join Filter: (t1.id = t2.id)
2117 TID Cond: (ctid = '(1,1)'::tid)
2119 TID Cond: (ctid = '(1,1)'::tid)
2122 /*+TidScan(t1) NoIndexScan(t2)*/
2123 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2133 -----------------------------------------
2135 Join Filter: (t1.id = t2.id)
2137 TID Cond: (ctid = '(1,1)'::tid)
2139 TID Cond: (ctid = '(1,1)'::tid)
2142 /*+TidScan(t1) NoBitmapScan(t2)*/
2143 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2153 -----------------------------------------
2155 Join Filter: (t1.id = t2.id)
2157 TID Cond: (ctid = '(1,1)'::tid)
2159 TID Cond: (ctid = '(1,1)'::tid)
2162 /*+TidScan(t1) NoTidScan(t2)*/
2163 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2173 -----------------------------------------
2176 TID Cond: (ctid = '(1,1)'::tid)
2177 -> Index Scan using t2_pkey on t2
2178 Index Cond: (id = t1.id)
2179 Filter: (ctid = '(1,1)'::tid)
2183 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2192 -----------------------------------------
2194 Join Filter: (t1.id = t2.id)
2196 TID Cond: (ctid = '(1,1)'::tid)
2198 TID Cond: (ctid = '(1,1)'::tid)
2202 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2211 -----------------------------------------
2213 Join Filter: (t1.id = t2.id)
2215 TID Cond: (ctid = '(1,1)'::tid)
2217 TID Cond: (ctid = '(1,1)'::tid)
2220 /*+NoSeqScan(t1) SeqScan(t2)*/
2221 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2231 -----------------------------------------
2233 Join Filter: (t1.id = t2.id)
2235 TID Cond: (ctid = '(1,1)'::tid)
2237 Filter: (ctid = '(1,1)'::tid)
2240 /*+NoSeqScan(t1) IndexScan(t2)*/
2241 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2251 -----------------------------------------
2254 TID Cond: (ctid = '(1,1)'::tid)
2255 -> Index Scan using t2_pkey on t2
2256 Index Cond: (id = t1.id)
2257 Filter: (ctid = '(1,1)'::tid)
2260 /*+NoSeqScan(t1) BitmapScan(t2)*/
2261 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2271 ------------------------------------------
2274 TID Cond: (ctid = '(1,1)'::tid)
2275 -> Bitmap Heap Scan on t2
2276 Recheck Cond: (id = t1.id)
2277 Filter: (ctid = '(1,1)'::tid)
2278 -> Bitmap Index Scan on t2_pkey
2279 Index Cond: (id = t1.id)
2282 /*+NoSeqScan(t1) TidScan(t2)*/
2283 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2293 -----------------------------------------
2295 Join Filter: (t1.id = t2.id)
2297 TID Cond: (ctid = '(1,1)'::tid)
2299 TID Cond: (ctid = '(1,1)'::tid)
2302 /*+NoSeqScan(t1) NoSeqScan(t2)*/
2303 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2313 -----------------------------------------
2315 Join Filter: (t1.id = t2.id)
2317 TID Cond: (ctid = '(1,1)'::tid)
2319 TID Cond: (ctid = '(1,1)'::tid)
2322 /*+NoSeqScan(t1) NoIndexScan(t2)*/
2323 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2333 -----------------------------------------
2335 Join Filter: (t1.id = t2.id)
2337 TID Cond: (ctid = '(1,1)'::tid)
2339 TID Cond: (ctid = '(1,1)'::tid)
2342 /*+NoSeqScan(t1) NoBitmapScan(t2)*/
2343 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2353 -----------------------------------------
2355 Join Filter: (t1.id = t2.id)
2357 TID Cond: (ctid = '(1,1)'::tid)
2359 TID Cond: (ctid = '(1,1)'::tid)
2362 /*+NoSeqScan(t1) NoTidScan(t2)*/
2363 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2373 -----------------------------------------
2376 TID Cond: (ctid = '(1,1)'::tid)
2377 -> Index Scan using t2_pkey on t2
2378 Index Cond: (id = t1.id)
2379 Filter: (ctid = '(1,1)'::tid)
2382 /*+NoIndexScan(t1)*/
2383 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2392 -----------------------------------------
2394 Join Filter: (t1.id = t2.id)
2396 TID Cond: (ctid = '(1,1)'::tid)
2398 TID Cond: (ctid = '(1,1)'::tid)
2401 /*+NoIndexScan(t2)*/
2402 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2411 -----------------------------------------
2413 Join Filter: (t1.id = t2.id)
2415 TID Cond: (ctid = '(1,1)'::tid)
2417 TID Cond: (ctid = '(1,1)'::tid)
2420 /*+NoIndexScan(t1) SeqScan(t2)*/
2421 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2431 -----------------------------------------
2433 Join Filter: (t1.id = t2.id)
2435 TID Cond: (ctid = '(1,1)'::tid)
2437 Filter: (ctid = '(1,1)'::tid)
2440 /*+NoIndexScan(t1) IndexScan(t2)*/
2441 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2451 -----------------------------------------
2454 TID Cond: (ctid = '(1,1)'::tid)
2455 -> Index Scan using t2_pkey on t2
2456 Index Cond: (id = t1.id)
2457 Filter: (ctid = '(1,1)'::tid)
2460 /*+NoIndexScan(t1) BitmapScan(t2)*/
2461 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2471 ------------------------------------------
2474 TID Cond: (ctid = '(1,1)'::tid)
2475 -> Bitmap Heap Scan on t2
2476 Recheck Cond: (id = t1.id)
2477 Filter: (ctid = '(1,1)'::tid)
2478 -> Bitmap Index Scan on t2_pkey
2479 Index Cond: (id = t1.id)
2482 /*+NoIndexScan(t1) TidScan(t2)*/
2483 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2493 -----------------------------------------
2495 Join Filter: (t1.id = t2.id)
2497 TID Cond: (ctid = '(1,1)'::tid)
2499 TID Cond: (ctid = '(1,1)'::tid)
2502 /*+NoIndexScan(t1) NoSeqScan(t2)*/
2503 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2513 -----------------------------------------
2515 Join Filter: (t1.id = t2.id)
2517 TID Cond: (ctid = '(1,1)'::tid)
2519 TID Cond: (ctid = '(1,1)'::tid)
2522 /*+NoIndexScan(t1) NoIndexScan(t2)*/
2523 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2533 -----------------------------------------
2535 Join Filter: (t1.id = t2.id)
2537 TID Cond: (ctid = '(1,1)'::tid)
2539 TID Cond: (ctid = '(1,1)'::tid)
2542 /*+NoIndexScan(t1) NoBitmapScan(t2)*/
2543 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2553 -----------------------------------------
2555 Join Filter: (t1.id = t2.id)
2557 TID Cond: (ctid = '(1,1)'::tid)
2559 TID Cond: (ctid = '(1,1)'::tid)
2562 /*+NoIndexScan(t1) NoTidScan(t2)*/
2563 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2573 -----------------------------------------
2576 TID Cond: (ctid = '(1,1)'::tid)
2577 -> Index Scan using t2_pkey on t2
2578 Index Cond: (id = t1.id)
2579 Filter: (ctid = '(1,1)'::tid)
2582 /*+NoBitmapScan(t1)*/
2583 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2592 -----------------------------------------
2594 Join Filter: (t1.id = t2.id)
2596 TID Cond: (ctid = '(1,1)'::tid)
2598 TID Cond: (ctid = '(1,1)'::tid)
2601 /*+NoBitmapScan(t2)*/
2602 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2611 -----------------------------------------
2613 Join Filter: (t1.id = t2.id)
2615 TID Cond: (ctid = '(1,1)'::tid)
2617 TID Cond: (ctid = '(1,1)'::tid)
2620 /*+NoBitmapScan(t1) SeqScan(t2)*/
2621 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2631 -----------------------------------------
2633 Join Filter: (t1.id = t2.id)
2635 TID Cond: (ctid = '(1,1)'::tid)
2637 Filter: (ctid = '(1,1)'::tid)
2640 /*+NoBitmapScan(t1) IndexScan(t2)*/
2641 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2651 -----------------------------------------
2654 TID Cond: (ctid = '(1,1)'::tid)
2655 -> Index Scan using t2_pkey on t2
2656 Index Cond: (id = t1.id)
2657 Filter: (ctid = '(1,1)'::tid)
2660 /*+NoBitmapScan(t1) BitmapScan(t2)*/
2661 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2671 ------------------------------------------
2674 TID Cond: (ctid = '(1,1)'::tid)
2675 -> Bitmap Heap Scan on t2
2676 Recheck Cond: (id = t1.id)
2677 Filter: (ctid = '(1,1)'::tid)
2678 -> Bitmap Index Scan on t2_pkey
2679 Index Cond: (id = t1.id)
2682 /*+NoBitmapScan(t1) TidScan(t2)*/
2683 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2693 -----------------------------------------
2695 Join Filter: (t1.id = t2.id)
2697 TID Cond: (ctid = '(1,1)'::tid)
2699 TID Cond: (ctid = '(1,1)'::tid)
2702 /*+NoBitmapScan(t1) NoSeqScan(t2)*/
2703 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2713 -----------------------------------------
2715 Join Filter: (t1.id = t2.id)
2717 TID Cond: (ctid = '(1,1)'::tid)
2719 TID Cond: (ctid = '(1,1)'::tid)
2722 /*+NoBitmapScan(t1) NoIndexScan(t2)*/
2723 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2733 -----------------------------------------
2735 Join Filter: (t1.id = t2.id)
2737 TID Cond: (ctid = '(1,1)'::tid)
2739 TID Cond: (ctid = '(1,1)'::tid)
2742 /*+NoBitmapScan(t1) NoBitmapScan(t2)*/
2743 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2753 -----------------------------------------
2755 Join Filter: (t1.id = t2.id)
2757 TID Cond: (ctid = '(1,1)'::tid)
2759 TID Cond: (ctid = '(1,1)'::tid)
2762 /*+NoBitmapScan(t1) NoTidScan(t2)*/
2763 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2773 -----------------------------------------
2776 TID Cond: (ctid = '(1,1)'::tid)
2777 -> Index Scan using t2_pkey on t2
2778 Index Cond: (id = t1.id)
2779 Filter: (ctid = '(1,1)'::tid)
2783 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2792 -----------------------------------------
2795 TID Cond: (ctid = '(1,1)'::tid)
2796 -> Index Scan using t1_pkey on t1
2797 Index Cond: (id = t2.id)
2798 Filter: (ctid = '(1,1)'::tid)
2802 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2811 -----------------------------------------
2814 TID Cond: (ctid = '(1,1)'::tid)
2815 -> Index Scan using t2_pkey on t2
2816 Index Cond: (id = t1.id)
2817 Filter: (ctid = '(1,1)'::tid)
2820 /*+NoTidScan(t1) SeqScan(t2)*/
2821 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2831 ---------------------------------------
2834 Filter: (ctid = '(1,1)'::tid)
2835 -> Index Scan using t1_pkey on t1
2836 Index Cond: (id = t2.id)
2837 Filter: (ctid = '(1,1)'::tid)
2840 /*+NoTidScan(t1) IndexScan(t2)*/
2841 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2851 ---------------------------------------
2853 -> Index Scan using t2_pkey on t2
2854 Filter: (ctid = '(1,1)'::tid)
2855 -> Index Scan using t1_pkey on t1
2856 Index Cond: (id = t2.id)
2857 Filter: (ctid = '(1,1)'::tid)
2860 /*+NoTidScan(t1) BitmapScan(t2)*/
2861 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2871 ------------------------------------------
2874 Filter: (ctid = '(1,1)'::tid)
2875 -> Bitmap Heap Scan on t2
2876 Recheck Cond: (id = t1.id)
2877 Filter: (ctid = '(1,1)'::tid)
2878 -> Bitmap Index Scan on t2_pkey
2879 Index Cond: (id = t1.id)
2882 /*+NoTidScan(t1) TidScan(t2)*/
2883 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2893 -----------------------------------------
2896 TID Cond: (ctid = '(1,1)'::tid)
2897 -> Index Scan using t1_pkey on t1
2898 Index Cond: (id = t2.id)
2899 Filter: (ctid = '(1,1)'::tid)
2902 /*+NoTidScan(t1) NoSeqScan(t2)*/
2903 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2913 -----------------------------------------
2916 TID Cond: (ctid = '(1,1)'::tid)
2917 -> Index Scan using t1_pkey on t1
2918 Index Cond: (id = t2.id)
2919 Filter: (ctid = '(1,1)'::tid)
2922 /*+NoTidScan(t1) NoIndexScan(t2)*/
2923 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2933 -----------------------------------------
2936 TID Cond: (ctid = '(1,1)'::tid)
2937 -> Index Scan using t1_pkey on t1
2938 Index Cond: (id = t2.id)
2939 Filter: (ctid = '(1,1)'::tid)
2942 /*+NoTidScan(t1) NoBitmapScan(t2)*/
2943 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2953 -----------------------------------------
2956 TID Cond: (ctid = '(1,1)'::tid)
2957 -> Index Scan using t1_pkey on t1
2958 Index Cond: (id = t2.id)
2959 Filter: (ctid = '(1,1)'::tid)
2962 /*+NoTidScan(t1) NoTidScan(t2)*/
2963 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2973 ---------------------------------------
2976 Filter: (ctid = '(1,1)'::tid)
2977 -> Index Scan using t1_pkey on t1
2978 Index Cond: (id = t2.id)
2979 Filter: (ctid = '(1,1)'::tid)
2983 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;
2985 -----------------------------------------
2987 Join Filter: (t1.id = t2.id)
2989 TID Cond: (ctid = '(1,1)'::tid)
2992 TID Cond: (ctid = '(1,1)'::tid)
2996 /*+BitmapScan(t1) BitmapScan(t2)*/
2997 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;
3007 --------------------------------------------------------
3009 -> Bitmap Heap Scan on t2
3010 Recheck Cond: (id < 10)
3011 Filter: (ctid = '(1,1)'::tid)
3012 -> Bitmap Index Scan on t2_pkey
3013 Index Cond: (id < 10)
3014 -> Bitmap Heap Scan on t1
3015 Recheck Cond: ((id = t2.id) AND (id < 10))
3016 Filter: (ctid = '(1,1)'::tid)
3017 -> Bitmap Index Scan on t1_pkey
3018 Index Cond: ((id = t2.id) AND (id < 10))
3022 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
3024 ------------------------------
3026 Hash Cond: (t1.id = t2.id)
3032 /*+MergeJoin(t1 t2)*/
3033 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
3042 --------------------------------------
3044 Merge Cond: (t1.id = t2.id)
3045 -> Index Scan using t1_pkey on t1
3046 -> Index Scan using t2_pkey on t2
3050 /*+NestLoop(t1 t2)*/
3051 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
3060 ------------------------------
3062 Hash Cond: (t1.id = t2.id)
3068 -- inheritance tables test
3069 SET constraint_exclusion TO off;
3070 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3072 -----------------------------------------------------------------------
3074 -> Seq Scan on p1 p1_1
3075 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3076 -> Seq Scan on p1_c1 p1_2
3077 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3078 -> Seq Scan on p1_c2 p1_3
3079 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3080 -> Seq Scan on p1_c3 p1_4
3081 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3082 -> Seq Scan on p1_c4 p1_5
3083 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3084 -> Seq Scan on p1_c1_c1 p1_6
3085 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3086 -> Seq Scan on p1_c1_c2 p1_7
3087 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3088 -> Seq Scan on p1_c3_c1 p1_8
3089 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3090 -> Seq Scan on p1_c3_c2 p1_9
3091 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3094 SET constraint_exclusion TO on;
3095 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3097 -----------------------------------------------------------------------
3099 -> Seq Scan on p1 p1_1
3100 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3101 -> Seq Scan on p1_c1 p1_2
3102 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3103 -> Seq Scan on p1_c1_c1 p1_3
3104 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3105 -> Seq Scan on p1_c1_c2 p1_4
3106 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3109 SET constraint_exclusion TO off;
3111 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3120 -----------------------------------------------------------------------
3122 -> Seq Scan on p1 p1_1
3123 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3124 -> Seq Scan on p1_c1 p1_2
3125 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3126 -> Seq Scan on p1_c2 p1_3
3127 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3128 -> Seq Scan on p1_c3 p1_4
3129 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3130 -> Seq Scan on p1_c4 p1_5
3131 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3132 -> Seq Scan on p1_c1_c1 p1_6
3133 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3134 -> Seq Scan on p1_c1_c2 p1_7
3135 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3136 -> Seq Scan on p1_c3_c1 p1_8
3137 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3138 -> Seq Scan on p1_c3_c2 p1_9
3139 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3143 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3152 -------------------------------------------------------
3154 -> Index Scan using p1_pkey on p1 p1_1
3155 Index Cond: ((id >= 50) AND (id <= 51))
3156 Filter: (ctid = '(1,1)'::tid)
3157 -> Index Scan using p1_c1_pkey on p1_c1 p1_2
3158 Index Cond: ((id >= 50) AND (id <= 51))
3159 Filter: (ctid = '(1,1)'::tid)
3160 -> Index Scan using p1_c2_pkey on p1_c2 p1_3
3161 Index Cond: ((id >= 50) AND (id <= 51))
3162 Filter: (ctid = '(1,1)'::tid)
3163 -> Index Scan using p1_c3_pkey on p1_c3 p1_4
3164 Index Cond: ((id >= 50) AND (id <= 51))
3165 Filter: (ctid = '(1,1)'::tid)
3166 -> Index Scan using p1_c4_pkey on p1_c4 p1_5
3167 Index Cond: ((id >= 50) AND (id <= 51))
3168 Filter: (ctid = '(1,1)'::tid)
3169 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_6
3170 Index Cond: ((id >= 50) AND (id <= 51))
3171 Filter: (ctid = '(1,1)'::tid)
3172 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_7
3173 Index Cond: ((id >= 50) AND (id <= 51))
3174 Filter: (ctid = '(1,1)'::tid)
3175 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1 p1_8
3176 Index Cond: ((id >= 50) AND (id <= 51))
3177 Filter: (ctid = '(1,1)'::tid)
3178 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2 p1_9
3179 Index Cond: ((id >= 50) AND (id <= 51))
3180 Filter: (ctid = '(1,1)'::tid)
3184 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3193 -------------------------------------------------------
3195 -> Bitmap Heap Scan on p1 p1_1
3196 Recheck Cond: ((id >= 50) AND (id <= 51))
3197 Filter: (ctid = '(1,1)'::tid)
3198 -> Bitmap Index Scan on p1_pkey
3199 Index Cond: ((id >= 50) AND (id <= 51))
3200 -> Bitmap Heap Scan on p1_c1 p1_2
3201 Recheck Cond: ((id >= 50) AND (id <= 51))
3202 Filter: (ctid = '(1,1)'::tid)
3203 -> Bitmap Index Scan on p1_c1_pkey
3204 Index Cond: ((id >= 50) AND (id <= 51))
3205 -> Bitmap Heap Scan on p1_c2 p1_3
3206 Recheck Cond: ((id >= 50) AND (id <= 51))
3207 Filter: (ctid = '(1,1)'::tid)
3208 -> Bitmap Index Scan on p1_c2_pkey
3209 Index Cond: ((id >= 50) AND (id <= 51))
3210 -> Bitmap Heap Scan on p1_c3 p1_4
3211 Recheck Cond: ((id >= 50) AND (id <= 51))
3212 Filter: (ctid = '(1,1)'::tid)
3213 -> Bitmap Index Scan on p1_c3_pkey
3214 Index Cond: ((id >= 50) AND (id <= 51))
3215 -> Bitmap Heap Scan on p1_c4 p1_5
3216 Recheck Cond: ((id >= 50) AND (id <= 51))
3217 Filter: (ctid = '(1,1)'::tid)
3218 -> Bitmap Index Scan on p1_c4_pkey
3219 Index Cond: ((id >= 50) AND (id <= 51))
3220 -> Bitmap Heap Scan on p1_c1_c1 p1_6
3221 Recheck Cond: ((id >= 50) AND (id <= 51))
3222 Filter: (ctid = '(1,1)'::tid)
3223 -> Bitmap Index Scan on p1_c1_c1_pkey
3224 Index Cond: ((id >= 50) AND (id <= 51))
3225 -> Bitmap Heap Scan on p1_c1_c2 p1_7
3226 Recheck Cond: ((id >= 50) AND (id <= 51))
3227 Filter: (ctid = '(1,1)'::tid)
3228 -> Bitmap Index Scan on p1_c1_c2_pkey
3229 Index Cond: ((id >= 50) AND (id <= 51))
3230 -> Bitmap Heap Scan on p1_c3_c1 p1_8
3231 Recheck Cond: ((id >= 50) AND (id <= 51))
3232 Filter: (ctid = '(1,1)'::tid)
3233 -> Bitmap Index Scan on p1_c3_c1_pkey
3234 Index Cond: ((id >= 50) AND (id <= 51))
3235 -> Bitmap Heap Scan on p1_c3_c2 p1_9
3236 Recheck Cond: ((id >= 50) AND (id <= 51))
3237 Filter: (ctid = '(1,1)'::tid)
3238 -> Bitmap Index Scan on p1_c3_c2_pkey
3239 Index Cond: ((id >= 50) AND (id <= 51))
3243 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3252 ---------------------------------------------
3254 -> Tid Scan on p1 p1_1
3255 TID Cond: (ctid = '(1,1)'::tid)
3256 Filter: ((id >= 50) AND (id <= 51))
3257 -> Tid Scan on p1_c1 p1_2
3258 TID Cond: (ctid = '(1,1)'::tid)
3259 Filter: ((id >= 50) AND (id <= 51))
3260 -> Tid Scan on p1_c2 p1_3
3261 TID Cond: (ctid = '(1,1)'::tid)
3262 Filter: ((id >= 50) AND (id <= 51))
3263 -> Tid Scan on p1_c3 p1_4
3264 TID Cond: (ctid = '(1,1)'::tid)
3265 Filter: ((id >= 50) AND (id <= 51))
3266 -> Tid Scan on p1_c4 p1_5
3267 TID Cond: (ctid = '(1,1)'::tid)
3268 Filter: ((id >= 50) AND (id <= 51))
3269 -> Tid Scan on p1_c1_c1 p1_6
3270 TID Cond: (ctid = '(1,1)'::tid)
3271 Filter: ((id >= 50) AND (id <= 51))
3272 -> Tid Scan on p1_c1_c2 p1_7
3273 TID Cond: (ctid = '(1,1)'::tid)
3274 Filter: ((id >= 50) AND (id <= 51))
3275 -> Tid Scan on p1_c3_c1 p1_8
3276 TID Cond: (ctid = '(1,1)'::tid)
3277 Filter: ((id >= 50) AND (id <= 51))
3278 -> Tid Scan on p1_c3_c2 p1_9
3279 TID Cond: (ctid = '(1,1)'::tid)
3280 Filter: ((id >= 50) AND (id <= 51))
3283 SET constraint_exclusion TO on;
3285 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3294 -----------------------------------------------------------------------
3296 -> Seq Scan on p1 p1_1
3297 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3298 -> Seq Scan on p1_c1 p1_2
3299 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3300 -> Seq Scan on p1_c1_c1 p1_3
3301 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3302 -> Seq Scan on p1_c1_c2 p1_4
3303 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3307 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3316 -------------------------------------------------------
3318 -> Index Scan using p1_pkey on p1 p1_1
3319 Index Cond: ((id >= 50) AND (id <= 51))
3320 Filter: (ctid = '(1,1)'::tid)
3321 -> Index Scan using p1_c1_pkey on p1_c1 p1_2
3322 Index Cond: ((id >= 50) AND (id <= 51))
3323 Filter: (ctid = '(1,1)'::tid)
3324 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_3
3325 Index Cond: ((id >= 50) AND (id <= 51))
3326 Filter: (ctid = '(1,1)'::tid)
3327 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_4
3328 Index Cond: ((id >= 50) AND (id <= 51))
3329 Filter: (ctid = '(1,1)'::tid)
3333 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3342 -------------------------------------------------------
3344 -> Bitmap Heap Scan on p1 p1_1
3345 Recheck Cond: ((id >= 50) AND (id <= 51))
3346 Filter: (ctid = '(1,1)'::tid)
3347 -> Bitmap Index Scan on p1_pkey
3348 Index Cond: ((id >= 50) AND (id <= 51))
3349 -> Bitmap Heap Scan on p1_c1 p1_2
3350 Recheck Cond: ((id >= 50) AND (id <= 51))
3351 Filter: (ctid = '(1,1)'::tid)
3352 -> Bitmap Index Scan on p1_c1_pkey
3353 Index Cond: ((id >= 50) AND (id <= 51))
3354 -> Bitmap Heap Scan on p1_c1_c1 p1_3
3355 Recheck Cond: ((id >= 50) AND (id <= 51))
3356 Filter: (ctid = '(1,1)'::tid)
3357 -> Bitmap Index Scan on p1_c1_c1_pkey
3358 Index Cond: ((id >= 50) AND (id <= 51))
3359 -> Bitmap Heap Scan on p1_c1_c2 p1_4
3360 Recheck Cond: ((id >= 50) AND (id <= 51))
3361 Filter: (ctid = '(1,1)'::tid)
3362 -> Bitmap Index Scan on p1_c1_c2_pkey
3363 Index Cond: ((id >= 50) AND (id <= 51))
3367 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3376 ---------------------------------------------
3378 -> Tid Scan on p1 p1_1
3379 TID Cond: (ctid = '(1,1)'::tid)
3380 Filter: ((id >= 50) AND (id <= 51))
3381 -> Tid Scan on p1_c1 p1_2
3382 TID Cond: (ctid = '(1,1)'::tid)
3383 Filter: ((id >= 50) AND (id <= 51))
3384 -> Tid Scan on p1_c1_c1 p1_3
3385 TID Cond: (ctid = '(1,1)'::tid)
3386 Filter: ((id >= 50) AND (id <= 51))
3387 -> Tid Scan on p1_c1_c2 p1_4
3388 TID Cond: (ctid = '(1,1)'::tid)
3389 Filter: ((id >= 50) AND (id <= 51))
3392 SET constraint_exclusion TO off;
3393 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3395 -----------------------------------------------------------------------------------
3397 Merge Cond: (p1.id = t1.id)
3401 -> Seq Scan on p1 p1_1
3402 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3403 -> Seq Scan on p1_c1 p1_2
3404 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3405 -> Seq Scan on p1_c2 p1_3
3406 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3407 -> Seq Scan on p1_c3 p1_4
3408 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3409 -> Seq Scan on p1_c4 p1_5
3410 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3411 -> Seq Scan on p1_c1_c1 p1_6
3412 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3413 -> Seq Scan on p1_c1_c2 p1_7
3414 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3415 -> Seq Scan on p1_c3_c1 p1_8
3416 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3417 -> Seq Scan on p1_c3_c2 p1_9
3418 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3419 -> Index Scan using t1_pkey on t1
3420 Index Cond: (id < 10)
3423 SET constraint_exclusion TO on;
3424 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;
3426 -----------------------------------------------------------------------------------
3428 Merge Cond: (p1.id = t1.id)
3432 -> Seq Scan on p1 p1_1
3433 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3434 -> Seq Scan on p1_c1 p1_2
3435 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3436 -> Seq Scan on p1_c1_c1 p1_3
3437 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3438 -> Seq Scan on p1_c1_c2 p1_4
3439 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3440 -> Index Scan using t1_pkey on t1
3441 Index Cond: (id < 10)
3444 SET constraint_exclusion TO off;
3446 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;
3455 -----------------------------------------------------------------------------------
3457 Merge Cond: (p1.id = t1.id)
3461 -> Seq Scan on p1 p1_1
3462 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3463 -> Seq Scan on p1_c1 p1_2
3464 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3465 -> Seq Scan on p1_c2 p1_3
3466 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3467 -> Seq Scan on p1_c3 p1_4
3468 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3469 -> Seq Scan on p1_c4 p1_5
3470 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3471 -> Seq Scan on p1_c1_c1 p1_6
3472 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3473 -> Seq Scan on p1_c1_c2 p1_7
3474 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3475 -> Seq Scan on p1_c3_c1 p1_8
3476 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3477 -> Seq Scan on p1_c3_c2 p1_9
3478 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3479 -> Index Scan using t1_pkey on t1
3480 Index Cond: (id < 10)
3484 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;
3493 -------------------------------------------------------------
3495 Merge Cond: (p1.id = t1.id)
3498 -> Index Scan using p1_pkey on p1 p1_1
3499 Index Cond: ((id >= 50) AND (id <= 51))
3500 Filter: (ctid = '(1,1)'::tid)
3501 -> Index Scan using p1_c1_pkey on p1_c1 p1_2
3502 Index Cond: ((id >= 50) AND (id <= 51))
3503 Filter: (ctid = '(1,1)'::tid)
3504 -> Index Scan using p1_c2_pkey on p1_c2 p1_3
3505 Index Cond: ((id >= 50) AND (id <= 51))
3506 Filter: (ctid = '(1,1)'::tid)
3507 -> Index Scan using p1_c3_pkey on p1_c3 p1_4
3508 Index Cond: ((id >= 50) AND (id <= 51))
3509 Filter: (ctid = '(1,1)'::tid)
3510 -> Index Scan using p1_c4_pkey on p1_c4 p1_5
3511 Index Cond: ((id >= 50) AND (id <= 51))
3512 Filter: (ctid = '(1,1)'::tid)
3513 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_6
3514 Index Cond: ((id >= 50) AND (id <= 51))
3515 Filter: (ctid = '(1,1)'::tid)
3516 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_7
3517 Index Cond: ((id >= 50) AND (id <= 51))
3518 Filter: (ctid = '(1,1)'::tid)
3519 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1 p1_8
3520 Index Cond: ((id >= 50) AND (id <= 51))
3521 Filter: (ctid = '(1,1)'::tid)
3522 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2 p1_9
3523 Index Cond: ((id >= 50) AND (id <= 51))
3524 Filter: (ctid = '(1,1)'::tid)
3525 -> Index Scan using t1_pkey on t1
3526 Index Cond: (id < 10)
3530 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;
3539 -------------------------------------------------------------------
3541 Merge Cond: (p1.id = t1.id)
3545 -> Bitmap Heap Scan on p1 p1_1
3546 Recheck Cond: ((id >= 50) AND (id <= 51))
3547 Filter: (ctid = '(1,1)'::tid)
3548 -> Bitmap Index Scan on p1_pkey
3549 Index Cond: ((id >= 50) AND (id <= 51))
3550 -> Bitmap Heap Scan on p1_c1 p1_2
3551 Recheck Cond: ((id >= 50) AND (id <= 51))
3552 Filter: (ctid = '(1,1)'::tid)
3553 -> Bitmap Index Scan on p1_c1_pkey
3554 Index Cond: ((id >= 50) AND (id <= 51))
3555 -> Bitmap Heap Scan on p1_c2 p1_3
3556 Recheck Cond: ((id >= 50) AND (id <= 51))
3557 Filter: (ctid = '(1,1)'::tid)
3558 -> Bitmap Index Scan on p1_c2_pkey
3559 Index Cond: ((id >= 50) AND (id <= 51))
3560 -> Bitmap Heap Scan on p1_c3 p1_4
3561 Recheck Cond: ((id >= 50) AND (id <= 51))
3562 Filter: (ctid = '(1,1)'::tid)
3563 -> Bitmap Index Scan on p1_c3_pkey
3564 Index Cond: ((id >= 50) AND (id <= 51))
3565 -> Bitmap Heap Scan on p1_c4 p1_5
3566 Recheck Cond: ((id >= 50) AND (id <= 51))
3567 Filter: (ctid = '(1,1)'::tid)
3568 -> Bitmap Index Scan on p1_c4_pkey
3569 Index Cond: ((id >= 50) AND (id <= 51))
3570 -> Bitmap Heap Scan on p1_c1_c1 p1_6
3571 Recheck Cond: ((id >= 50) AND (id <= 51))
3572 Filter: (ctid = '(1,1)'::tid)
3573 -> Bitmap Index Scan on p1_c1_c1_pkey
3574 Index Cond: ((id >= 50) AND (id <= 51))
3575 -> Bitmap Heap Scan on p1_c1_c2 p1_7
3576 Recheck Cond: ((id >= 50) AND (id <= 51))
3577 Filter: (ctid = '(1,1)'::tid)
3578 -> Bitmap Index Scan on p1_c1_c2_pkey
3579 Index Cond: ((id >= 50) AND (id <= 51))
3580 -> Bitmap Heap Scan on p1_c3_c1 p1_8
3581 Recheck Cond: ((id >= 50) AND (id <= 51))
3582 Filter: (ctid = '(1,1)'::tid)
3583 -> Bitmap Index Scan on p1_c3_c1_pkey
3584 Index Cond: ((id >= 50) AND (id <= 51))
3585 -> Bitmap Heap Scan on p1_c3_c2 p1_9
3586 Recheck Cond: ((id >= 50) AND (id <= 51))
3587 Filter: (ctid = '(1,1)'::tid)
3588 -> Bitmap Index Scan on p1_c3_c2_pkey
3589 Index Cond: ((id >= 50) AND (id <= 51))
3590 -> Index Scan using t1_pkey on t1
3591 Index Cond: (id < 10)
3595 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;
3604 ---------------------------------------------------------
3606 Merge Cond: (p1.id = t1.id)
3610 -> Tid Scan on p1 p1_1
3611 TID Cond: (ctid = '(1,1)'::tid)
3612 Filter: ((id >= 50) AND (id <= 51))
3613 -> Tid Scan on p1_c1 p1_2
3614 TID Cond: (ctid = '(1,1)'::tid)
3615 Filter: ((id >= 50) AND (id <= 51))
3616 -> Tid Scan on p1_c2 p1_3
3617 TID Cond: (ctid = '(1,1)'::tid)
3618 Filter: ((id >= 50) AND (id <= 51))
3619 -> Tid Scan on p1_c3 p1_4
3620 TID Cond: (ctid = '(1,1)'::tid)
3621 Filter: ((id >= 50) AND (id <= 51))
3622 -> Tid Scan on p1_c4 p1_5
3623 TID Cond: (ctid = '(1,1)'::tid)
3624 Filter: ((id >= 50) AND (id <= 51))
3625 -> Tid Scan on p1_c1_c1 p1_6
3626 TID Cond: (ctid = '(1,1)'::tid)
3627 Filter: ((id >= 50) AND (id <= 51))
3628 -> Tid Scan on p1_c1_c2 p1_7
3629 TID Cond: (ctid = '(1,1)'::tid)
3630 Filter: ((id >= 50) AND (id <= 51))
3631 -> Tid Scan on p1_c3_c1 p1_8
3632 TID Cond: (ctid = '(1,1)'::tid)
3633 Filter: ((id >= 50) AND (id <= 51))
3634 -> Tid Scan on p1_c3_c2 p1_9
3635 TID Cond: (ctid = '(1,1)'::tid)
3636 Filter: ((id >= 50) AND (id <= 51))
3637 -> Index Scan using t1_pkey on t1
3638 Index Cond: (id < 10)
3641 /*+NestLoop(p1 t1)*/
3642 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;
3651 -----------------------------------------------------------------------------
3653 Join Filter: (p1.id = t1.id)
3655 -> Seq Scan on p1 p1_1
3656 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3657 -> Seq Scan on p1_c1 p1_2
3658 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3659 -> Seq Scan on p1_c2 p1_3
3660 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3661 -> Seq Scan on p1_c3 p1_4
3662 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3663 -> Seq Scan on p1_c4 p1_5
3664 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3665 -> Seq Scan on p1_c1_c1 p1_6
3666 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3667 -> Seq Scan on p1_c1_c2 p1_7
3668 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3669 -> Seq Scan on p1_c3_c1 p1_8
3670 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3671 -> Seq Scan on p1_c3_c2 p1_9
3672 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3674 -> Index Scan using t1_pkey on t1
3675 Index Cond: (id < 10)
3678 /*+MergeJoin(p1 t1)*/
3679 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;
3688 -----------------------------------------------------------------------------------
3690 Merge Cond: (p1.id = t1.id)
3694 -> Seq Scan on p1 p1_1
3695 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3696 -> Seq Scan on p1_c1 p1_2
3697 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3698 -> Seq Scan on p1_c2 p1_3
3699 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3700 -> Seq Scan on p1_c3 p1_4
3701 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3702 -> Seq Scan on p1_c4 p1_5
3703 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3704 -> Seq Scan on p1_c1_c1 p1_6
3705 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3706 -> Seq Scan on p1_c1_c2 p1_7
3707 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3708 -> Seq Scan on p1_c3_c1 p1_8
3709 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3710 -> Seq Scan on p1_c3_c2 p1_9
3711 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3712 -> Index Scan using t1_pkey on t1
3713 Index Cond: (id < 10)
3716 /*+HashJoin(p1 t1)*/
3717 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;
3726 -----------------------------------------------------------------------------
3728 Hash Cond: (p1.id = t1.id)
3730 -> Seq Scan on p1 p1_1
3731 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3732 -> Seq Scan on p1_c1 p1_2
3733 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3734 -> Seq Scan on p1_c2 p1_3
3735 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3736 -> Seq Scan on p1_c3 p1_4
3737 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3738 -> Seq Scan on p1_c4 p1_5
3739 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3740 -> Seq Scan on p1_c1_c1 p1_6
3741 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3742 -> Seq Scan on p1_c1_c2 p1_7
3743 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3744 -> Seq Scan on p1_c3_c1 p1_8
3745 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3746 -> Seq Scan on p1_c3_c2 p1_9
3747 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3749 -> Index Scan using t1_pkey on t1
3750 Index Cond: (id < 10)
3753 SET constraint_exclusion TO on;
3755 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;
3764 -----------------------------------------------------------------------------------
3766 Merge Cond: (p1.id = t1.id)
3770 -> Seq Scan on p1 p1_1
3771 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3772 -> Seq Scan on p1_c1 p1_2
3773 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3774 -> Seq Scan on p1_c1_c1 p1_3
3775 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3776 -> Seq Scan on p1_c1_c2 p1_4
3777 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3778 -> Index Scan using t1_pkey on t1
3779 Index Cond: (id < 10)
3783 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3792 -------------------------------------------------------------
3794 Merge Cond: (p1.id = t1.id)
3797 -> Index Scan using p1_pkey on p1 p1_1
3798 Index Cond: ((id >= 50) AND (id <= 51))
3799 Filter: (ctid = '(1,1)'::tid)
3800 -> Index Scan using p1_c1_pkey on p1_c1 p1_2
3801 Index Cond: ((id >= 50) AND (id <= 51))
3802 Filter: (ctid = '(1,1)'::tid)
3803 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_3
3804 Index Cond: ((id >= 50) AND (id <= 51))
3805 Filter: (ctid = '(1,1)'::tid)
3806 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_4
3807 Index Cond: ((id >= 50) AND (id <= 51))
3808 Filter: (ctid = '(1,1)'::tid)
3809 -> Index Scan using t1_pkey on t1
3810 Index Cond: (id < 10)
3814 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;
3823 -------------------------------------------------------------------
3825 Merge Cond: (p1.id = t1.id)
3829 -> Bitmap Heap Scan on p1 p1_1
3830 Recheck Cond: ((id >= 50) AND (id <= 51))
3831 Filter: (ctid = '(1,1)'::tid)
3832 -> Bitmap Index Scan on p1_pkey
3833 Index Cond: ((id >= 50) AND (id <= 51))
3834 -> Bitmap Heap Scan on p1_c1 p1_2
3835 Recheck Cond: ((id >= 50) AND (id <= 51))
3836 Filter: (ctid = '(1,1)'::tid)
3837 -> Bitmap Index Scan on p1_c1_pkey
3838 Index Cond: ((id >= 50) AND (id <= 51))
3839 -> Bitmap Heap Scan on p1_c1_c1 p1_3
3840 Recheck Cond: ((id >= 50) AND (id <= 51))
3841 Filter: (ctid = '(1,1)'::tid)
3842 -> Bitmap Index Scan on p1_c1_c1_pkey
3843 Index Cond: ((id >= 50) AND (id <= 51))
3844 -> Bitmap Heap Scan on p1_c1_c2 p1_4
3845 Recheck Cond: ((id >= 50) AND (id <= 51))
3846 Filter: (ctid = '(1,1)'::tid)
3847 -> Bitmap Index Scan on p1_c1_c2_pkey
3848 Index Cond: ((id >= 50) AND (id <= 51))
3849 -> Index Scan using t1_pkey on t1
3850 Index Cond: (id < 10)
3854 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;
3863 ---------------------------------------------------------
3865 Merge Cond: (p1.id = t1.id)
3869 -> Tid Scan on p1 p1_1
3870 TID Cond: (ctid = '(1,1)'::tid)
3871 Filter: ((id >= 50) AND (id <= 51))
3872 -> Tid Scan on p1_c1 p1_2
3873 TID Cond: (ctid = '(1,1)'::tid)
3874 Filter: ((id >= 50) AND (id <= 51))
3875 -> Tid Scan on p1_c1_c1 p1_3
3876 TID Cond: (ctid = '(1,1)'::tid)
3877 Filter: ((id >= 50) AND (id <= 51))
3878 -> Tid Scan on p1_c1_c2 p1_4
3879 TID Cond: (ctid = '(1,1)'::tid)
3880 Filter: ((id >= 50) AND (id <= 51))
3881 -> Index Scan using t1_pkey on t1
3882 Index Cond: (id < 10)
3885 /*+NestLoop(p1 t1)*/
3886 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;
3895 -----------------------------------------------------------------------------------
3897 Join Filter: (p1.id = t1.id)
3898 -> Index Scan using t1_pkey on t1
3899 Index Cond: (id < 10)
3902 -> Seq Scan on p1 p1_1
3903 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3904 -> Seq Scan on p1_c1 p1_2
3905 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3906 -> Seq Scan on p1_c1_c1 p1_3
3907 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3908 -> Seq Scan on p1_c1_c2 p1_4
3909 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3912 /*+MergeJoin(p1 t1)*/
3913 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;
3922 -----------------------------------------------------------------------------------
3924 Merge Cond: (p1.id = t1.id)
3928 -> Seq Scan on p1 p1_1
3929 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3930 -> Seq Scan on p1_c1 p1_2
3931 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3932 -> Seq Scan on p1_c1_c1 p1_3
3933 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3934 -> Seq Scan on p1_c1_c2 p1_4
3935 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3936 -> Index Scan using t1_pkey on t1
3937 Index Cond: (id < 10)
3940 /*+HashJoin(p1 t1)*/
3941 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;
3950 -----------------------------------------------------------------------------------
3952 Hash Cond: (t1.id = p1.id)
3953 -> Index Scan using t1_pkey on t1
3954 Index Cond: (id < 10)
3957 -> Seq Scan on p1 p1_1
3958 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3959 -> Seq Scan on p1_c1 p1_2
3960 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3961 -> Seq Scan on p1_c1_c1 p1_3
3962 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3963 -> Seq Scan on p1_c1_c2 p1_4
3964 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3967 SET constraint_exclusion TO off;
3968 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3970 -----------------------------------------------------------------
3972 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3975 SET constraint_exclusion TO on;
3976 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3978 -----------------------------------------------------------------
3980 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3983 SET constraint_exclusion TO off;
3985 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3994 -----------------------------------------------------------------
3996 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4000 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4009 -------------------------------------------
4010 Index Scan using p1_pkey on p1
4011 Index Cond: ((id >= 50) AND (id <= 51))
4012 Filter: (ctid = '(1,1)'::tid)
4016 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4025 -------------------------------------------------
4026 Bitmap Heap Scan on p1
4027 Recheck Cond: ((id >= 50) AND (id <= 51))
4028 Filter: (ctid = '(1,1)'::tid)
4029 -> Bitmap Index Scan on p1_pkey
4030 Index Cond: ((id >= 50) AND (id <= 51))
4034 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4043 ---------------------------------------
4045 TID Cond: (ctid = '(1,1)'::tid)
4046 Filter: ((id >= 50) AND (id <= 51))
4049 /*+NestLoop(p1 t1)*/
4050 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;
4059 -----------------------------------------------------------------------
4061 Join Filter: (p1.id = t1.id)
4063 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4064 -> Index Scan using t1_pkey on t1
4065 Index Cond: (id < 10)
4068 /*+MergeJoin(p1 t1)*/
4069 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;
4078 -----------------------------------------------------------------------------
4080 Merge Cond: (p1.id = t1.id)
4084 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4085 -> Index Scan using t1_pkey on t1
4086 Index Cond: (id < 10)
4089 /*+HashJoin(p1 t1)*/
4090 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;
4099 -----------------------------------------------------------------------------
4101 Hash Cond: (t1.id = p1.id)
4102 -> Index Scan using t1_pkey on t1
4103 Index Cond: (id < 10)
4106 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4109 SET constraint_exclusion TO on;
4111 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4120 -----------------------------------------------------------------
4122 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4126 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4135 -------------------------------------------
4136 Index Scan using p1_pkey on p1
4137 Index Cond: ((id >= 50) AND (id <= 51))
4138 Filter: (ctid = '(1,1)'::tid)
4142 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4151 -------------------------------------------------
4152 Bitmap Heap Scan on p1
4153 Recheck Cond: ((id >= 50) AND (id <= 51))
4154 Filter: (ctid = '(1,1)'::tid)
4155 -> Bitmap Index Scan on p1_pkey
4156 Index Cond: ((id >= 50) AND (id <= 51))
4160 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4169 ---------------------------------------
4171 TID Cond: (ctid = '(1,1)'::tid)
4172 Filter: ((id >= 50) AND (id <= 51))
4175 /*+NestLoop(p1 t1)*/
4176 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;
4185 -----------------------------------------------------------------------
4187 Join Filter: (p1.id = t1.id)
4189 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4190 -> Index Scan using t1_pkey on t1
4191 Index Cond: (id < 10)
4194 /*+MergeJoin(p1 t1)*/
4195 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;
4204 -----------------------------------------------------------------------------
4206 Merge Cond: (p1.id = t1.id)
4210 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4211 -> Index Scan using t1_pkey on t1
4212 Index Cond: (id < 10)
4215 /*+HashJoin(p1 t1)*/
4216 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;
4225 -----------------------------------------------------------------------------
4227 Hash Cond: (t1.id = p1.id)
4228 -> Index Scan using t1_pkey on t1
4229 Index Cond: (id < 10)
4232 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4235 SET constraint_exclusion TO off;
4236 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;
4238 -----------------------------------------------------------------------
4240 Join Filter: (p1.id = t1.id)
4242 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4243 -> Index Scan using t1_pkey on t1
4244 Index Cond: (id < 10)
4247 SET constraint_exclusion TO on;
4248 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;
4250 -----------------------------------------------------------------------
4252 Join Filter: (p1.id = t1.id)
4254 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4255 -> Index Scan using t1_pkey on t1
4256 Index Cond: (id < 10)
4259 SET constraint_exclusion TO off;
4261 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4270 -----------------------------------------------------------------------
4272 Join Filter: (p1.id = t1.id)
4274 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4275 -> Index Scan using t1_pkey on t1
4276 Index Cond: (id < 10)
4280 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;
4289 -------------------------------------------------
4291 Merge Cond: (p1.id = t1.id)
4292 -> Index Scan using p1_pkey on p1
4293 Index Cond: ((id >= 50) AND (id <= 51))
4294 Filter: (ctid = '(1,1)'::tid)
4295 -> Index Scan using t1_pkey on t1
4296 Index Cond: (id < 10)
4300 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;
4309 -------------------------------------------------------
4311 Join Filter: (p1.id = t1.id)
4312 -> Bitmap Heap Scan on p1
4313 Recheck Cond: ((id >= 50) AND (id <= 51))
4314 Filter: (ctid = '(1,1)'::tid)
4315 -> Bitmap Index Scan on p1_pkey
4316 Index Cond: ((id >= 50) AND (id <= 51))
4317 -> Index Scan using t1_pkey on t1
4318 Index Cond: (id < 10)
4322 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;
4331 ---------------------------------------------
4333 Join Filter: (p1.id = t1.id)
4335 TID Cond: (ctid = '(1,1)'::tid)
4336 Filter: ((id >= 50) AND (id <= 51))
4337 -> Index Scan using t1_pkey on t1
4338 Index Cond: (id < 10)
4341 SET constraint_exclusion TO on;
4343 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;
4352 -----------------------------------------------------------------------
4354 Join Filter: (p1.id = t1.id)
4356 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4357 -> Index Scan using t1_pkey on t1
4358 Index Cond: (id < 10)
4362 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;
4371 -------------------------------------------------
4373 Merge Cond: (p1.id = t1.id)
4374 -> Index Scan using p1_pkey on p1
4375 Index Cond: ((id >= 50) AND (id <= 51))
4376 Filter: (ctid = '(1,1)'::tid)
4377 -> Index Scan using t1_pkey on t1
4378 Index Cond: (id < 10)
4382 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;
4391 -------------------------------------------------------
4393 Join Filter: (p1.id = t1.id)
4394 -> Bitmap Heap Scan on p1
4395 Recheck Cond: ((id >= 50) AND (id <= 51))
4396 Filter: (ctid = '(1,1)'::tid)
4397 -> Bitmap Index Scan on p1_pkey
4398 Index Cond: ((id >= 50) AND (id <= 51))
4399 -> Index Scan using t1_pkey on t1
4400 Index Cond: (id < 10)
4404 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;
4413 ---------------------------------------------
4415 Join Filter: (p1.id = t1.id)
4417 TID Cond: (ctid = '(1,1)'::tid)
4418 Filter: ((id >= 50) AND (id <= 51))
4419 -> Index Scan using t1_pkey on t1
4420 Index Cond: (id < 10)
4424 /*+SeqScan("""t1 ) ")IndexScan("t 2 """)HashJoin("""t1 ) "T3"t 2 """)Leading("""t1 ) "T3"t 2 """)Set(application_name"a a a"" a A")*/
4425 EXPLAIN (COSTS false) SELECT * FROM t1 """t1 ) ", t2 "t 2 """, t3 "T3" WHERE """t1 ) ".id = "t 2 """.id AND """t1 ) ".id = "T3".id;
4430 HashJoin("""t1 ) " T3 "t 2 """)
4431 Leading("""t1 ) " T3 "t 2 """)
4432 Set(application_name "a a a"" a A")
4438 ---------------------------------------------------------
4440 Hash Cond: ("t 2 """.id = """t1 ) ".id)
4441 -> Index Scan using t2_pkey on t2 "t 2 """
4444 Hash Cond: ("""t1 ) ".id = "T3".id)
4445 -> Seq Scan on t1 """t1 ) "
4447 -> Seq Scan on t3 "T3"
4450 -- duplicate hint test
4451 /*+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)*/
4452 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
4453 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)"
4454 DETAIL: Conflict scan method hint.
4455 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)"
4456 DETAIL: Conflict scan method hint.
4457 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)"
4458 DETAIL: Conflict scan method hint.
4459 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)"
4460 DETAIL: Conflict scan method hint.
4461 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)"
4462 DETAIL: Conflict scan method hint.
4463 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)"
4464 DETAIL: Conflict scan method hint.
4465 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)"
4466 DETAIL: Conflict join method hint.
4467 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)"
4468 DETAIL: Conflict join method hint.
4469 INFO: pg_hint_plan: hint syntax error at or near "Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4470 DETAIL: Conflict set hint.
4471 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)"
4472 DETAIL: Conflict leading hint.
4479 Set(enable_mergejoin on)
4480 Set(enable_seqscan on)
4492 Set(enable_seqscan off)
4496 -----------------------------------------------
4498 Merge Cond: (t1.id = t2.id)
4502 TID Cond: (ctid = '(1,1)'::tid)
4506 TID Cond: (ctid = '(1,1)'::tid)
4509 -- sub query Leading hint test
4510 SET from_collapse_limit TO 100;
4511 SET geqo_threshold TO 100;
4512 EXPLAIN (COSTS false)
4514 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
4517 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
4518 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4519 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
4520 ) 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 = (
4521 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
4524 ------------------------------------------------------------------------------
4526 InitPlan 1 (returns $0)
4529 Merge Cond: (t1_2.id = t3_2.id)
4531 Merge Cond: (t1_2.id = t2_2.id)
4532 -> Index Only Scan using t1_pkey on t1 t1_2
4533 -> Index Only Scan using t2_pkey on t2 t2_2
4536 -> Seq Scan on t3 t3_2
4537 InitPlan 2 (returns $1)
4540 Merge Cond: (t1_4.id = t3_4.id)
4542 Merge Cond: (t1_4.id = t2_4.id)
4543 -> Index Only Scan using t1_pkey on t1 t1_4
4544 -> Index Only Scan using t2_pkey on t2 t2_4
4547 -> Seq Scan on t3 t3_4
4553 -> Index Only Scan using t1_pkey on t1 t1_1
4554 Index Cond: (id = $1)
4555 -> Index Only Scan using t2_pkey on t2 t2_1
4556 Index Cond: (id = $1)
4557 -> Seq Scan on t3 t3_1
4559 -> Index Only Scan using t1_pkey on t1 t1_3
4560 Index Cond: (id = $1)
4561 -> Index Only Scan using t2_pkey on t2 t2_3
4562 Index Cond: (id = $1)
4563 -> Seq Scan on t3 t3_3
4566 Filter: (max(t1_5.id) = $1)
4568 Merge Cond: (t1_5.id = t3_5.id)
4570 Merge Cond: (t1_5.id = t2_5.id)
4571 -> Index Only Scan using t1_pkey on t1 t1_5
4572 -> Index Only Scan using t2_pkey on t2 t2_5
4575 -> Seq Scan on t3 t3_5
4578 /*+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)*/
4579 EXPLAIN (COSTS false)
4581 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
4584 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
4585 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4586 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
4587 ) 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 = (
4588 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
4594 MergeJoin(t1_3 t3_3)
4602 ------------------------------------------------------------------------------
4604 InitPlan 1 (returns $1)
4607 Merge Cond: (t1_2.id = t3_2.id)
4609 -> Index Only Scan using t2_pkey on t2 t2_2
4610 -> Index Only Scan using t1_pkey on t1 t1_2
4611 Index Cond: (id = t2_2.id)
4614 -> Seq Scan on t3 t3_2
4615 InitPlan 2 (returns $3)
4618 Merge Cond: (t1_4.id = t3_4.id)
4620 -> Index Only Scan using t2_pkey on t2 t2_4
4621 -> Index Only Scan using t1_pkey on t1 t1_4
4622 Index Cond: (id = t2_4.id)
4625 -> Seq Scan on t3 t3_4
4631 -> Index Only Scan using t1_pkey on t1 t1_1
4632 Index Cond: (id = $3)
4633 -> Index Only Scan using t2_pkey on t2 t2_1
4634 Index Cond: (id = $3)
4635 -> Seq Scan on t3 t3_1
4637 -> Index Only Scan using t1_pkey on t1 t1_3
4638 Index Cond: (id = $3)
4639 -> Index Only Scan using t2_pkey on t2 t2_3
4640 Index Cond: (id = $3)
4641 -> Seq Scan on t3 t3_3
4644 Filter: (max(t1_5.id) = $3)
4646 Merge Cond: (t1_5.id = t3_5.id)
4648 -> Index Only Scan using t2_pkey on t2 t2_5
4649 -> Index Only Scan using t1_pkey on t1 t1_5
4650 Index Cond: (id = t2_5.id)
4653 -> Seq Scan on t3 t3_5
4656 /*+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)*/
4657 EXPLAIN (COSTS false)
4659 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
4662 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
4663 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4664 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
4665 ) 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 = (
4666 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
4672 MergeJoin(t1_3 t3_3)
4676 Leading(a t1_1 t1_2 t1_4 t1_5)
4681 ------------------------------------------------------------------------------
4683 InitPlan 1 (returns $1)
4686 Merge Cond: (t1_2.id = t3_2.id)
4688 -> Index Only Scan using t2_pkey on t2 t2_2
4689 -> Index Only Scan using t1_pkey on t1 t1_2
4690 Index Cond: (id = t2_2.id)
4693 -> Seq Scan on t3 t3_2
4694 InitPlan 2 (returns $3)
4697 Merge Cond: (t1_4.id = t3_4.id)
4699 -> Index Only Scan using t2_pkey on t2 t2_4
4700 -> Index Only Scan using t1_pkey on t1 t1_4
4701 Index Cond: (id = t2_4.id)
4704 -> Seq Scan on t3 t3_4
4710 -> Index Only Scan using t1_pkey on t1 t1_1
4711 Index Cond: (id = $3)
4712 -> Index Only Scan using t2_pkey on t2 t2_1
4713 Index Cond: (id = $3)
4714 -> Seq Scan on t3 t3_1
4716 -> Index Only Scan using t1_pkey on t1 t1_3
4717 Index Cond: (id = $3)
4718 -> Index Only Scan using t2_pkey on t2 t2_3
4719 Index Cond: (id = $3)
4720 -> Seq Scan on t3 t3_3
4723 Filter: (max(t1_5.id) = $3)
4725 Merge Cond: (t1_5.id = t3_5.id)
4727 -> Index Only Scan using t2_pkey on t2 t2_5
4728 -> Index Only Scan using t1_pkey on t1 t1_5
4729 Index Cond: (id = t2_5.id)
4732 -> Seq Scan on t3 t3_5
4735 /*+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)*/
4736 EXPLAIN (COSTS false)
4738 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
4741 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
4742 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4743 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
4744 ) 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 = (
4745 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
4751 MergeJoin(t1_3 t3_3)
4755 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)
4760 ------------------------------------------------------------------------------
4762 InitPlan 1 (returns $1)
4765 Merge Cond: (t1_2.id = t3_2.id)
4767 -> Index Only Scan using t2_pkey on t2 t2_2
4768 -> Index Only Scan using t1_pkey on t1 t1_2
4769 Index Cond: (id = t2_2.id)
4772 -> Seq Scan on t3 t3_2
4773 InitPlan 2 (returns $3)
4776 Merge Cond: (t1_4.id = t3_4.id)
4778 -> Index Only Scan using t2_pkey on t2 t2_4
4779 -> Index Only Scan using t1_pkey on t1 t1_4
4780 Index Cond: (id = t2_4.id)
4783 -> Seq Scan on t3 t3_4
4789 -> Index Only Scan using t1_pkey on t1 t1_1
4790 Index Cond: (id = $3)
4791 -> Index Only Scan using t2_pkey on t2 t2_1
4792 Index Cond: (id = $3)
4793 -> Seq Scan on t3 t3_1
4795 -> Index Only Scan using t1_pkey on t1 t1_3
4796 Index Cond: (id = $3)
4797 -> Index Only Scan using t2_pkey on t2 t2_3
4798 Index Cond: (id = $3)
4799 -> Seq Scan on t3 t3_3
4802 Filter: (max(t1_5.id) = $3)
4804 Merge Cond: (t1_5.id = t3_5.id)
4806 -> Index Only Scan using t2_pkey on t2 t2_5
4807 -> Index Only Scan using t1_pkey on t1 t1_5
4808 Index Cond: (id = t2_5.id)
4811 -> Seq Scan on t3 t3_5
4814 /*+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)*/
4815 EXPLAIN (COSTS false)
4817 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
4820 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
4821 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4822 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
4823 ) 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 = (
4824 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
4828 Leading(t3_5 t2_5 t1_5)
4829 Leading(t3_2 t2_2 t1_2)
4830 Leading(t3_4 t2_4 t1_4)
4831 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
4835 MergeJoin(t1_3 t3_3)
4842 ------------------------------------------------------------------------------------------------
4844 InitPlan 1 (returns $0)
4847 Merge Cond: (t2_2.id = t1_2.id)
4849 Merge Cond: (t2_2.id = t3_2.id)
4850 -> Index Only Scan using t2_pkey on t2 t2_2
4853 -> Seq Scan on t3 t3_2
4854 -> Index Only Scan using t1_pkey on t1 t1_2
4855 InitPlan 2 (returns $1)
4858 Merge Cond: (t2_4.id = t1_4.id)
4860 Merge Cond: (t2_4.id = t3_4.id)
4861 -> Index Only Scan using t2_pkey on t2 t2_4
4864 -> Seq Scan on t3 t3_4
4865 -> Index Only Scan using t1_pkey on t1 t1_4
4871 -> Seq Scan on t3 t3_3
4874 Filter: (max(t1_5.id) = $1)
4876 Merge Cond: (t2_5.id = t1_5.id)
4878 Merge Cond: (t2_5.id = t3_5.id)
4879 -> Index Only Scan using t2_pkey on t2 t2_5
4882 -> Seq Scan on t3 t3_5
4883 -> Index Only Scan using t1_pkey on t1 t1_5
4884 -> Index Only Scan using t2_pkey on t2 t2_3
4885 Index Cond: (id = $1)
4886 -> Index Only Scan using t1_pkey on t1 t1_3
4887 Index Cond: (id = $1)
4888 -> Seq Scan on t3 t3_1
4890 -> Index Only Scan using t2_pkey on t2 t2_1
4891 Index Cond: (id = $1)
4892 -> Index Only Scan using t1_pkey on t1 t1_1
4893 Index Cond: (id = $1)
4896 SET from_collapse_limit TO 1;
4897 EXPLAIN (COSTS false)
4899 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
4902 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
4903 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4904 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
4905 ) 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 = (
4906 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
4909 --------------------------------------------------------------------
4911 InitPlan 1 (returns $0)
4914 Merge Cond: (t1_2.id = t3_2.id)
4916 Merge Cond: (t1_2.id = t2_2.id)
4917 -> Index Only Scan using t1_pkey on t1 t1_2
4918 -> Index Only Scan using t2_pkey on t2 t2_2
4921 -> Seq Scan on t3 t3_2
4922 InitPlan 2 (returns $1)
4925 Merge Cond: (t1_4.id = t3_4.id)
4927 Merge Cond: (t1_4.id = t2_4.id)
4928 -> Index Only Scan using t1_pkey on t1 t1_4
4929 -> Index Only Scan using t2_pkey on t2 t2_4
4932 -> Seq Scan on t3 t3_4
4936 -> Index Only Scan using t1_pkey on t1 t1_1
4937 Index Cond: (id = $1)
4938 -> Index Only Scan using t2_pkey on t2 t2_1
4939 Index Cond: (id = $1)
4940 -> Seq Scan on t3 t3_1
4944 -> Index Only Scan using t1_pkey on t1 t1_3
4945 Index Cond: (id = $1)
4946 -> Index Only Scan using t2_pkey on t2 t2_3
4947 Index Cond: (id = $1)
4948 -> Seq Scan on t3 t3_3
4951 Filter: (max(t1_5.id) = $1)
4953 Merge Cond: (t1_5.id = t3_5.id)
4955 Merge Cond: (t1_5.id = t2_5.id)
4956 -> Index Only Scan using t1_pkey on t1 t1_5
4957 -> Index Only Scan using t2_pkey on t2 t2_5
4960 -> Seq Scan on t3 t3_5
4963 /*+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)*/
4964 EXPLAIN (COSTS false)
4966 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
4969 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
4970 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4971 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
4972 ) 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 = (
4973 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
4979 MergeJoin(t1_3 t3_3)
4987 --------------------------------------------------------------------
4989 InitPlan 1 (returns $1)
4992 Merge Cond: (t1_2.id = t3_2.id)
4994 -> Index Only Scan using t2_pkey on t2 t2_2
4995 -> Index Only Scan using t1_pkey on t1 t1_2
4996 Index Cond: (id = t2_2.id)
4999 -> Seq Scan on t3 t3_2
5000 InitPlan 2 (returns $3)
5003 Merge Cond: (t1_4.id = t3_4.id)
5005 -> Index Only Scan using t2_pkey on t2 t2_4
5006 -> Index Only Scan using t1_pkey on t1 t1_4
5007 Index Cond: (id = t2_4.id)
5010 -> Seq Scan on t3 t3_4
5014 -> Index Only Scan using t1_pkey on t1 t1_1
5015 Index Cond: (id = $3)
5016 -> Index Only Scan using t2_pkey on t2 t2_1
5017 Index Cond: (id = $3)
5018 -> Seq Scan on t3 t3_1
5022 -> Index Only Scan using t1_pkey on t1 t1_3
5023 Index Cond: (id = $3)
5024 -> Index Only Scan using t2_pkey on t2 t2_3
5025 Index Cond: (id = $3)
5026 -> Seq Scan on t3 t3_3
5029 Filter: (max(t1_5.id) = $3)
5031 Merge Cond: (t1_5.id = t3_5.id)
5033 -> Index Only Scan using t2_pkey on t2 t2_5
5034 -> Index Only Scan using t1_pkey on t1 t1_5
5035 Index Cond: (id = t2_5.id)
5038 -> Seq Scan on t3 t3_5
5041 /*+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)*/
5042 EXPLAIN (COSTS false)
5044 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
5047 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
5048 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5049 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
5050 ) 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 = (
5051 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
5057 MergeJoin(t1_3 t3_3)
5061 Leading(a t1_1 t1_2 t1_4 t1_5)
5066 --------------------------------------------------------------------
5068 InitPlan 1 (returns $1)
5071 Merge Cond: (t1_2.id = t3_2.id)
5073 -> Index Only Scan using t2_pkey on t2 t2_2
5074 -> Index Only Scan using t1_pkey on t1 t1_2
5075 Index Cond: (id = t2_2.id)
5078 -> Seq Scan on t3 t3_2
5079 InitPlan 2 (returns $3)
5082 Merge Cond: (t1_4.id = t3_4.id)
5084 -> Index Only Scan using t2_pkey on t2 t2_4
5085 -> Index Only Scan using t1_pkey on t1 t1_4
5086 Index Cond: (id = t2_4.id)
5089 -> Seq Scan on t3 t3_4
5093 -> Index Only Scan using t1_pkey on t1 t1_1
5094 Index Cond: (id = $3)
5095 -> Index Only Scan using t2_pkey on t2 t2_1
5096 Index Cond: (id = $3)
5097 -> Seq Scan on t3 t3_1
5101 -> Index Only Scan using t1_pkey on t1 t1_3
5102 Index Cond: (id = $3)
5103 -> Index Only Scan using t2_pkey on t2 t2_3
5104 Index Cond: (id = $3)
5105 -> Seq Scan on t3 t3_3
5108 Filter: (max(t1_5.id) = $3)
5110 Merge Cond: (t1_5.id = t3_5.id)
5112 -> Index Only Scan using t2_pkey on t2 t2_5
5113 -> Index Only Scan using t1_pkey on t1 t1_5
5114 Index Cond: (id = t2_5.id)
5117 -> Seq Scan on t3 t3_5
5120 /*+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)*/
5121 EXPLAIN (COSTS false)
5123 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
5126 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
5127 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5128 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
5129 ) 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 = (
5130 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
5136 MergeJoin(t1_3 t3_3)
5140 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)
5145 --------------------------------------------------------------------
5147 InitPlan 1 (returns $1)
5150 Merge Cond: (t1_2.id = t3_2.id)
5152 -> Index Only Scan using t2_pkey on t2 t2_2
5153 -> Index Only Scan using t1_pkey on t1 t1_2
5154 Index Cond: (id = t2_2.id)
5157 -> Seq Scan on t3 t3_2
5158 InitPlan 2 (returns $3)
5161 Merge Cond: (t1_4.id = t3_4.id)
5163 -> Index Only Scan using t2_pkey on t2 t2_4
5164 -> Index Only Scan using t1_pkey on t1 t1_4
5165 Index Cond: (id = t2_4.id)
5168 -> Seq Scan on t3 t3_4
5172 -> Index Only Scan using t1_pkey on t1 t1_1
5173 Index Cond: (id = $3)
5174 -> Index Only Scan using t2_pkey on t2 t2_1
5175 Index Cond: (id = $3)
5176 -> Seq Scan on t3 t3_1
5180 -> Index Only Scan using t1_pkey on t1 t1_3
5181 Index Cond: (id = $3)
5182 -> Index Only Scan using t2_pkey on t2 t2_3
5183 Index Cond: (id = $3)
5184 -> Seq Scan on t3 t3_3
5187 Filter: (max(t1_5.id) = $3)
5189 Merge Cond: (t1_5.id = t3_5.id)
5191 -> Index Only Scan using t2_pkey on t2 t2_5
5192 -> Index Only Scan using t1_pkey on t1 t1_5
5193 Index Cond: (id = t2_5.id)
5196 -> Seq Scan on t3 t3_5
5199 /*+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)*/
5200 EXPLAIN (COSTS false)
5202 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
5205 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
5206 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5207 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
5208 ) 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 = (
5209 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
5213 MergeJoin(t1_3 t3_3)
5214 Leading(t3_5 t2_5 t1_5)
5215 Leading(t3_2 t2_2 t1_2)
5216 Leading(t3_4 t2_4 t1_4)
5217 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
5227 ------------------------------------------------------------------------------------
5229 InitPlan 1 (returns $0)
5232 Merge Cond: (t2_2.id = t1_2.id)
5234 Merge Cond: (t2_2.id = t3_2.id)
5235 -> Index Only Scan using t2_pkey on t2 t2_2
5238 -> Seq Scan on t3 t3_2
5239 -> Index Only Scan using t1_pkey on t1 t1_2
5240 InitPlan 2 (returns $1)
5243 Merge Cond: (t2_4.id = t1_4.id)
5245 Merge Cond: (t2_4.id = t3_4.id)
5246 -> Index Only Scan using t2_pkey on t2 t2_4
5249 -> Seq Scan on t3 t3_4
5250 -> Index Only Scan using t1_pkey on t1 t1_4
5256 -> Index Only Scan using t1_pkey on t1 t1_3
5257 Index Cond: (id = $1)
5258 -> Index Only Scan using t2_pkey on t2 t2_3
5259 Index Cond: (id = $1)
5260 -> Seq Scan on t3 t3_3
5263 Filter: (max(t1_5.id) = $1)
5265 Merge Cond: (t2_5.id = t1_5.id)
5267 Merge Cond: (t2_5.id = t3_5.id)
5268 -> Index Only Scan using t2_pkey on t2 t2_5
5271 -> Seq Scan on t3 t3_5
5272 -> Index Only Scan using t1_pkey on t1 t1_5
5273 -> Seq Scan on t3 t3_1
5275 -> Index Only Scan using t2_pkey on t2 t2_1
5276 Index Cond: (id = $1)
5277 -> Index Only Scan using t1_pkey on t1 t1_1
5278 Index Cond: (id = $1)
5282 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5284 --------------------------------------------
5287 -> Seq Scan on t1 t1_1
5288 -> Index Scan using t1_pkey on t1
5289 Index Cond: (id = t1_1.id)
5290 -> Index Scan using t2_pkey on t2
5291 Index Cond: (id = t1.id)
5294 /*+MergeJoin(t1 t2)*/
5295 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5296 INFO: pg_hint_plan: hint syntax error at or near "MergeJoin(t1 t2)"
5297 DETAIL: Relation name "t1" is ambiguous.
5306 --------------------------------------------
5309 -> Seq Scan on t1 t1_1
5310 -> Index Scan using t1_pkey on t1
5311 Index Cond: (id = t1_1.id)
5312 -> Index Scan using t2_pkey on t2
5313 Index Cond: (id = t1.id)
5316 /*+Leading(t1 t2 t1)*/
5317 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5318 INFO: pg_hint_plan: hint syntax error at or near "Leading(t1 t2 t1)"
5319 DETAIL: Relation name "t1" is ambiguous.
5328 --------------------------------------------
5331 -> Seq Scan on t1 t1_1
5332 -> Index Scan using t1_pkey on t1
5333 Index Cond: (id = t1_1.id)
5334 -> Index Scan using t2_pkey on t2
5335 Index Cond: (id = t1.id)
5338 -- identifier length test
5339 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5341 --------------------------------------------------------------------------------------------------------------
5343 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5345 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id)
5346 -> Index Scan using t1_pkey on t1 "123456789012345678901234567890123456789012345678901234567890123"
5347 -> Index Scan using t2_pkey on t2
5354 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5355 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5356 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5357 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5359 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5360 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5363 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5364 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5365 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5369 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5372 ----------------------------------------------------------------------------------------------------
5374 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5376 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5377 -> Index Scan using t2_pkey on t2
5379 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5380 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5387 Leading(1234567890123456789012345678901234567890123456789012345678901234 t2 t3)
5388 SeqScan(1234567890123456789012345678901234567890123456789012345678901234)
5389 MergeJoin(1234567890123456789012345678901234567890123456789012345678901234 t2)
5390 Set(1234567890123456789012345678901234567890123456789012345678901234 1)
5391 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5393 EXPLAIN (COSTS false) SELECT * FROM t1 "1234567890123456789012345678901234567890123456789012345678901234" JOIN t2 ON ("1234567890123456789012345678901234567890123456789012345678901234".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5394 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5395 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5396 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5397 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5398 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5399 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5400 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5403 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5404 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5405 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5406 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5410 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5413 ----------------------------------------------------------------------------------------------------
5415 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5417 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5418 -> Index Scan using t2_pkey on t2
5420 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5421 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5427 SET "123456789012345678901234567890123456789012345678901234567890123" TO 1;
5428 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5429 SET "1234567890123456789012345678901234567890123456789012345678901234" TO 1;
5430 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5431 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5432 SET cursor_tuple_fraction TO 1234567890123456789012345678901234567890123456789012345678901234;
5433 ERROR: 1.23457e+63 is outside the valid range for parameter "cursor_tuple_fraction" (0 .. 1)
5435 /*+ Set(enable_seqscan 100)Set(seq_page_cost on)*/
5436 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
5437 INFO: parameter "enable_seqscan" requires a Boolean value
5438 INFO: invalid value for parameter "seq_page_cost": "on"
5444 Set(enable_seqscan 100)
5445 Set(seq_page_cost on)
5448 --------------------------------------
5450 Merge Cond: (t1.id = t2.id)
5451 -> Index Scan using t1_pkey on t1
5452 -> Index Scan using t2_pkey on t2
5455 -- debug log of candidate index to use IndexScan
5456 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5458 ----------------------------------------------------------------------------------------
5459 Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
5460 Index Cond: (id = 1)
5463 /*+IndexScan(t5 t5_id2)*/
5464 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5465 LOG: available indexes for IndexScan(t5): t5_id2
5468 IndexScan(t5 t5_id2)
5474 -------------------------------
5475 Index Scan using t5_id2 on t5
5476 Index Cond: (id = 1)
5479 /*+IndexScan(t5 no_exist)*/
5480 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5481 LOG: available indexes for IndexScan(t5):
5484 IndexScan(t5 no_exist)
5490 --------------------
5495 /*+IndexScan(t5 t5_id1 t5_id2)*/
5496 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5497 LOG: available indexes for IndexScan(t5): t5_id2 t5_id1
5500 IndexScan(t5 t5_id1 t5_id2)
5506 -------------------------------
5507 Index Scan using t5_id2 on t5
5508 Index Cond: (id = 1)
5511 /*+IndexScan(t5 no_exist t5_id2)*/
5512 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5513 LOG: available indexes for IndexScan(t5): t5_id2
5516 IndexScan(t5 no_exist t5_id2)
5522 -------------------------------
5523 Index Scan using t5_id2 on t5
5524 Index Cond: (id = 1)
5527 /*+IndexScan(t5 no_exist5 no_exist2)*/
5528 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5529 LOG: available indexes for IndexScan(t5):
5532 IndexScan(t5 no_exist5 no_exist2)
5538 --------------------
5544 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5546 --------------------------------------------------------
5548 Hash Cond: (t3.val = t2.val)
5552 Hash Cond: (t2.id = t1.id)
5555 -> Index Scan using t1_pkey on t1
5556 Index Cond: (id < 10)
5560 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5561 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1))"
5562 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5571 --------------------------------------------------------
5573 Hash Cond: (t3.val = t2.val)
5577 Hash Cond: (t2.id = t1.id)
5580 -> Index Scan using t1_pkey on t1
5581 Index Cond: (id < 10)
5584 /*+Leading((t1 t2))*/
5585 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5594 --------------------------------------------
5596 Join Filter: (t2.val = t3.val)
5598 Hash Cond: (t1.id = t2.id)
5599 -> Index Scan using t1_pkey on t1
5600 Index Cond: (id < 10)
5606 /*+Leading((t1 t2 t3))*/
5607 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5608 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1 t2 t3))"
5609 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5618 --------------------------------------------------------
5620 Hash Cond: (t3.val = t2.val)
5624 Hash Cond: (t2.id = t1.id)
5627 -> Index Scan using t1_pkey on t1
5628 Index Cond: (id < 10)
5631 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5633 --------------------------------------------
5635 Hash Cond: (t2.id = t1.id)
5638 -> Index Scan using t1_pkey on t1
5639 Index Cond: (id < 10)
5642 /*+Leading((t1 t2))*/
5643 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5652 --------------------------------------
5654 Hash Cond: (t1.id = t2.id)
5655 -> Index Scan using t1_pkey on t1
5656 Index Cond: (id < 10)
5661 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5663 --------------------------------------------------------
5665 Hash Cond: (t3.val = t2.val)
5669 Hash Cond: (t2.id = t1.id)
5672 -> Index Scan using t1_pkey on t1
5673 Index Cond: (id < 10)
5676 /*+Leading(((t1 t2) t3))*/
5677 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5680 Leading(((t1 t2) t3))
5686 --------------------------------------------
5688 Join Filter: (t2.val = t3.val)
5690 Hash Cond: (t1.id = t2.id)
5691 -> Index Scan using t1_pkey on t1
5692 Index Cond: (id < 10)
5698 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;
5700 --------------------------------------------------------
5703 Merge Cond: (t3.id = t4.id)
5705 Join Filter: (t1.val = t3.val)
5706 -> Index Scan using t3_pkey on t3
5708 -> Index Scan using t1_pkey on t1
5709 Index Cond: (id < 10)
5713 -> Index Scan using t2_pkey on t2
5714 Index Cond: (id = t1.id)
5717 /*+Leading((((t1 t2) t3) t4))*/
5718 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;
5721 Leading((((t1 t2) t3) t4))
5727 --------------------------------------------------
5730 Join Filter: (t1.val = t3.val)
5732 Hash Cond: (t1.id = t2.id)
5733 -> Index Scan using t1_pkey on t1
5734 Index Cond: (id < 10)
5738 -> Index Scan using t4_pkey on t4
5739 Index Cond: (id = t3.id)
5742 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5744 --------------------------------------------------------
5746 Hash Cond: (t3.val = t2.val)
5750 Hash Cond: (t2.id = t1.id)
5753 -> Index Scan using t1_pkey on t1
5754 Index Cond: (id < 10)
5757 /*+Leading(((t1 t2) t3))*/
5758 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5761 Leading(((t1 t2) t3))
5767 --------------------------------------------
5769 Join Filter: (t2.val = t3.val)
5771 Hash Cond: (t1.id = t2.id)
5772 -> Index Scan using t1_pkey on t1
5773 Index Cond: (id < 10)
5779 /*+Leading((t1 (t2 t3)))*/
5780 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5783 Leading((t1 (t2 t3)))
5789 --------------------------------------------
5791 Hash Cond: (t1.id = t2.id)
5792 -> Index Scan using t1_pkey on t1
5793 Index Cond: (id < 10)
5796 Hash Cond: (t2.val = t3.val)
5802 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;
5804 --------------------------------------------------------
5807 Merge Cond: (t3.id = t4.id)
5809 Join Filter: (t1.val = t3.val)
5810 -> Index Scan using t3_pkey on t3
5812 -> Index Scan using t1_pkey on t1
5813 Index Cond: (id < 10)
5817 -> Index Scan using t2_pkey on t2
5818 Index Cond: (id = t1.id)
5821 /*+Leading(((t1 t2) (t3 t4)))*/
5822 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;
5825 Leading(((t1 t2) (t3 t4)))
5831 --------------------------------------------
5833 Join Filter: (t1.val = t3.val)
5835 Hash Cond: (t1.id = t2.id)
5836 -> Index Scan using t1_pkey on t1
5837 Index Cond: (id < 10)
5841 Merge Cond: (t3.id = t4.id)
5842 -> Index Scan using t3_pkey on t3
5848 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);
5850 --------------------------------------------------------------------
5852 Hash Cond: (t2.val = t3.val)
5853 InitPlan 1 (returns $1)
5858 -> Index Scan using t2_val on t2 t2_2
5859 Index Cond: (val > 100)
5860 -> Index Only Scan using t1_pkey on t1 t1_2
5861 Index Cond: (id = t2_2.id)
5863 Merge Cond: (t1.id = t2.id)
5864 -> Index Scan using t1_pkey on t1
5865 Index Cond: (id < $1)
5866 -> Index Scan using t2_pkey on t2
5871 /*+Leading(((t1 t2) t3)) Leading(((t3 t1) t2))*/
5872 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);
5873 INFO: pg_hint_plan: hint syntax error at or near "Leading(((t1 t2) t3)) Leading(((t3 t1) t2))"
5874 DETAIL: Conflict leading hint.
5877 Leading(((t3 t1) t2))
5880 Leading(((t1 t2) t3))
5884 --------------------------------------------------------------------
5886 Hash Cond: (t1.id = t2.id)
5887 InitPlan 1 (returns $1)
5892 -> Index Scan using t2_val on t2 t2_2
5893 Index Cond: (val > 100)
5894 -> Index Only Scan using t1_pkey on t1 t1_2
5895 Index Cond: (id = t2_2.id)
5897 Hash Cond: (t3.val = t1.val)
5900 -> Index Scan using t1_pkey on t1
5901 Index Cond: (id < $1)
5906 /*+Leading(((t1 t2) t3)) Leading((t1_2 t2_2))*/
5907 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);
5910 Leading(((t1 t2) t3))
5911 Leading((t1_2 t2_2))
5917 --------------------------------------------------------------
5919 Hash Cond: (t2.val = t3.val)
5920 InitPlan 1 (returns $0)
5923 Merge Cond: (t1_2.id = t2_2.id)
5924 -> Index Only Scan using t1_pkey on t1 t1_2
5927 -> Index Scan using t2_val on t2 t2_2
5928 Index Cond: (val > 100)
5930 Merge Cond: (t1.id = t2.id)
5931 -> Index Scan using t1_pkey on t1
5932 Index Cond: (id < $0)
5933 -> Index Scan using t2_pkey on t2
5938 /*+Leading(((((t1 t2) t3) t1_2) t2_2))*/
5939 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);
5943 Leading(((((t1 t2) t3) t1_2) t2_2))
5948 --------------------------------------------------------------------
5950 Hash Cond: (t2.val = t3.val)
5951 InitPlan 1 (returns $1)
5956 -> Index Scan using t2_val on t2 t2_2
5957 Index Cond: (val > 100)
5958 -> Index Only Scan using t1_pkey on t1 t1_2
5959 Index Cond: (id = t2_2.id)
5961 Merge Cond: (t1.id = t2.id)
5962 -> Index Scan using t1_pkey on t1
5963 Index Cond: (id < $1)
5964 -> Index Scan using t2_pkey on t2
5969 -- Specified outer/inner leading hint and join method hint at the same time
5970 /*+Leading(((t1 t2) t3))*/
5971 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5974 Leading(((t1 t2) t3))
5980 --------------------------------------------
5982 Join Filter: (t2.val = t3.val)
5984 Hash Cond: (t1.id = t2.id)
5985 -> Index Scan using t1_pkey on t1
5986 Index Cond: (id < 10)
5992 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2)*/
5993 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5997 Leading(((t1 t2) t3))
6003 --------------------------------------------
6005 Join Filter: (t2.val = t3.val)
6007 Merge Cond: (t1.id = t2.id)
6008 -> Index Scan using t1_pkey on t1
6009 Index Cond: (id < 10)
6010 -> Index Scan using t2_pkey on t2
6014 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3)*/
6015 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6019 Leading(((t1 t2) t3))
6025 --------------------------------------------------
6027 Merge Cond: (t2.val = t3.val)
6031 Hash Cond: (t1.id = t2.id)
6032 -> Index Scan using t1_pkey on t1
6033 Index Cond: (id < 10)
6041 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t3)*/
6042 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6045 Leading(((t1 t2) t3))
6052 --------------------------------------------
6054 Join Filter: (t2.val = t3.val)
6056 Hash Cond: (t1.id = t2.id)
6057 -> Index Scan using t1_pkey on t1
6058 Index Cond: (id < 10)
6064 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;
6066 --------------------------------------------------------
6069 Merge Cond: (t3.id = t4.id)
6071 Join Filter: (t1.val = t3.val)
6072 -> Index Scan using t3_pkey on t3
6074 -> Index Scan using t1_pkey on t1
6075 Index Cond: (id < 10)
6079 -> Index Scan using t2_pkey on t2
6080 Index Cond: (id = t1.id)
6083 /*+Leading(((t1 t2) t3)) MergeJoin(t3 t4)*/
6084 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;
6087 Leading(((t1 t2) t3))
6094 --------------------------------------------------
6096 Join Filter: (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)
6109 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3 t4)*/
6110 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;
6113 MergeJoin(t1 t2 t3 t4)
6114 Leading(((t1 t2) t3))
6120 --------------------------------------------------------
6122 Merge Cond: (t3.id = t4.id)
6126 Join Filter: (t1.val = t3.val)
6128 Hash Cond: (t1.id = t2.id)
6129 -> Index Scan using t1_pkey on t1
6130 Index Cond: (id < 10)
6139 /*+ Leading ( ( t1 ( t2 t3 ) ) ) */
6140 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6143 Leading((t1 (t2 t3)))
6149 --------------------------------------------
6151 Hash Cond: (t1.id = t2.id)
6152 -> Index Scan using t1_pkey on t1
6153 Index Cond: (id < 10)
6156 Hash Cond: (t2.val = t3.val)
6162 /*+Leading((t1(t2 t3)))*/
6163 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6166 Leading((t1 (t2 t3)))
6172 --------------------------------------------
6174 Hash Cond: (t1.id = t2.id)
6175 -> Index Scan using t1_pkey on t1
6176 Index Cond: (id < 10)
6179 Hash Cond: (t2.val = t3.val)
6185 /*+Leading(("t1(t2" "t3)"))*/
6186 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6190 Leading(("t1(t2" "t3)"))
6195 --------------------------------------------------------
6197 Hash Cond: (t3.val = t2.val)
6201 Hash Cond: (t2.id = t1.id)
6204 -> Index Scan using t1_pkey on t1
6205 Index Cond: (id < 10)
6208 /*+ Leading ( ( ( t1 t2 ) t3 ) ) */
6209 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6212 Leading(((t1 t2) t3))
6218 --------------------------------------------
6220 Join Filter: (t2.val = t3.val)
6222 Hash Cond: (t1.id = t2.id)
6223 -> Index Scan using t1_pkey on t1
6224 Index Cond: (id < 10)
6230 /*+Leading(((t1 t2)t3))*/
6231 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6234 Leading(((t1 t2) t3))
6240 --------------------------------------------
6242 Join Filter: (t2.val = t3.val)
6244 Hash Cond: (t1.id = t2.id)
6245 -> Index Scan using t1_pkey on t1
6246 Index Cond: (id < 10)
6252 /*+Leading(("(t1" "t2)t3"))*/
6253 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6257 Leading(("(t1" "t2)t3"))
6262 --------------------------------------------------------
6264 Hash Cond: (t3.val = t2.val)
6268 Hash Cond: (t2.id = t1.id)
6271 -> Index Scan using t1_pkey on t1
6272 Index Cond: (id < 10)
6275 /*+Leading((t1(t2(t3(t4 t5)))))*/
6276 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;
6279 Leading((t1 (t2 (t3 (t4 t5)))))
6285 ----------------------------------------------------------------------------------------------------------------------------------
6287 Merge Cond: (t1.id = t2.id)
6288 -> Index Scan using t1_pkey on t1
6291 Merge Cond: (t2.id = t3.id)
6292 -> Index Scan using t2_pkey on t2
6295 Merge Cond: (t3.id = t4.id)
6296 -> Index Scan using t3_pkey on t3
6299 Merge Cond: (t4.id = t5.id)
6300 -> Index Scan using t4_pkey on t4
6301 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6304 /*+Leading((t5(t4(t3(t2 t1)))))*/
6305 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;
6308 Leading((t5 (t4 (t3 (t2 t1)))))
6314 --------------------------------------------------------------------------
6316 Hash Cond: (t5.id = t1.id)
6320 Merge Cond: (t4.id = t1.id)
6326 Merge Cond: (t3.id = t1.id)
6332 Merge Cond: (t2.id = t1.id)
6333 -> Index Scan using t2_pkey on t2
6334 -> Index Scan using t1_pkey on t1
6337 /*+Leading(((((t1 t2)t3)t4)t5))*/
6338 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;
6341 Leading(((((t1 t2) t3) t4) t5))
6347 ----------------------------------------------------------------------------------------------
6350 Merge Cond: (t1.id = t4.id)
6352 Merge Cond: (t1.id = t3.id)
6354 Merge Cond: (t1.id = t2.id)
6355 -> Index Scan using t1_pkey on t1
6356 -> Index Scan using t2_pkey on t2
6363 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6364 Index Cond: (id = t1.id)
6367 /*+Leading(((((t5 t4)t3)t2)t1))*/
6368 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;
6371 Leading(((((t5 t4) t3) t2) t1))
6377 ----------------------------------------------------------------------------------------------------------------
6379 Join Filter: (t2.id = t1.id)
6381 Join Filter: (t3.id = t2.id)
6383 Merge Cond: (t4.id = t3.id)
6385 Merge Cond: (t5.id = t4.id)
6386 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6390 -> Index Scan using t3_pkey on t3
6391 -> Index Scan using t2_pkey on t2
6392 Index Cond: (id = t5.id)
6393 -> Index Scan using t1_pkey on t1
6394 Index Cond: (id = t5.id)
6397 /*+Leading(((t1 t2)(t3(t4 t5))))*/
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(((t1 t2) (t3 (t4 t5))))
6407 ----------------------------------------------------------------------------------------------------------------------
6409 Merge Cond: (t1.id = t3.id)
6411 Merge Cond: (t1.id = t2.id)
6412 -> Index Scan using t1_pkey on t1
6413 -> Index Scan using t2_pkey on t2
6416 Merge Cond: (t3.id = t4.id)
6417 -> Index Scan using t3_pkey on t3
6420 Merge Cond: (t4.id = t5.id)
6421 -> Index Scan using t4_pkey on t4
6422 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6425 /*+Leading(((t5 t4)(t3(t2 t1))))*/
6426 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;
6429 Leading(((t5 t4) (t3 (t2 t1))))
6435 ----------------------------------------------------------------------------------------------------
6437 Merge Cond: (t4.id = t1.id)
6439 Merge Cond: (t5.id = t4.id)
6440 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6446 Merge Cond: (t3.id = t1.id)
6452 Merge Cond: (t2.id = t1.id)
6453 -> Index Scan using t2_pkey on t2
6454 -> Index Scan using t1_pkey on t1
6457 /*+Leading((((t1 t2)t3)(t4 t5)))*/
6458 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;
6461 Leading((((t1 t2) t3) (t4 t5)))
6467 ----------------------------------------------------------------------------------------------------------
6469 Merge Cond: (t1.id = t4.id)
6471 Merge Cond: (t1.id = t3.id)
6473 Merge Cond: (t1.id = t2.id)
6474 -> Index Scan using t1_pkey on t1
6475 -> Index Scan using t2_pkey on t2
6481 Merge Cond: (t4.id = t5.id)
6482 -> Index Scan using t4_pkey on t4
6483 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6486 /*+Leading((((t5 t4)t3)(t2 t1)))*/
6487 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;
6490 Leading((((t5 t4) t3) (t2 t1)))
6496 ----------------------------------------------------------------------------------------------------------
6498 Merge Cond: (t3.id = t1.id)
6500 Merge Cond: (t4.id = t3.id)
6502 Merge Cond: (t5.id = t4.id)
6503 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6507 -> Index Scan using t3_pkey on t3
6510 Merge Cond: (t2.id = t1.id)
6511 -> Index Scan using t2_pkey on t2
6512 -> Index Scan using t1_pkey on t1
6515 -- inherite table test to specify the index's name
6516 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6518 -----------------------------------------------------------------------
6520 -> Seq Scan on p2 p2_1
6521 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6522 -> Seq Scan on p2_c1 p2_2
6523 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6524 -> Seq Scan on p2_c1_c1 p2_3
6525 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6526 -> Seq Scan on p2_c1_c2 p2_4
6527 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6530 /*+IndexScan(p2 p2_pkey)*/
6531 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6532 LOG: available indexes for IndexScan(p2): p2_pkey
6533 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6534 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6535 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6538 IndexScan(p2 p2_pkey)
6544 -------------------------------------------------------
6546 -> Index Scan using p2_pkey on p2 p2_1
6547 Index Cond: ((id >= 50) AND (id <= 51))
6548 Filter: (ctid = '(1,1)'::tid)
6549 -> Index Scan using p2_c1_pkey on p2_c1 p2_2
6550 Index Cond: ((id >= 50) AND (id <= 51))
6551 Filter: (ctid = '(1,1)'::tid)
6552 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6553 Index Cond: ((id >= 50) AND (id <= 51))
6554 Filter: (ctid = '(1,1)'::tid)
6555 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6556 Index Cond: ((id >= 50) AND (id <= 51))
6557 Filter: (ctid = '(1,1)'::tid)
6560 /*+IndexScan(p2 p2_id_val_idx)*/
6561 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6562 LOG: available indexes for IndexScan(p2): p2_id_val_idx
6563 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6564 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
6565 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
6568 IndexScan(p2 p2_id_val_idx)
6574 -------------------------------------------------------------
6576 -> Index Scan using p2_id_val_idx on p2 p2_1
6577 Index Cond: ((id >= 50) AND (id <= 51))
6578 Filter: (ctid = '(1,1)'::tid)
6579 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
6580 Index Cond: ((id >= 50) AND (id <= 51))
6581 Filter: (ctid = '(1,1)'::tid)
6582 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_3
6583 Index Cond: ((id >= 50) AND (id <= 51))
6584 Filter: (ctid = '(1,1)'::tid)
6585 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_4
6586 Index Cond: ((id >= 50) AND (id <= 51))
6587 Filter: (ctid = '(1,1)'::tid)
6590 /*+IndexScan(p2 p2_val_id_idx)*/
6591 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6592 LOG: available indexes for IndexScan(p2): p2_val_id_idx
6593 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_id_idx
6594 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_id_idx
6595 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_id_idx
6598 IndexScan(p2 p2_val_id_idx)
6604 -------------------------------------------------------------
6606 -> Index Scan using p2_val_id_idx on p2 p2_1
6607 Index Cond: ((id >= 50) AND (id <= 51))
6608 Filter: (ctid = '(1,1)'::tid)
6609 -> Index Scan using p2_c1_val_id_idx on p2_c1 p2_2
6610 Index Cond: ((id >= 50) AND (id <= 51))
6611 Filter: (ctid = '(1,1)'::tid)
6612 -> Index Scan using p2_c1_c1_val_id_idx on p2_c1_c1 p2_3
6613 Index Cond: ((id >= 50) AND (id <= 51))
6614 Filter: (ctid = '(1,1)'::tid)
6615 -> Index Scan using p2_c1_c2_val_id_idx on p2_c1_c2 p2_4
6616 Index Cond: ((id >= 50) AND (id <= 51))
6617 Filter: (ctid = '(1,1)'::tid)
6620 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6622 -----------------------------------------------------------------------------------------
6624 -> Seq Scan on p2 p2_1
6625 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6626 -> Seq Scan on p2_c1 p2_2
6627 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6628 -> Seq Scan on p2_c2 p2_3
6629 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6630 -> Seq Scan on p2_c3 p2_4
6631 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6632 -> Seq Scan on p2_c4 p2_5
6633 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6634 -> Seq Scan on p2_c1_c1 p2_6
6635 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6636 -> Seq Scan on p2_c1_c2 p2_7
6637 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6638 -> Seq Scan on p2_c3_c1 p2_8
6639 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6640 -> Seq Scan on p2_c3_c2 p2_9
6641 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6644 -- Inhibit parallel exection to avoid interfaring the hint
6645 set max_parallel_workers_per_gather to 0;
6646 /*+ IndexScan(p2 p2_val)*/
6647 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6648 LOG: available indexes for IndexScan(p2):
6649 LOG: available indexes for IndexScan(p2_c1):
6650 LOG: available indexes for IndexScan(p2_c2):
6651 LOG: available indexes for IndexScan(p2_c3):
6652 LOG: available indexes for IndexScan(p2_c4):
6653 LOG: available indexes for IndexScan(p2_c1_c1):
6654 LOG: available indexes for IndexScan(p2_c1_c2):
6655 LOG: available indexes for IndexScan(p2_c3_c1):
6656 LOG: available indexes for IndexScan(p2_c3_c2):
6659 IndexScan(p2 p2_val)
6665 -----------------------------------------------------------------------------------------
6667 -> Seq Scan on p2 p2_1
6668 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6669 -> Seq Scan on p2_c1 p2_2
6670 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6671 -> Seq Scan on p2_c2 p2_3
6672 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6673 -> Seq Scan on p2_c3 p2_4
6674 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6675 -> Seq Scan on p2_c4 p2_5
6676 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6677 -> Seq Scan on p2_c1_c1 p2_6
6678 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6679 -> Seq Scan on p2_c1_c2 p2_7
6680 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6681 -> Seq Scan on p2_c3_c1 p2_8
6682 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6683 -> Seq Scan on p2_c3_c2 p2_9
6684 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6687 /*+IndexScan(p2 p2_pkey)*/
6688 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6689 LOG: available indexes for IndexScan(p2): p2_pkey
6690 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6691 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6692 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6695 IndexScan(p2 p2_pkey)
6701 -------------------------------------------------------
6703 -> Index Scan using p2_pkey on p2 p2_1
6704 Index Cond: ((id >= 50) AND (id <= 51))
6705 Filter: (ctid = '(1,1)'::tid)
6706 -> Index Scan using p2_c1_pkey on p2_c1 p2_2
6707 Index Cond: ((id >= 50) AND (id <= 51))
6708 Filter: (ctid = '(1,1)'::tid)
6709 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6710 Index Cond: ((id >= 50) AND (id <= 51))
6711 Filter: (ctid = '(1,1)'::tid)
6712 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6713 Index Cond: ((id >= 50) AND (id <= 51))
6714 Filter: (ctid = '(1,1)'::tid)
6717 /*+IndexScan(p2 p2_id2_val)*/
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_id2_val
6720 LOG: available indexes for IndexScan(p2_c1): p2_c1_id2_val
6721 LOG: available indexes for IndexScan(p2_c1_c1):
6722 LOG: available indexes for IndexScan(p2_c1_c2):
6725 IndexScan(p2 p2_id2_val)
6731 -----------------------------------------------------------------------
6733 -> Index Scan using p2_id2_val on p2 p2_1
6734 Index Cond: ((id >= 50) AND (id <= 51))
6735 Filter: (ctid = '(1,1)'::tid)
6736 -> Index Scan using p2_c1_id2_val on p2_c1 p2_2
6737 Index Cond: ((id >= 50) AND (id <= 51))
6738 Filter: (ctid = '(1,1)'::tid)
6739 -> Seq Scan on p2_c1_c1 p2_3
6740 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6741 -> Seq Scan on p2_c1_c2 p2_4
6742 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6745 /*+IndexScan(p2 p2_val2_id)*/
6746 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6747 LOG: available indexes for IndexScan(p2): p2_val2_id
6748 LOG: available indexes for IndexScan(p2_c1):
6749 LOG: available indexes for IndexScan(p2_c1_c1):
6750 LOG: available indexes for IndexScan(p2_c1_c2):
6753 IndexScan(p2 p2_val2_id)
6759 -----------------------------------------------------------------------
6761 -> Index Scan using p2_val2_id on p2 p2_1
6762 Index Cond: ((id >= 50) AND (id <= 51))
6763 Filter: (ctid = '(1,1)'::tid)
6764 -> Seq Scan on p2_c1 p2_2
6765 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6766 -> Seq Scan on p2_c1_c1 p2_3
6767 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6768 -> Seq Scan on p2_c1_c2 p2_4
6769 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6772 /*+IndexScan(p2 p2_pkey)*/
6773 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6774 LOG: available indexes for IndexScan(p2): p2_pkey
6775 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6776 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6777 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6780 IndexScan(p2 p2_pkey)
6786 -------------------------------------------------------
6788 -> Index Scan using p2_pkey on p2 p2_1
6789 Index Cond: ((id >= 50) AND (id <= 51))
6790 Filter: (ctid = '(1,1)'::tid)
6791 -> Index Scan using p2_c1_pkey on p2_c1 p2_2
6792 Index Cond: ((id >= 50) AND (id <= 51))
6793 Filter: (ctid = '(1,1)'::tid)
6794 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6795 Index Cond: ((id >= 50) AND (id <= 51))
6796 Filter: (ctid = '(1,1)'::tid)
6797 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6798 Index Cond: ((id >= 50) AND (id <= 51))
6799 Filter: (ctid = '(1,1)'::tid)
6802 /*+IndexScan(p2 p2_c1_id_val_idx)*/
6803 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6804 LOG: available indexes for IndexScan(p2):
6805 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6806 LOG: available indexes for IndexScan(p2_c1_c1):
6807 LOG: available indexes for IndexScan(p2_c1_c2):
6810 IndexScan(p2 p2_c1_id_val_idx)
6816 -----------------------------------------------------------------------
6818 -> Seq Scan on p2 p2_1
6819 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6820 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
6821 Index Cond: ((id >= 50) AND (id <= 51))
6822 Filter: (ctid = '(1,1)'::tid)
6823 -> Seq Scan on p2_c1_c1 p2_3
6824 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6825 -> Seq Scan on p2_c1_c2 p2_4
6826 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6829 /*+IndexScan(p2 no_exist)*/
6830 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6831 LOG: available indexes for IndexScan(p2):
6832 LOG: available indexes for IndexScan(p2_c1):
6833 LOG: available indexes for IndexScan(p2_c1_c1):
6834 LOG: available indexes for IndexScan(p2_c1_c2):
6837 IndexScan(p2 no_exist)
6843 -----------------------------------------------------------------------
6845 -> Seq Scan on p2 p2_1
6846 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6847 -> Seq Scan on p2_c1 p2_2
6848 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6849 -> Seq Scan on p2_c1_c1 p2_3
6850 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6851 -> Seq Scan on p2_c1_c2 p2_4
6852 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6855 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx)*/
6856 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6857 LOG: available indexes for IndexScan(p2): p2_pkey
6858 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6859 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6860 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6863 IndexScan(p2 p2_pkey p2_c1_id_val_idx)
6869 -------------------------------------------------------
6871 -> Index Scan using p2_pkey on p2 p2_1
6872 Index Cond: ((id >= 50) AND (id <= 51))
6873 Filter: (ctid = '(1,1)'::tid)
6874 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
6875 Index Cond: ((id >= 50) AND (id <= 51))
6876 Filter: (ctid = '(1,1)'::tid)
6877 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6878 Index Cond: ((id >= 50) AND (id <= 51))
6879 Filter: (ctid = '(1,1)'::tid)
6880 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6881 Index Cond: ((id >= 50) AND (id <= 51))
6882 Filter: (ctid = '(1,1)'::tid)
6885 /*+IndexScan(p2 p2_pkey no_exist)*/
6886 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6887 LOG: available indexes for IndexScan(p2): p2_pkey
6888 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6889 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6890 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6893 IndexScan(p2 p2_pkey no_exist)
6899 -------------------------------------------------------
6901 -> Index Scan using p2_pkey on p2 p2_1
6902 Index Cond: ((id >= 50) AND (id <= 51))
6903 Filter: (ctid = '(1,1)'::tid)
6904 -> Index Scan using p2_c1_pkey on p2_c1 p2_2
6905 Index Cond: ((id >= 50) AND (id <= 51))
6906 Filter: (ctid = '(1,1)'::tid)
6907 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6908 Index Cond: ((id >= 50) AND (id <= 51))
6909 Filter: (ctid = '(1,1)'::tid)
6910 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6911 Index Cond: ((id >= 50) AND (id <= 51))
6912 Filter: (ctid = '(1,1)'::tid)
6915 /*+IndexScan(p2 p2_c1_id_val_idx no_exist)*/
6916 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6917 LOG: available indexes for IndexScan(p2):
6918 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6919 LOG: available indexes for IndexScan(p2_c1_c1):
6920 LOG: available indexes for IndexScan(p2_c1_c2):
6923 IndexScan(p2 p2_c1_id_val_idx no_exist)
6929 -----------------------------------------------------------------------
6931 -> Seq Scan on p2 p2_1
6932 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6933 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
6934 Index Cond: ((id >= 50) AND (id <= 51))
6935 Filter: (ctid = '(1,1)'::tid)
6936 -> Seq Scan on p2_c1_c1 p2_3
6937 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6938 -> Seq Scan on p2_c1_c2 p2_4
6939 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6942 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)*/
6943 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6944 LOG: available indexes for IndexScan(p2): p2_pkey
6945 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6946 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6947 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6950 IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)
6956 -------------------------------------------------------
6958 -> Index Scan using p2_pkey on p2 p2_1
6959 Index Cond: ((id >= 50) AND (id <= 51))
6960 Filter: (ctid = '(1,1)'::tid)
6961 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
6962 Index Cond: ((id >= 50) AND (id <= 51))
6963 Filter: (ctid = '(1,1)'::tid)
6964 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6965 Index Cond: ((id >= 50) AND (id <= 51))
6966 Filter: (ctid = '(1,1)'::tid)
6967 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6968 Index Cond: ((id >= 50) AND (id <= 51))
6969 Filter: (ctid = '(1,1)'::tid)
6972 /*+IndexScan(p2 p2_val_idx)*/
6973 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6974 LOG: available indexes for IndexScan(p2): p2_val_idx
6975 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx
6976 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx
6977 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx
6978 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx
6979 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx
6980 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx
6981 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx
6982 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx
6985 IndexScan(p2 p2_val_idx)
6991 -------------------------------------------------------------------
6993 -> Index Scan using p2_val_idx on p2 p2_1
6994 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6995 Filter: (ctid = '(1,1)'::tid)
6996 -> Index Scan using p2_c1_val_idx on p2_c1 p2_2
6997 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6998 Filter: (ctid = '(1,1)'::tid)
6999 -> Index Scan using p2_c2_val_idx on p2_c2 p2_3
7000 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7001 Filter: (ctid = '(1,1)'::tid)
7002 -> Index Scan using p2_c3_val_idx on p2_c3 p2_4
7003 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7004 Filter: (ctid = '(1,1)'::tid)
7005 -> Index Scan using p2_c4_val_idx on p2_c4 p2_5
7006 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7007 Filter: (ctid = '(1,1)'::tid)
7008 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1 p2_6
7009 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7010 Filter: (ctid = '(1,1)'::tid)
7011 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2 p2_7
7012 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7013 Filter: (ctid = '(1,1)'::tid)
7014 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1 p2_8
7015 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7016 Filter: (ctid = '(1,1)'::tid)
7017 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2 p2_9
7018 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7019 Filter: (ctid = '(1,1)'::tid)
7022 /*+IndexScan(p2 p2_expr)*/
7023 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7024 LOG: available indexes for IndexScan(p2): p2_expr
7025 LOG: available indexes for IndexScan(p2_c1): p2_c1_expr_idx
7026 LOG: available indexes for IndexScan(p2_c2): p2_c2_expr_idx
7027 LOG: available indexes for IndexScan(p2_c3): p2_c3_expr_idx
7028 LOG: available indexes for IndexScan(p2_c4): p2_c4_expr_idx
7029 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_expr_idx
7030 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_expr_idx
7031 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_expr_idx
7032 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_expr_idx
7035 IndexScan(p2 p2_expr)
7041 -----------------------------------------------------------------------------------------
7043 -> Seq Scan on p2 p2_1
7044 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7045 -> Seq Scan on p2_c1 p2_2
7046 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7047 -> Seq Scan on p2_c2 p2_3
7048 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7049 -> Seq Scan on p2_c3 p2_4
7050 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7051 -> Seq Scan on p2_c4 p2_5
7052 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7053 -> Seq Scan on p2_c1_c1 p2_6
7054 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7055 -> Seq Scan on p2_c1_c2 p2_7
7056 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7057 -> Seq Scan on p2_c3_c1 p2_8
7058 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7059 -> Seq Scan on p2_c3_c2 p2_9
7060 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7063 /*+IndexScan(p2 p2_val_idx6)*/
7064 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7065 LOG: available indexes for IndexScan(p2): p2_val_idx6
7066 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx7
7067 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx7
7068 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx7
7069 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx7
7070 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx7
7071 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx7
7072 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx7
7073 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx7
7076 IndexScan(p2 p2_val_idx6)
7082 -----------------------------------------------------------------------------------------
7084 -> Seq Scan on p2 p2_1
7085 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7086 -> Seq Scan on p2_c1 p2_2
7087 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7088 -> Seq Scan on p2_c2 p2_3
7089 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7090 -> Seq Scan on p2_c3 p2_4
7091 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7092 -> Seq Scan on p2_c4 p2_5
7093 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7094 -> Seq Scan on p2_c1_c1 p2_6
7095 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7096 -> Seq Scan on p2_c1_c2 p2_7
7097 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7098 -> Seq Scan on p2_c3_c1 p2_8
7099 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7100 -> Seq Scan on p2_c3_c2 p2_9
7101 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7104 /*+IndexScan(p2 p2_val_idx p2_val_idx6)*/
7105 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7106 LOG: available indexes for IndexScan(p2): p2_val_idx6 p2_val_idx
7107 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx7 p2_c1_val_idx
7108 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx7 p2_c2_val_idx
7109 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx7 p2_c3_val_idx
7110 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx7 p2_c4_val_idx
7111 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx7 p2_c1_c1_val_idx
7112 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx7 p2_c1_c2_val_idx
7113 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx7 p2_c3_c1_val_idx
7114 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx7 p2_c3_c2_val_idx
7117 IndexScan(p2 p2_val_idx p2_val_idx6)
7123 -------------------------------------------------------------------
7125 -> Index Scan using p2_val_idx on p2 p2_1
7126 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7127 Filter: (ctid = '(1,1)'::tid)
7128 -> Index Scan using p2_c1_val_idx on p2_c1 p2_2
7129 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7130 Filter: (ctid = '(1,1)'::tid)
7131 -> Index Scan using p2_c2_val_idx on p2_c2 p2_3
7132 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7133 Filter: (ctid = '(1,1)'::tid)
7134 -> Index Scan using p2_c3_val_idx on p2_c3 p2_4
7135 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7136 Filter: (ctid = '(1,1)'::tid)
7137 -> Index Scan using p2_c4_val_idx on p2_c4 p2_5
7138 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7139 Filter: (ctid = '(1,1)'::tid)
7140 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1 p2_6
7141 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7142 Filter: (ctid = '(1,1)'::tid)
7143 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2 p2_7
7144 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7145 Filter: (ctid = '(1,1)'::tid)
7146 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1 p2_8
7147 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7148 Filter: (ctid = '(1,1)'::tid)
7149 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2 p2_9
7150 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7151 Filter: (ctid = '(1,1)'::tid)
7154 -- regular expression
7156 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7158 ---------------------------------------------------------------------------------------------
7159 Index Only Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
7160 Index Cond: (id = 1)
7163 /*+ IndexScanRegexp(t5 t5_[^i].*)*/
7164 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7165 LOG: available indexes for IndexScanRegexp(t5): t5_val t5_pkey
7168 IndexScanRegexp(t5 t5_[^i].*)
7174 --------------------------------
7175 Index Scan using t5_pkey on t5
7176 Index Cond: (id = 1)
7179 /*+ IndexScanRegexp(t5 t5_id[0-9].*)*/
7180 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7181 LOG: available indexes for IndexScanRegexp(t5): t5_id3 t5_id2 t5_id1
7184 IndexScanRegexp(t5 t5_id[0-9].*)
7190 -------------------------------
7191 Index Scan using t5_id3 on t5
7192 Index Cond: (id = 1)
7195 /*+ IndexScanRegexp(t5 t5[^_].*)*/
7196 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7197 LOG: available indexes for IndexScanRegexp(t5):
7200 IndexScanRegexp(t5 t5[^_].*)
7206 --------------------
7211 /*+ IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7212 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7213 LOG: available indexes for IndexScanRegexp(t5):
7216 IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7222 --------------------
7227 /*+ IndexScan(t5 t5_id[0-9].*)*/
7228 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7229 LOG: available indexes for IndexScan(t5):
7232 IndexScan(t5 t5_id[0-9].*)
7238 --------------------
7243 /*+ IndexOnlyScanRegexp(t5 t5_[^i].*)*/
7244 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7245 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_val t5_pkey
7248 IndexOnlyScanRegexp(t5 t5_[^i].*)
7254 -------------------------------------
7255 Index Only Scan using t5_pkey on t5
7256 Index Cond: (id = 1)
7259 /*+ IndexOnlyScanRegexp(t5 t5_id[0-9].*)*/
7260 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7261 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_id3 t5_id2 t5_id1
7264 IndexOnlyScanRegexp(t5 t5_id[0-9].*)
7270 ------------------------------------
7271 Index Only Scan using t5_id3 on t5
7272 Index Cond: (id = 1)
7275 /*+ IndexOnlyScanRegexp(t5 t5[^_].*)*/
7276 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7277 LOG: available indexes for IndexOnlyScanRegexp(t5):
7280 IndexOnlyScanRegexp(t5 t5[^_].*)
7286 --------------------
7291 /*+ IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7292 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7293 LOG: available indexes for IndexOnlyScanRegexp(t5):
7296 IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7302 --------------------
7307 /*+ IndexOnlyScan(t5 t5_id[0-9].*)*/
7308 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7309 LOG: available indexes for IndexOnlyScan(t5):
7312 IndexOnlyScan(t5 t5_id[0-9].*)
7318 --------------------
7323 /*+ BitmapScanRegexp(t5 t5_[^i].*)*/
7324 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7325 LOG: available indexes for BitmapScanRegexp(t5): t5_val t5_pkey
7328 BitmapScanRegexp(t5 t5_[^i].*)
7334 ------------------------------------
7335 Bitmap Heap Scan on t5
7336 Recheck Cond: (id = 1)
7337 -> Bitmap Index Scan on t5_pkey
7338 Index Cond: (id = 1)
7341 /*+ BitmapScanRegexp(t5 t5_id[0-9].*)*/
7342 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7343 LOG: available indexes for BitmapScanRegexp(t5): t5_id3 t5_id2 t5_id1
7346 BitmapScanRegexp(t5 t5_id[0-9].*)
7352 -----------------------------------
7353 Bitmap Heap Scan on t5
7354 Recheck Cond: (id = 1)
7355 -> Bitmap Index Scan on t5_id3
7356 Index Cond: (id = 1)
7359 /*+ BitmapScanRegexp(t5 t5[^_].*)*/
7360 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7361 LOG: available indexes for BitmapScanRegexp(t5):
7364 BitmapScanRegexp(t5 t5[^_].*)
7370 --------------------
7375 /*+ BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7376 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7377 LOG: available indexes for BitmapScanRegexp(t5):
7380 BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7386 --------------------
7391 /*+ BitmapScan(t5 t5_id[0-9].*)*/
7392 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7393 LOG: available indexes for BitmapScan(t5):
7396 BitmapScan(t5 t5_id[0-9].*)
7402 --------------------
7408 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7410 ---------------------------------
7412 -> Seq Scan on p1 p1_1
7414 -> Seq Scan on p1_c1 p1_2
7416 -> Seq Scan on p1_c2 p1_3
7418 -> Seq Scan on p1_c3 p1_4
7420 -> Seq Scan on p1_c4 p1_5
7422 -> Seq Scan on p1_c1_c1 p1_6
7424 -> Seq Scan on p1_c1_c2 p1_7
7426 -> Seq Scan on p1_c3_c1 p1_8
7428 -> Seq Scan on p1_c3_c2 p1_9
7432 /*+ IndexScanRegexp(p1 p1_.*[^0-9]$)*/
7433 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7434 LOG: available indexes for IndexScanRegexp(p1): p1_pkey
7435 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_pkey
7436 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_pkey
7437 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_pkey
7438 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_pkey
7439 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7440 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7441 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7442 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7445 IndexScanRegexp(p1 p1_.*[^0-9]$)
7451 ---------------------------------
7453 -> Seq Scan on p1 p1_1
7455 -> Seq Scan on p1_c1 p1_2
7457 -> Seq Scan on p1_c2 p1_3
7459 -> Seq Scan on p1_c3 p1_4
7461 -> Seq Scan on p1_c4 p1_5
7463 -> Seq Scan on p1_c1_c1 p1_6
7465 -> Seq Scan on p1_c1_c2 p1_7
7467 -> Seq Scan on p1_c3_c1 p1_8
7469 -> Seq Scan on p1_c3_c2 p1_9
7473 /*+ IndexScanRegexp(p1 p1_.*val2.*)*/
7474 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7475 LOG: available indexes for IndexScanRegexp(p1): p1_val2
7476 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_val2
7477 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_val2
7478 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_val2
7479 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_val2
7480 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_val2
7481 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_val2
7482 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_val2
7483 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_val2
7486 IndexScanRegexp(p1 p1_.*val2.*)
7492 -------------------------------------------------------
7494 -> Index Scan using p1_val2 on p1 p1_1
7495 Index Cond: (val = 1)
7496 -> Index Scan using p1_c1_val2 on p1_c1 p1_2
7497 Index Cond: (val = 1)
7498 -> Index Scan using p1_c2_val2 on p1_c2 p1_3
7499 Index Cond: (val = 1)
7500 -> Index Scan using p1_c3_val2 on p1_c3 p1_4
7501 Index Cond: (val = 1)
7502 -> Index Scan using p1_c4_val2 on p1_c4 p1_5
7503 Index Cond: (val = 1)
7504 -> Index Scan using p1_c1_c1_val2 on p1_c1_c1 p1_6
7505 Index Cond: (val = 1)
7506 -> Index Scan using p1_c1_c2_val2 on p1_c1_c2 p1_7
7507 Index Cond: (val = 1)
7508 -> Index Scan using p1_c3_c1_val2 on p1_c3_c1 p1_8
7509 Index Cond: (val = 1)
7510 -> Index Scan using p1_c3_c2_val2 on p1_c3_c2 p1_9
7511 Index Cond: (val = 1)
7514 /*+ IndexScanRegexp(p1 p1[^_].*)*/
7515 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7516 LOG: available indexes for IndexScanRegexp(p1):
7517 LOG: available indexes for IndexScanRegexp(p1_c1):
7518 LOG: available indexes for IndexScanRegexp(p1_c2):
7519 LOG: available indexes for IndexScanRegexp(p1_c3):
7520 LOG: available indexes for IndexScanRegexp(p1_c4):
7521 LOG: available indexes for IndexScanRegexp(p1_c1_c1):
7522 LOG: available indexes for IndexScanRegexp(p1_c1_c2):
7523 LOG: available indexes for IndexScanRegexp(p1_c3_c1):
7524 LOG: available indexes for IndexScanRegexp(p1_c3_c2):
7527 IndexScanRegexp(p1 p1[^_].*)
7533 ---------------------------------
7535 -> Seq Scan on p1 p1_1
7537 -> Seq Scan on p1_c1 p1_2
7539 -> Seq Scan on p1_c2 p1_3
7541 -> Seq Scan on p1_c3 p1_4
7543 -> Seq Scan on p1_c4 p1_5
7545 -> Seq Scan on p1_c1_c1 p1_6
7547 -> Seq Scan on p1_c1_c2 p1_7
7549 -> Seq Scan on p1_c3_c1 p1_8
7551 -> Seq Scan on p1_c3_c2 p1_9
7555 /*+ IndexScan(p1 p1_.*val2.*)*/
7556 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7557 LOG: available indexes for IndexScan(p1):
7558 LOG: available indexes for IndexScan(p1_c1):
7559 LOG: available indexes for IndexScan(p1_c2):
7560 LOG: available indexes for IndexScan(p1_c3):
7561 LOG: available indexes for IndexScan(p1_c4):
7562 LOG: available indexes for IndexScan(p1_c1_c1):
7563 LOG: available indexes for IndexScan(p1_c1_c2):
7564 LOG: available indexes for IndexScan(p1_c3_c1):
7565 LOG: available indexes for IndexScan(p1_c3_c2):
7568 IndexScan(p1 p1_.*val2.*)
7574 ---------------------------------
7576 -> Seq Scan on p1 p1_1
7578 -> Seq Scan on p1_c1 p1_2
7580 -> Seq Scan on p1_c2 p1_3
7582 -> Seq Scan on p1_c3 p1_4
7584 -> Seq Scan on p1_c4 p1_5
7586 -> Seq Scan on p1_c1_c1 p1_6
7588 -> Seq Scan on p1_c1_c2 p1_7
7590 -> Seq Scan on p1_c3_c1 p1_8
7592 -> Seq Scan on p1_c3_c2 p1_9
7596 /*+ IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)*/
7597 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7598 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_pkey
7599 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_pkey
7600 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_pkey
7601 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_pkey
7602 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_pkey
7603 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7604 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7605 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7606 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7609 IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)
7615 ---------------------------------
7617 -> Seq Scan on p1 p1_1
7619 -> Seq Scan on p1_c1 p1_2
7621 -> Seq Scan on p1_c2 p1_3
7623 -> Seq Scan on p1_c3 p1_4
7625 -> Seq Scan on p1_c4 p1_5
7627 -> Seq Scan on p1_c1_c1 p1_6
7629 -> Seq Scan on p1_c1_c2 p1_7
7631 -> Seq Scan on p1_c3_c1 p1_8
7633 -> Seq Scan on p1_c3_c2 p1_9
7637 /*+ IndexOnlyScanRegexp(p1 p1_.*val2.*)*/
7638 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7639 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_val2
7640 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_val2
7641 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_val2
7642 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_val2
7643 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_val2
7644 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_val2
7645 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_val2
7646 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_val2
7647 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_val2
7650 IndexOnlyScanRegexp(p1 p1_.*val2.*)
7656 ------------------------------------------------------------
7658 -> Index Only Scan using p1_val2 on p1 p1_1
7659 Index Cond: (val = 1)
7660 -> Index Only Scan using p1_c1_val2 on p1_c1 p1_2
7661 Index Cond: (val = 1)
7662 -> Index Only Scan using p1_c2_val2 on p1_c2 p1_3
7663 Index Cond: (val = 1)
7664 -> Index Only Scan using p1_c3_val2 on p1_c3 p1_4
7665 Index Cond: (val = 1)
7666 -> Index Only Scan using p1_c4_val2 on p1_c4 p1_5
7667 Index Cond: (val = 1)
7668 -> Index Only Scan using p1_c1_c1_val2 on p1_c1_c1 p1_6
7669 Index Cond: (val = 1)
7670 -> Index Only Scan using p1_c1_c2_val2 on p1_c1_c2 p1_7
7671 Index Cond: (val = 1)
7672 -> Index Only Scan using p1_c3_c1_val2 on p1_c3_c1 p1_8
7673 Index Cond: (val = 1)
7674 -> Index Only Scan using p1_c3_c2_val2 on p1_c3_c2 p1_9
7675 Index Cond: (val = 1)
7678 /*+ IndexOnlyScanRegexp(p1 p1[^_].*)*/
7679 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7680 LOG: available indexes for IndexOnlyScanRegexp(p1):
7681 LOG: available indexes for IndexOnlyScanRegexp(p1_c1):
7682 LOG: available indexes for IndexOnlyScanRegexp(p1_c2):
7683 LOG: available indexes for IndexOnlyScanRegexp(p1_c3):
7684 LOG: available indexes for IndexOnlyScanRegexp(p1_c4):
7685 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1):
7686 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2):
7687 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1):
7688 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2):
7691 IndexOnlyScanRegexp(p1 p1[^_].*)
7697 ---------------------------------
7699 -> Seq Scan on p1 p1_1
7701 -> Seq Scan on p1_c1 p1_2
7703 -> Seq Scan on p1_c2 p1_3
7705 -> Seq Scan on p1_c3 p1_4
7707 -> Seq Scan on p1_c4 p1_5
7709 -> Seq Scan on p1_c1_c1 p1_6
7711 -> Seq Scan on p1_c1_c2 p1_7
7713 -> Seq Scan on p1_c3_c1 p1_8
7715 -> Seq Scan on p1_c3_c2 p1_9
7719 /*+ IndexOnlyScan(p1 p1_.*val2.*)*/
7720 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7721 LOG: available indexes for IndexOnlyScan(p1):
7722 LOG: available indexes for IndexOnlyScan(p1_c1):
7723 LOG: available indexes for IndexOnlyScan(p1_c2):
7724 LOG: available indexes for IndexOnlyScan(p1_c3):
7725 LOG: available indexes for IndexOnlyScan(p1_c4):
7726 LOG: available indexes for IndexOnlyScan(p1_c1_c1):
7727 LOG: available indexes for IndexOnlyScan(p1_c1_c2):
7728 LOG: available indexes for IndexOnlyScan(p1_c3_c1):
7729 LOG: available indexes for IndexOnlyScan(p1_c3_c2):
7732 IndexOnlyScan(p1 p1_.*val2.*)
7738 ---------------------------------
7740 -> Seq Scan on p1 p1_1
7742 -> Seq Scan on p1_c1 p1_2
7744 -> Seq Scan on p1_c2 p1_3
7746 -> Seq Scan on p1_c3 p1_4
7748 -> Seq Scan on p1_c4 p1_5
7750 -> Seq Scan on p1_c1_c1 p1_6
7752 -> Seq Scan on p1_c1_c2 p1_7
7754 -> Seq Scan on p1_c3_c1 p1_8
7756 -> Seq Scan on p1_c3_c2 p1_9
7760 /*+ BitmapScanRegexp(p1 p1_.*[^0-9]$)*/
7761 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7762 LOG: available indexes for BitmapScanRegexp(p1): p1_pkey
7763 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_pkey
7764 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_pkey
7765 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_pkey
7766 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_pkey
7767 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7768 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7769 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7770 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7773 BitmapScanRegexp(p1 p1_.*[^0-9]$)
7779 ---------------------------------
7781 -> Seq Scan on p1 p1_1
7783 -> Seq Scan on p1_c1 p1_2
7785 -> Seq Scan on p1_c2 p1_3
7787 -> Seq Scan on p1_c3 p1_4
7789 -> Seq Scan on p1_c4 p1_5
7791 -> Seq Scan on p1_c1_c1 p1_6
7793 -> Seq Scan on p1_c1_c2 p1_7
7795 -> Seq Scan on p1_c3_c1 p1_8
7797 -> Seq Scan on p1_c3_c2 p1_9
7801 /*+ BitmapScanRegexp(p1 p1_.*val2.*)*/
7802 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7803 LOG: available indexes for BitmapScanRegexp(p1): p1_val2
7804 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_val2
7805 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_val2
7806 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_val2
7807 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_val2
7808 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_val2
7809 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_val2
7810 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_val2
7811 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_val2
7814 BitmapScanRegexp(p1 p1_.*val2.*)
7820 ------------------------------------------------
7822 -> Bitmap Heap Scan on p1 p1_1
7823 Recheck Cond: (val = 1)
7824 -> Bitmap Index Scan on p1_val2
7825 Index Cond: (val = 1)
7826 -> Bitmap Heap Scan on p1_c1 p1_2
7827 Recheck Cond: (val = 1)
7828 -> Bitmap Index Scan on p1_c1_val2
7829 Index Cond: (val = 1)
7830 -> Bitmap Heap Scan on p1_c2 p1_3
7831 Recheck Cond: (val = 1)
7832 -> Bitmap Index Scan on p1_c2_val2
7833 Index Cond: (val = 1)
7834 -> Bitmap Heap Scan on p1_c3 p1_4
7835 Recheck Cond: (val = 1)
7836 -> Bitmap Index Scan on p1_c3_val2
7837 Index Cond: (val = 1)
7838 -> Bitmap Heap Scan on p1_c4 p1_5
7839 Recheck Cond: (val = 1)
7840 -> Bitmap Index Scan on p1_c4_val2
7841 Index Cond: (val = 1)
7842 -> Bitmap Heap Scan on p1_c1_c1 p1_6
7843 Recheck Cond: (val = 1)
7844 -> Bitmap Index Scan on p1_c1_c1_val2
7845 Index Cond: (val = 1)
7846 -> Bitmap Heap Scan on p1_c1_c2 p1_7
7847 Recheck Cond: (val = 1)
7848 -> Bitmap Index Scan on p1_c1_c2_val2
7849 Index Cond: (val = 1)
7850 -> Bitmap Heap Scan on p1_c3_c1 p1_8
7851 Recheck Cond: (val = 1)
7852 -> Bitmap Index Scan on p1_c3_c1_val2
7853 Index Cond: (val = 1)
7854 -> Bitmap Heap Scan on p1_c3_c2 p1_9
7855 Recheck Cond: (val = 1)
7856 -> Bitmap Index Scan on p1_c3_c2_val2
7857 Index Cond: (val = 1)
7860 /*+ BitmapScanRegexp(p1 p1[^_].*)*/
7861 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7862 LOG: available indexes for BitmapScanRegexp(p1):
7863 LOG: available indexes for BitmapScanRegexp(p1_c1):
7864 LOG: available indexes for BitmapScanRegexp(p1_c2):
7865 LOG: available indexes for BitmapScanRegexp(p1_c3):
7866 LOG: available indexes for BitmapScanRegexp(p1_c4):
7867 LOG: available indexes for BitmapScanRegexp(p1_c1_c1):
7868 LOG: available indexes for BitmapScanRegexp(p1_c1_c2):
7869 LOG: available indexes for BitmapScanRegexp(p1_c3_c1):
7870 LOG: available indexes for BitmapScanRegexp(p1_c3_c2):
7873 BitmapScanRegexp(p1 p1[^_].*)
7879 ---------------------------------
7881 -> Seq Scan on p1 p1_1
7883 -> Seq Scan on p1_c1 p1_2
7885 -> Seq Scan on p1_c2 p1_3
7887 -> Seq Scan on p1_c3 p1_4
7889 -> Seq Scan on p1_c4 p1_5
7891 -> Seq Scan on p1_c1_c1 p1_6
7893 -> Seq Scan on p1_c1_c2 p1_7
7895 -> Seq Scan on p1_c3_c1 p1_8
7897 -> Seq Scan on p1_c3_c2 p1_9
7901 /*+ BitmapScan(p1 p1_.*val2.*)*/
7902 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7903 LOG: available indexes for BitmapScan(p1):
7904 LOG: available indexes for BitmapScan(p1_c1):
7905 LOG: available indexes for BitmapScan(p1_c2):
7906 LOG: available indexes for BitmapScan(p1_c3):
7907 LOG: available indexes for BitmapScan(p1_c4):
7908 LOG: available indexes for BitmapScan(p1_c1_c1):
7909 LOG: available indexes for BitmapScan(p1_c1_c2):
7910 LOG: available indexes for BitmapScan(p1_c3_c1):
7911 LOG: available indexes for BitmapScan(p1_c3_c2):
7914 BitmapScan(p1 p1_.*val2.*)
7920 ---------------------------------
7922 -> Seq Scan on p1 p1_1
7924 -> Seq Scan on p1_c1 p1_2
7926 -> Seq Scan on p1_c2 p1_3
7928 -> Seq Scan on p1_c3 p1_4
7930 -> Seq Scan on p1_c4 p1_5
7932 -> Seq Scan on p1_c1_c1 p1_6
7934 -> Seq Scan on p1_c1_c2 p1_7
7936 -> Seq Scan on p1_c3_c1 p1_8
7938 -> Seq Scan on p1_c3_c2 p1_9
7942 -- search from hint table
7943 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?;', '', 'SeqScan(t1)');
7944 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?;', '', 'IndexScan(t1)');
7945 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN SELECT * FROM t1 WHERE t1.id = ?;', '', 'BitmapScan(t1)');
7946 SELECT * FROM hint_plan.hints ORDER BY id;
7947 id | norm_query_string | application_name | hints
7948 ----+----------------------------------------------------------+------------------+----------------
7949 1 | EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?; | | SeqScan(t1)
7950 2 | EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?; | | IndexScan(t1)
7951 3 | EXPLAIN SELECT * FROM t1 WHERE t1.id = ?; | | BitmapScan(t1)
7954 SET pg_hint_plan.enable_hint_table = on;
7955 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7964 --------------------
7969 SET pg_hint_plan.enable_hint_table = off;
7970 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7972 --------------------------------
7973 Index Scan using t1_pkey on t1
7974 Index Cond: (id = 1)
7977 TRUNCATE hint_plan.hints;
7978 VACUUM ANALYZE hint_plan.hints;
7980 EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = 1;
7982 -------------------------------------
7983 Index Only Scan using t1_pkey on t1
7984 Index Cond: (id = 1)
7988 CREATE FUNCTION testfunc() RETURNS RECORD AS $$
7992 SELECT /*+ SeqScan(t1) */ * INTO ret FROM t1 LIMIT 1;
7995 $$ LANGUAGE plpgsql;
8004 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 LIMIT 1"
8005 PL/pgSQL function testfunc() line 5 at SQL statement
8012 DROP FUNCTION testfunc();
8013 CREATE FUNCTION testfunc() RETURNS void AS $$
8015 EXECUTE format('/*+ SeqScan(t1) */ SELECT * FROM t1');
8017 $$ LANGUAGE plpgsql;
8026 CONTEXT: SQL statement "/*+ SeqScan(t1) */ SELECT * FROM t1"
8027 PL/pgSQL function testfunc() line 3 at EXECUTE
8033 -- This should not use SeqScan(t1)
8034 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8048 DROP FUNCTION testfunc();
8049 CREATE FUNCTION testfunc() RETURNS void AS $$
8051 PERFORM 1, /*+ SeqScan(t1) */ * from t1;
8053 $$ LANGUAGE plpgsql;
8062 CONTEXT: SQL statement "SELECT 1, /*+ SeqScan(t1) */ * from t1"
8063 PL/pgSQL function testfunc() line 3 at PERFORM
8070 DROP FUNCTION testfunc();
8071 CREATE FUNCTION testfunc() RETURNS int AS $$
8077 FOR v IN SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id LOOP
8082 $$ LANGUAGE plpgsql;
8091 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id"
8092 PL/pgSQL function testfunc() line 7 at FOR over SELECT rows
8099 DROP FUNCTION testfunc();
8100 CREATE FUNCTION testfunc() RETURNS int AS $$
8107 FOR v IN EXECUTE 'SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id' LOOP
8112 $$ LANGUAGE plpgsql;
8121 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id"
8122 PL/pgSQL function testfunc() line 8 at FOR over EXECUTE statement
8129 DROP FUNCTION testfunc();
8130 CREATE FUNCTION testfunc() RETURNS int AS $$
8132 ref CURSOR FOR SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8137 sum := sum + rec.val;
8141 $$ LANGUAGE plpgsql;
8150 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8151 PL/pgSQL function testfunc() line 7 at FOR over cursor
8158 DROP FUNCTION testfunc();
8159 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8161 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8163 $$ LANGUAGE plpgsql;
8164 SELECT * FROM testfunc() LIMIT 1;
8172 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8173 PL/pgSQL function testfunc() line 3 at RETURN QUERY
8179 -- Test for error exit from inner SQL statement.
8180 DROP FUNCTION testfunc();
8181 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8183 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id;
8185 $$ LANGUAGE plpgsql;
8186 SELECT * FROM testfunc() LIMIT 1;
8187 ERROR: relation "ttx" does not exist
8188 LINE 1: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8190 QUERY: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8191 CONTEXT: PL/pgSQL function testfunc() line 3 at RETURN QUERY
8192 -- this should not use SeqScan(t1) hint.
8193 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8206 DROP FUNCTION testfunc();
8207 DROP EXTENSION pg_hint_plan;
8208 CREATE FUNCTION reset_stats_and_wait() RETURNS void AS $$
8214 PERFORM pg_stat_reset();
8215 PERFORM pg_sleep(0.5);
8216 SELECT sum(seq_scan + idx_scan) from pg_stat_user_tables into rows;
8219 $$ LANGUAGE plpgsql;
8220 -- Dynamic query in pl/pgsql
8221 CREATE OR REPLACE FUNCTION dynsql1(x int) RETURNS int AS $$
8224 EXECUTE '/*+ IndexScan(t1) */ SELECT count(*) FROM t1 WHERE id < $1'
8228 $$ VOLATILE LANGUAGE plpgsql;
8230 SET pg_hint_plan.enable_hint = false;
8237 SELECT reset_stats_and_wait();
8238 reset_stats_and_wait
8239 ----------------------
8243 SELECT dynsql1(9000);
8255 SELECT relname, seq_scan > 0 as seq_scan, idx_scan > 0 as idx_scan FROM pg_stat_user_tables WHERE schemaname = 'public' AND relname = 't1';
8256 relname | seq_scan | idx_scan
8257 ---------+----------+----------
8261 SET pg_hint_plan.enable_hint = true;
8262 SELECT reset_stats_and_wait();
8263 reset_stats_and_wait
8264 ----------------------
8268 SELECT dynsql1(9000);
8276 CONTEXT: SQL statement "/*+ IndexScan(t1) */ SELECT count(*) FROM t1 WHERE id < $1"
8277 PL/pgSQL function dynsql1(integer) line 4 at EXECUTE
8289 SELECT relname, seq_scan > 0 as seq_scan, idx_scan > 0 as idx_scan FROM pg_stat_user_tables WHERE schemaname = 'public' AND relname = 't1';
8290 relname | seq_scan | idx_scan
8291 ---------+----------+----------
8295 -- Looped dynamic query in pl/pgsql
8296 CREATE OR REPLACE FUNCTION dynsql2(x int, OUT r int) AS $$
8302 FOR c IN SELECT f.f FROM (VALUES ('p1_c1'), ('p1_c2')) f(f) LOOP
8303 FOR s IN EXECUTE '/*+ IndexScan(' || c || ' ' || c || '_pkey) */ SELECT sum(val) FROM ' || c || ' WHERE id < ' || x LOOP
8308 $$ VOLATILE LANGUAGE plpgsql;
8309 SET pg_hint_plan.enable_hint = false;
8310 SELECT reset_stats_and_wait();
8311 reset_stats_and_wait
8312 ----------------------
8316 SELECT dynsql2(9000);
8328 -- one of the index scans happened while planning.
8329 SELECT relname, seq_scan, idx_scan FROM pg_stat_user_tables WHERE schemaname = 'public' AND (relname = 'p1_c1' OR relname = 'p1_c2');
8330 relname | seq_scan | idx_scan
8331 ---------+----------+----------
8336 SET pg_hint_plan.enable_hint = true;
8337 SELECT reset_stats_and_wait();
8338 reset_stats_and_wait
8339 ----------------------
8343 SELECT dynsql2(9000);
8344 LOG: available indexes for IndexScan(p1_c1): p1_c1_pkey
8345 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8346 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8347 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_pkey
8348 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8349 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8350 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_pkey
8351 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8352 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8355 IndexScan(p1_c1 p1_c1_pkey)
8360 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8361 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8362 LOG: available indexes for IndexScan(p1_c2): p1_c2_pkey
8363 CONTEXT: SQL statement "/*+ IndexScan(p1_c2 p1_c2_pkey) */ SELECT sum(val) FROM p1_c2 WHERE id < 9000"
8364 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8367 IndexScan(p1_c2 p1_c2_pkey)
8372 CONTEXT: SQL statement "/*+ IndexScan(p1_c2 p1_c2_pkey) */ SELECT sum(val) FROM p1_c2 WHERE id < 9000"
8373 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8385 -- the index scan happened while planning.
8386 SELECT relname, seq_scan, idx_scan FROM pg_stat_user_tables WHERE schemaname = 'public' AND (relname = 'p1_c1' OR relname = 'p1_c2');
8387 relname | seq_scan | idx_scan
8388 ---------+----------+----------
8393 -- Subqueries on inheritance tables under UNION
8394 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8396 SELECT val::int FROM p2 WHERE id < 1000;
8398 ---------------------------------------------
8401 -> Seq Scan on p1 p1_1
8402 Filter: (val < 1000)
8403 -> Seq Scan on p1_c1 p1_2
8404 Filter: (val < 1000)
8405 -> Seq Scan on p1_c2 p1_3
8406 Filter: (val < 1000)
8407 -> Seq Scan on p1_c3 p1_4
8408 Filter: (val < 1000)
8409 -> Seq Scan on p1_c4 p1_5
8410 Filter: (val < 1000)
8411 -> Seq Scan on p1_c1_c1 p1_6
8412 Filter: (val < 1000)
8413 -> Seq Scan on p1_c1_c2 p1_7
8414 Filter: (val < 1000)
8415 -> Seq Scan on p1_c3_c1 p1_8
8416 Filter: (val < 1000)
8417 -> Seq Scan on p1_c3_c2 p1_9
8418 Filter: (val < 1000)
8421 -> Seq Scan on p2 p2_1
8423 -> Seq Scan on p2_c1 p2_2
8425 -> Seq Scan on p2_c2 p2_3
8427 -> Seq Scan on p2_c3 p2_4
8429 -> Seq Scan on p2_c4 p2_5
8431 -> Seq Scan on p2_c1_c1 p2_6
8433 -> Seq Scan on p2_c1_c2 p2_7
8435 -> Seq Scan on p2_c3_c1 p2_8
8437 -> Seq Scan on p2_c3_c2 p2_9
8441 /*+ IndexScan(p1 p1_val2) */
8442 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8444 SELECT val::int FROM p2 WHERE id < 1000;
8445 LOG: available indexes for IndexScan(p1): p1_val3 p1_val2 p1_val1
8446 LOG: available indexes for IndexScan(p1_c1): p1_c1_val3 p1_c1_val2 p1_c1_val1
8447 LOG: available indexes for IndexScan(p1_c2): p1_c2_val3 p1_c2_val2 p1_c2_val1
8448 LOG: available indexes for IndexScan(p1_c3): p1_c3_val3 p1_c3_val2 p1_c3_val1
8449 LOG: available indexes for IndexScan(p1_c4): p1_c4_val3 p1_c4_val2 p1_c4_val1
8450 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_val3 p1_c1_c1_val2 p1_c1_c1_val1
8451 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_val3 p1_c1_c2_val2 p1_c1_c2_val1
8452 LOG: available indexes for IndexScan(p1_c3_c1): p1_c3_c1_val3 p1_c3_c1_val2 p1_c3_c1_val1
8453 LOG: available indexes for IndexScan(p1_c3_c2): p1_c3_c2_val3 p1_c3_c2_val2 p1_c3_c2_val1
8456 IndexScan(p1 p1_val2)
8462 -------------------------------------------------------------
8465 -> Index Scan using p1_val3 on p1 p1_1
8466 Index Cond: (val < 1000)
8467 -> Index Scan using p1_c1_val3 on p1_c1 p1_2
8468 Index Cond: (val < 1000)
8469 -> Index Scan using p1_c2_val3 on p1_c2 p1_3
8470 Index Cond: (val < 1000)
8471 -> Index Scan using p1_c3_val3 on p1_c3 p1_4
8472 Index Cond: (val < 1000)
8473 -> Index Scan using p1_c4_val3 on p1_c4 p1_5
8474 Index Cond: (val < 1000)
8475 -> Index Scan using p1_c1_c1_val3 on p1_c1_c1 p1_6
8476 Index Cond: (val < 1000)
8477 -> Index Scan using p1_c1_c2_val3 on p1_c1_c2 p1_7
8478 Index Cond: (val < 1000)
8479 -> Index Scan using p1_c3_c1_val3 on p1_c3_c1 p1_8
8480 Index Cond: (val < 1000)
8481 -> Index Scan using p1_c3_c2_val3 on p1_c3_c2 p1_9
8482 Index Cond: (val < 1000)
8485 -> Seq Scan on p2 p2_1
8487 -> Seq Scan on p2_c1 p2_2
8489 -> Seq Scan on p2_c2 p2_3
8491 -> Seq Scan on p2_c3 p2_4
8493 -> Seq Scan on p2_c4 p2_5
8495 -> Seq Scan on p2_c1_c1 p2_6
8497 -> Seq Scan on p2_c1_c2 p2_7
8499 -> Seq Scan on p2_c3_c1 p2_8
8501 -> Seq Scan on p2_c3_c2 p2_9
8505 /*+ IndexScan(p1 p1_val2) IndexScan(p2 p2_id_val_idx) */
8506 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8508 SELECT val::int FROM p2 WHERE id < 1000;
8509 LOG: available indexes for IndexScan(p1): p1_val3 p1_val2 p1_val1
8510 LOG: available indexes for IndexScan(p1_c1): p1_c1_val3 p1_c1_val2 p1_c1_val1
8511 LOG: available indexes for IndexScan(p1_c2): p1_c2_val3 p1_c2_val2 p1_c2_val1
8512 LOG: available indexes for IndexScan(p1_c3): p1_c3_val3 p1_c3_val2 p1_c3_val1
8513 LOG: available indexes for IndexScan(p1_c4): p1_c4_val3 p1_c4_val2 p1_c4_val1
8514 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_val3 p1_c1_c1_val2 p1_c1_c1_val1
8515 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_val3 p1_c1_c2_val2 p1_c1_c2_val1
8516 LOG: available indexes for IndexScan(p1_c3_c1): p1_c3_c1_val3 p1_c3_c1_val2 p1_c3_c1_val1
8517 LOG: available indexes for IndexScan(p1_c3_c2): p1_c3_c2_val3 p1_c3_c2_val2 p1_c3_c2_val1
8518 LOG: available indexes for IndexScan(p2): p2_id_val_idx
8519 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
8520 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
8521 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
8522 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
8523 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
8524 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
8525 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
8526 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
8529 IndexScan(p1 p1_val2)
8530 IndexScan(p2 p2_id_val_idx)
8536 -------------------------------------------------------------------------
8539 -> Index Scan using p1_val3 on p1 p1_1
8540 Index Cond: (val < 1000)
8541 -> Index Scan using p1_c1_val3 on p1_c1 p1_2
8542 Index Cond: (val < 1000)
8543 -> Index Scan using p1_c2_val3 on p1_c2 p1_3
8544 Index Cond: (val < 1000)
8545 -> Index Scan using p1_c3_val3 on p1_c3 p1_4
8546 Index Cond: (val < 1000)
8547 -> Index Scan using p1_c4_val3 on p1_c4 p1_5
8548 Index Cond: (val < 1000)
8549 -> Index Scan using p1_c1_c1_val3 on p1_c1_c1 p1_6
8550 Index Cond: (val < 1000)
8551 -> Index Scan using p1_c1_c2_val3 on p1_c1_c2 p1_7
8552 Index Cond: (val < 1000)
8553 -> Index Scan using p1_c3_c1_val3 on p1_c3_c1 p1_8
8554 Index Cond: (val < 1000)
8555 -> Index Scan using p1_c3_c2_val3 on p1_c3_c2 p1_9
8556 Index Cond: (val < 1000)
8559 -> Index Scan using p2_id_val_idx on p2 p2_1
8560 Index Cond: (id < 1000)
8561 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
8562 Index Cond: (id < 1000)
8563 -> Index Scan using p2_c2_id_val_idx on p2_c2 p2_3
8564 Index Cond: (id < 1000)
8565 -> Index Scan using p2_c3_id_val_idx on p2_c3 p2_4
8566 Index Cond: (id < 1000)
8567 -> Index Scan using p2_c4_id_val_idx on p2_c4 p2_5
8568 Index Cond: (id < 1000)
8569 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_6
8570 Index Cond: (id < 1000)
8571 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_7
8572 Index Cond: (id < 1000)
8573 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1 p2_8
8574 Index Cond: (id < 1000)
8575 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2 p2_9
8576 Index Cond: (id < 1000)
8580 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8582 SELECT val::int FROM p2 WHERE id < 1000;
8584 ---------------------------------------------------
8589 -> Seq Scan on p1 p1_1
8590 Filter: (val < 1000)
8591 -> Seq Scan on p1_c1 p1_2
8592 Filter: (val < 1000)
8593 -> Seq Scan on p1_c2 p1_3
8594 Filter: (val < 1000)
8595 -> Seq Scan on p1_c3 p1_4
8596 Filter: (val < 1000)
8597 -> Seq Scan on p1_c4 p1_5
8598 Filter: (val < 1000)
8599 -> Seq Scan on p1_c1_c1 p1_6
8600 Filter: (val < 1000)
8601 -> Seq Scan on p1_c1_c2 p1_7
8602 Filter: (val < 1000)
8603 -> Seq Scan on p1_c3_c1 p1_8
8604 Filter: (val < 1000)
8605 -> Seq Scan on p1_c3_c2 p1_9
8606 Filter: (val < 1000)
8609 -> Seq Scan on p2 p2_1
8611 -> Seq Scan on p2_c1 p2_2
8613 -> Seq Scan on p2_c2 p2_3
8615 -> Seq Scan on p2_c3 p2_4
8617 -> Seq Scan on p2_c4 p2_5
8619 -> Seq Scan on p2_c1_c1 p2_6
8621 -> Seq Scan on p2_c1_c2 p2_7
8623 -> Seq Scan on p2_c3_c1 p2_8
8625 -> Seq Scan on p2_c3_c2 p2_9
8629 /*+ IndexScan(p2 p2_id_val_idx) */
8630 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8632 SELECT val::int FROM p2 WHERE id < 1000;
8633 LOG: available indexes for IndexScan(p2): p2_id_val_idx
8634 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
8635 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
8636 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
8637 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
8638 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
8639 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
8640 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
8641 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
8644 IndexScan(p2 p2_id_val_idx)
8650 -------------------------------------------------------------------------------
8655 -> Seq Scan on p1 p1_1
8656 Filter: (val < 1000)
8657 -> Seq Scan on p1_c1 p1_2
8658 Filter: (val < 1000)
8659 -> Seq Scan on p1_c2 p1_3
8660 Filter: (val < 1000)
8661 -> Seq Scan on p1_c3 p1_4
8662 Filter: (val < 1000)
8663 -> Seq Scan on p1_c4 p1_5
8664 Filter: (val < 1000)
8665 -> Seq Scan on p1_c1_c1 p1_6
8666 Filter: (val < 1000)
8667 -> Seq Scan on p1_c1_c2 p1_7
8668 Filter: (val < 1000)
8669 -> Seq Scan on p1_c3_c1 p1_8
8670 Filter: (val < 1000)
8671 -> Seq Scan on p1_c3_c2 p1_9
8672 Filter: (val < 1000)
8675 -> Index Scan using p2_id_val_idx on p2 p2_1
8676 Index Cond: (id < 1000)
8677 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
8678 Index Cond: (id < 1000)
8679 -> Index Scan using p2_c2_id_val_idx on p2_c2 p2_3
8680 Index Cond: (id < 1000)
8681 -> Index Scan using p2_c3_id_val_idx on p2_c3 p2_4
8682 Index Cond: (id < 1000)
8683 -> Index Scan using p2_c4_id_val_idx on p2_c4 p2_5
8684 Index Cond: (id < 1000)
8685 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_6
8686 Index Cond: (id < 1000)
8687 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_7
8688 Index Cond: (id < 1000)
8689 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1 p2_8
8690 Index Cond: (id < 1000)
8691 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2 p2_9
8692 Index Cond: (id < 1000)
8695 /*+ IndexScan(p1 p1_val2) IndexScan(p2 p2_id_val_idx) */
8696 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8698 SELECT val::int FROM p2 WHERE id < 1000;
8699 LOG: available indexes for IndexScan(p1): p1_val3 p1_val2 p1_val1
8700 LOG: available indexes for IndexScan(p1_c1): p1_c1_val3 p1_c1_val2 p1_c1_val1
8701 LOG: available indexes for IndexScan(p1_c2): p1_c2_val3 p1_c2_val2 p1_c2_val1
8702 LOG: available indexes for IndexScan(p1_c3): p1_c3_val3 p1_c3_val2 p1_c3_val1
8703 LOG: available indexes for IndexScan(p1_c4): p1_c4_val3 p1_c4_val2 p1_c4_val1
8704 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_val3 p1_c1_c1_val2 p1_c1_c1_val1
8705 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_val3 p1_c1_c2_val2 p1_c1_c2_val1
8706 LOG: available indexes for IndexScan(p1_c3_c1): p1_c3_c1_val3 p1_c3_c1_val2 p1_c3_c1_val1
8707 LOG: available indexes for IndexScan(p1_c3_c2): p1_c3_c2_val3 p1_c3_c2_val2 p1_c3_c2_val1
8708 LOG: available indexes for IndexScan(p2): p2_id_val_idx
8709 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
8710 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
8711 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
8712 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
8713 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
8714 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
8715 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
8716 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
8719 IndexScan(p1 p1_val2)
8720 IndexScan(p2 p2_id_val_idx)
8726 -------------------------------------------------------------------------------
8731 -> Index Scan using p1_val3 on p1 p1_1
8732 Index Cond: (val < 1000)
8733 -> Index Scan using p1_c1_val3 on p1_c1 p1_2
8734 Index Cond: (val < 1000)
8735 -> Index Scan using p1_c2_val3 on p1_c2 p1_3
8736 Index Cond: (val < 1000)
8737 -> Index Scan using p1_c3_val3 on p1_c3 p1_4
8738 Index Cond: (val < 1000)
8739 -> Index Scan using p1_c4_val3 on p1_c4 p1_5
8740 Index Cond: (val < 1000)
8741 -> Index Scan using p1_c1_c1_val3 on p1_c1_c1 p1_6
8742 Index Cond: (val < 1000)
8743 -> Index Scan using p1_c1_c2_val3 on p1_c1_c2 p1_7
8744 Index Cond: (val < 1000)
8745 -> Index Scan using p1_c3_c1_val3 on p1_c3_c1 p1_8
8746 Index Cond: (val < 1000)
8747 -> Index Scan using p1_c3_c2_val3 on p1_c3_c2 p1_9
8748 Index Cond: (val < 1000)
8751 -> Index Scan using p2_id_val_idx on p2 p2_1
8752 Index Cond: (id < 1000)
8753 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
8754 Index Cond: (id < 1000)
8755 -> Index Scan using p2_c2_id_val_idx on p2_c2 p2_3
8756 Index Cond: (id < 1000)
8757 -> Index Scan using p2_c3_id_val_idx on p2_c3 p2_4
8758 Index Cond: (id < 1000)
8759 -> Index Scan using p2_c4_id_val_idx on p2_c4 p2_5
8760 Index Cond: (id < 1000)
8761 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_6
8762 Index Cond: (id < 1000)
8763 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_7
8764 Index Cond: (id < 1000)
8765 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1 p2_8
8766 Index Cond: (id < 1000)
8767 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2 p2_9
8768 Index Cond: (id < 1000)
8774 -- Explain result includes "Planning time" if COSTS is enabled, but
8775 -- this test needs it enabled for get rows count. So do tests via psql
8776 -- and grep -v the mutable line.
8777 -- Parse error check
8778 /*+ Rows() */ SELECT 1;
8779 INFO: pg_hint_plan: hint syntax error at or near " "
8780 DETAIL: Rows hint needs at least one relation followed by one correction term.
8793 /*+ Rows(x) */ SELECT 1;
8794 INFO: pg_hint_plan: hint syntax error at or near " "
8795 DETAIL: Rows hint needs at least one relation followed by one correction term.
8809 \o results/pg_hint_plan.tmpout
8810 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8812 \! sql/maskout.sh results/pg_hint_plan.tmpout
8815 Merge Join (cost=xxx..xxx rows=1000 width=xxx)
8816 Merge Cond: (t1.id = t2.id)
8817 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8818 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8820 \o results/pg_hint_plan.tmpout
8821 /*+ Rows(t1 t2 #99) */
8822 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8831 \! sql/maskout.sh results/pg_hint_plan.tmpout
8834 Merge Join (cost=xxx..xxx rows=99 width=xxx)
8835 Merge Cond: (t1.id = t2.id)
8836 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8837 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8839 \o results/pg_hint_plan.tmpout
8840 /*+ Rows(t1 t2 +99) */
8841 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8850 \! sql/maskout.sh results/pg_hint_plan.tmpout
8853 Merge Join (cost=xxx..xxx rows=1099 width=xxx)
8854 Merge Cond: (t1.id = t2.id)
8855 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8856 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8858 \o results/pg_hint_plan.tmpout
8859 /*+ Rows(t1 t2 -99) */
8860 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8869 \! sql/maskout.sh results/pg_hint_plan.tmpout
8872 Merge Join (cost=xxx..xxx rows=901 width=xxx)
8873 Merge Cond: (t1.id = t2.id)
8874 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8875 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8877 \o results/pg_hint_plan.tmpout
8878 /*+ Rows(t1 t2 *99) */
8879 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8888 \! sql/maskout.sh results/pg_hint_plan.tmpout
8891 Merge Join (cost=xxx..xxx rows=99000 width=xxx)
8892 Merge Cond: (t1.id = t2.id)
8893 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8894 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8896 \o results/pg_hint_plan.tmpout
8897 /*+ Rows(t1 t2 *0.01) */
8898 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8907 \! sql/maskout.sh results/pg_hint_plan.tmpout
8910 Merge Join (cost=xxx..xxx rows=10 width=xxx)
8911 Merge Cond: (t1.id = t2.id)
8912 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8913 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8915 \o results/pg_hint_plan.tmpout
8916 /*+ Rows(t1 t2 #aa) */
8917 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8918 INFO: pg_hint_plan: hint syntax error at or near "aa"
8919 DETAIL: Rows hint requires valid number as rows estimation.
8928 \! sql/maskout.sh results/pg_hint_plan.tmpout
8931 Merge Join (cost=xxx..xxx rows=1000 width=xxx)
8932 Merge Cond: (t1.id = t2.id)
8933 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8934 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8936 \o results/pg_hint_plan.tmpout
8937 /*+ Rows(t1 t2 /99) */
8938 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8939 INFO: pg_hint_plan: hint syntax error at or near "/99"
8940 DETAIL: Unrecognized rows value type notation.
8949 \! sql/maskout.sh results/pg_hint_plan.tmpout
8952 Merge Join (cost=xxx..xxx rows=1000 width=xxx)
8953 Merge Cond: (t1.id = t2.id)
8954 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8955 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8958 \o results/pg_hint_plan.tmpout
8959 /*+ Rows(t1 t2 -99999) */
8960 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8961 WARNING: Force estimate to be at least one row, to avoid possible divide-by-zero when interpolating costs : Rows(t1 t2 -99999)
8970 \! sql/maskout.sh results/pg_hint_plan.tmpout
8973 Merge Join (cost=xxx..xxx rows=1 width=xxx)
8974 Merge Cond: (t1.id = t2.id)
8975 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8976 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8978 -- complex join tree
8979 \o results/pg_hint_plan.tmpout
8980 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8982 \! sql/maskout.sh results/pg_hint_plan.tmpout
8985 Merge Join (cost=xxx..xxx rows=10 width=xxx)
8986 Merge Cond: (t1.id = t3.id)
8987 -> Merge Join (cost=xxx..xxx rows=1000 width=xxx)
8988 Merge Cond: (t1.id = t2.id)
8989 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8990 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8991 -> Sort (cost=xxx..xxx rows=100 width=xxx)
8993 -> Seq Scan on t3 (cost=xxx..xxx rows=100 width=xxx)
8995 \o results/pg_hint_plan.tmpout
8996 /*+ Rows(t1 t2 #22) */
8997 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
9006 \! sql/maskout.sh results/pg_hint_plan.tmpout
9009 Merge Join (cost=xxx..xxx rows=1 width=xxx)
9010 Merge Cond: (t1.id = t3.id)
9011 -> Merge Join (cost=xxx..xxx rows=22 width=xxx)
9012 Merge Cond: (t1.id = t2.id)
9013 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
9014 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
9015 -> Sort (cost=xxx..xxx rows=100 width=xxx)
9017 -> Seq Scan on t3 (cost=xxx..xxx rows=100 width=xxx)
9019 \o results/pg_hint_plan.tmpout
9020 /*+ Rows(t1 t3 *10) */
9021 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
9030 set max_parallel_workers_per_gather to DEFAULT;
9031 \! sql/maskout.sh results/pg_hint_plan.tmpout
9034 Merge Join (cost=xxx..xxx rows=100 width=xxx)
9035 Merge Cond: (t1.id = t3.id)
9036 -> Merge Join (cost=xxx..xxx rows=1000 width=xxx)
9037 Merge Cond: (t1.id = t2.id)
9038 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
9039 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
9040 -> Sort (cost=xxx..xxx rows=100 width=xxx)
9042 -> Seq Scan on t3 (cost=xxx..xxx rows=100 width=xxx)
9044 \! rm results/pg_hint_plan.tmpout
9046 set client_min_messages to 'DEBUG1';
9047 set pg_hint_plan.debug_level to 'verbose';
9048 /*+ SeqScan( */ SELECT 1;
9049 INFO: pg_hint_plan: hint syntax error at or near ""
9050 DETAIL: Closing parenthesis is necessary.
9056 /*+ SeqScan(t1) */ SELECT * FROM t1 LIMIT 0;
9068 set pg_hint_plan.message_level to 'DEBUG1';
9069 set pg_hint_plan.parse_messages to 'NOTICE';
9070 /*+ SeqScan( */ SELECT 1;
9071 NOTICE: pg_hint_plan: hint syntax error at or near ""
9072 DETAIL: Closing parenthesis is necessary.
9078 /*+ SeqScan(t1) */ SELECT * FROM t1 LIMIT 0;
9079 DEBUG: pg_hint_plan:
9090 -- all hint types together
9091 /*+ SeqScan(t1) MergeJoin(t1 t2) Leading(t1 t2) Rows(t1 t2 +10) Parallel(t1 8 hard) Set(random_page_cost 2.0)*/
9092 EXPLAIN (costs off) SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
9093 DEBUG: adjusted rows 1000 to 1010
9094 DEBUG: pg_hint_plan:
9099 Set(random_page_cost 2.0)
9107 -------------------------------------------------
9110 Merge Cond: (t2.id = t1.id)
9111 -> Index Scan using t2_pkey on t2
9116 -> Parallel Seq Scan on t1
9117 -> Index Scan using t3_pkey on t3
9118 Index Cond: (id = t1.id)