1 SET search_path TO public;
2 SET client_min_messages TO log;
3 \set SHOW_CONTEXT always
4 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
6 --------------------------------------
8 Merge Cond: (t1.id = t2.id)
9 -> Index Scan using t1_pkey on t1
10 -> Index Scan using t2_pkey on t2
13 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.val = t2.val;
15 --------------------------------
17 Hash Cond: (t2.val = t1.val)
24 SET pg_hint_plan.debug_print TO on;
25 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
27 --------------------------------------
29 Merge Cond: (t1.id = t2.id)
30 -> Index Scan using t1_pkey on t1
31 -> Index Scan using t2_pkey on t2
34 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.val = t2.val;
36 --------------------------------
38 Hash Cond: (t2.val = t1.val)
45 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
46 INFO: pg_hint_plan: hint syntax error at or near "Test (t1 t2) "
47 DETAIL: Unrecognized hint keyword "Test".
49 --------------------------------------
51 Merge Cond: (t1.id = t2.id)
52 -> Index Scan using t1_pkey on t1
53 -> Index Scan using t2_pkey on t2
56 SET pg_hint_plan.enable_hint TO off;
58 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
60 --------------------------------------
62 Merge Cond: (t1.id = t2.id)
63 -> Index Scan using t1_pkey on t1
64 -> Index Scan using t2_pkey on t2
67 SET pg_hint_plan.enable_hint TO on;
68 /*Set(enable_indexscan off)*/
69 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
71 --------------------------------------
73 Merge Cond: (t1.id = t2.id)
74 -> Index Scan using t1_pkey on t1
75 -> Index Scan using t2_pkey on t2
78 --+Set(enable_indexscan off)
79 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
81 --------------------------------------
83 Merge Cond: (t1.id = t2.id)
84 -> Index Scan using t1_pkey on t1
85 -> Index Scan using t2_pkey on t2
88 /*+Set(enable_indexscan off) /* nest comment */ */
89 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
90 INFO: pg_hint_plan: hint syntax error at or near "/* nest comment */ */
91 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;"
92 DETAIL: Nested block comments are not supported.
94 --------------------------------------
96 Merge Cond: (t1.id = t2.id)
97 -> Index Scan using t1_pkey on t1
98 -> Index Scan using t2_pkey on t2
101 /*+Set(enable_indexscan off)*/
102 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
105 Set(enable_indexscan off)
111 ------------------------------
113 Hash Cond: (t1.id = t2.id)
119 EXPLAIN (COSTS false) /*+Set(enable_indexscan off)*/
120 SELECT * FROM t1, t2 WHERE t1.id = t2.id;
123 Set(enable_indexscan off)
129 ------------------------------
131 Hash Cond: (t1.id = t2.id)
137 /*+ Set(enable_indexscan off) Set(enable_hashjoin off) */
138 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
141 Set(enable_hashjoin off)
142 Set(enable_indexscan off)
148 -------------------------------
150 Merge Cond: (t1.id = t2.id)
159 /*+ Set ( enable_indexscan off ) */
160 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
163 Set(enable_indexscan off)
169 ------------------------------
171 Hash Cond: (t1.id = t2.id)
184 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
187 Set(enable_indexscan off)
193 ------------------------------
195 Hash Cond: (t1.id = t2.id)
201 /*+ Set(enable_indexscan off)Set(enable_nestloop off)Set(enable_mergejoin off)
202 Set(enable_seqscan off)
204 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
207 Set(enable_indexscan off)
208 Set(enable_mergejoin off)
209 Set(enable_nestloop off)
210 Set(enable_seqscan off)
216 --------------------------------------------
218 Hash Cond: (t1.id = t2.id)
219 -> Index Scan using t1_pkey on t1
221 -> Index Scan using t2_pkey on t2
224 /*+Set(work_mem "1M")*/
225 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
226 INFO: invalid value for parameter "work_mem": "1M"
227 HINT: Valid units for this parameter are "B", "kB", "MB", "GB", and "TB".
236 --------------------------------------
238 Merge Cond: (t1.id = t2.id)
239 -> Index Scan using t1_pkey on t1
240 -> Index Scan using t2_pkey on t2
243 /*+Set(work_mem "1MB")*/
244 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
253 --------------------------------------
255 Merge Cond: (t1.id = t2.id)
256 -> Index Scan using t1_pkey on t1
257 -> Index Scan using t2_pkey on t2
260 /*+Set(work_mem TO "1MB")*/
261 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
262 INFO: pg_hint_plan: hint syntax error at or near "Set(work_mem TO "1MB")"
263 DETAIL: Set hint requires name and value of GUC parameter.
272 --------------------------------------
274 Merge Cond: (t1.id = t2.id)
275 -> Index Scan using t1_pkey on t1
276 -> Index Scan using t2_pkey on t2
279 /*+SeqScan() */ SELECT 1;
280 INFO: pg_hint_plan: hint syntax error at or near " "
281 DETAIL: SeqScan hint requires a relation.
295 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
296 INFO: pg_hint_plan: hint syntax error at or near ""
297 DETAIL: SeqScan hint accepts only one relation.
306 --------------------------------------
308 Merge Cond: (t1.id = t2.id)
309 -> Index Scan using t1_pkey on t1
310 -> Index Scan using t2_pkey on t2
314 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
323 ------------------------------
325 Hash Cond: (t1.id = t2.id)
331 /*+SeqScan(t1)IndexScan(t2)*/
332 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
342 --------------------------------------------
344 Hash Cond: (t1.id = t2.id)
347 -> Index Scan using t2_pkey on t2
351 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
360 ------------------------------------------
363 -> Bitmap Heap Scan on t2
364 Recheck Cond: (id = t1.id)
365 -> Bitmap Index Scan on t2_pkey
366 Index Cond: (id = t1.id)
369 /*+BitmapScan(t2)NoSeqScan(t1)*/
370 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
380 ------------------------------------------
382 -> Index Scan using t1_pkey on t1
383 -> Bitmap Heap Scan on t2
384 Recheck Cond: (id = t1.id)
385 -> Bitmap Index Scan on t2_pkey
386 Index Cond: (id = t1.id)
390 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
399 ------------------------------
401 Hash Cond: (t1.id = t2.id)
407 /*+NoBitmapScan(t1)*/
408 EXPLAIN (COSTS false) SELECT * FROM t1, t4 WHERE t1.val < 10;
417 ----------------------------
426 EXPLAIN (COSTS false) SELECT * FROM t3, t4 WHERE t3.id = t4.id AND t4.ctid = '(1,1)';
435 -----------------------------------------------
437 Merge Cond: (t3.id = t4.id)
438 -> Index Scan using t3_pkey on t3
442 TID Cond: (ctid = '(1,1)'::tid)
446 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)';
455 ---------------------------------------
458 Filter: (ctid = '(1,1)'::tid)
459 -> Index Scan using t2_pkey on t2
460 Index Cond: (id = t1.id)
463 /*+ NestLoop() */ SELECT 1;
464 INFO: pg_hint_plan: hint syntax error at or near " "
465 DETAIL: NestLoop hint requires at least two relations.
478 /*+ NestLoop(x) */ SELECT 1;
479 INFO: pg_hint_plan: hint syntax error at or near " "
480 DETAIL: NestLoop hint requires at least two relations.
494 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
503 ------------------------------
505 Hash Cond: (t1.id = t2.id)
512 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
521 --------------------------------------
524 -> Index Scan using t1_pkey on t1
525 Index Cond: (id = t2.id)
528 /*+NoMergeJoin(t1 t2)*/
529 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
538 ------------------------------
540 Hash Cond: (t1.id = t2.id)
546 /*+MergeJoin(t1 t3)*/
547 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
556 -------------------------------------
558 Merge Cond: (t1.val = t3.val)
559 -> Index Scan using t1_val on t1
566 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
575 -------------------------------------
578 -> Index Scan using t1_val on t1
579 Index Cond: (val = t3.val)
582 /*+NoHashJoin(t1 t3)*/
583 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
592 -------------------------------------
595 -> Index Scan using t1_val on t1
596 Index Cond: (val = t3.val)
599 /*+MergeJoin(t4 t1 t2 t3)*/
600 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
603 MergeJoin(t1 t2 t3 t4)
609 --------------------------------------------------
611 Merge Cond: (t1.id = t3.id)
613 Merge Cond: (t1.id = t2.id)
614 -> Index Scan using t1_pkey on t1
615 -> Index Scan using t2_pkey on t2
618 Merge Cond: (t3.id = t4.id)
619 -> Index Scan using t3_pkey on t3
625 /*+HashJoin(t3 t4 t1 t2)*/
626 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
629 HashJoin(t1 t2 t3 t4)
635 --------------------------------------------------------
637 Hash Cond: (t3.id = t1.id)
641 Merge Cond: (t1.id = t4.id)
643 Merge Cond: (t1.id = t2.id)
644 -> Index Scan using t1_pkey on t1
645 -> Index Scan using t2_pkey on t2
651 /*+NestLoop(t2 t3 t4 t1) IndexScan(t3)*/
652 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
656 NestLoop(t1 t2 t3 t4)
662 --------------------------------------------------
665 Merge Cond: (t1.id = t4.id)
667 Merge Cond: (t1.id = t2.id)
668 -> Index Scan using t1_pkey on t1
669 -> Index Scan using t2_pkey on t2
673 -> Index Scan using t3_pkey on t3
674 Index Cond: (id = t1.id)
677 /*+NoNestLoop(t4 t1 t3 t2)*/
678 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
681 NoNestLoop(t1 t2 t3 t4)
687 --------------------------------------------------
689 Merge Cond: (t1.id = t3.id)
691 Merge Cond: (t1.id = t2.id)
692 -> Index Scan using t1_pkey on t1
693 -> Index Scan using t2_pkey on t2
696 Merge Cond: (t3.id = t4.id)
697 -> Index Scan using t3_pkey on t3
704 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
705 INFO: pg_hint_plan: hint syntax error at or near ""
706 DETAIL: Closing parenthesis is necessary.
708 --------------------------------------------------
711 Merge Cond: (t1.id = t4.id)
713 Merge Cond: (t1.id = t2.id)
714 -> Index Scan using t1_pkey on t1
715 -> Index Scan using t2_pkey on t2
719 -> Index Scan using t3_pkey on t3
720 Index Cond: (id = t1.id)
724 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
725 INFO: pg_hint_plan: hint syntax error at or near "Leading( )"
726 DETAIL: Leading hint requires at least two relations.
735 --------------------------------------------------
738 Merge Cond: (t1.id = t4.id)
740 Merge Cond: (t1.id = t2.id)
741 -> Index Scan using t1_pkey on t1
742 -> Index Scan using t2_pkey on t2
746 -> Index Scan using t3_pkey on t3
747 Index Cond: (id = t1.id)
751 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
752 INFO: pg_hint_plan: hint syntax error at or near "Leading( t3 )"
753 DETAIL: Leading hint requires at least two relations.
762 --------------------------------------------------
765 Merge Cond: (t1.id = t4.id)
767 Merge Cond: (t1.id = t2.id)
768 -> Index Scan using t1_pkey on t1
769 -> Index Scan using t2_pkey on t2
773 -> Index Scan using t3_pkey on t3
774 Index Cond: (id = t1.id)
777 /*+Leading( t3 t4 )*/
778 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
787 --------------------------------------------------
791 Merge Cond: (t3.id = t4.id)
792 -> Index Scan using t3_pkey on t3
796 -> Index Scan using t2_pkey on t2
797 Index Cond: (id = t3.id)
798 -> Index Scan using t1_pkey on t1
799 Index Cond: (id = t2.id)
802 /*+Leading(t3 t4 t1)*/
803 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
812 --------------------------------------------------
815 Merge Cond: (t3.id = t1.id)
817 Merge Cond: (t3.id = t4.id)
818 -> Index Scan using t3_pkey on t3
822 -> Index Scan using t1_pkey on t1
823 -> Index Scan using t2_pkey on t2
824 Index Cond: (id = t1.id)
827 /*+Leading(t3 t4 t1 t2)*/
828 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
837 --------------------------------------------------
840 Merge Cond: (t3.id = t1.id)
842 Merge Cond: (t3.id = t4.id)
843 -> Index Scan using t3_pkey on t3
847 -> Index Scan using t1_pkey on t1
848 -> Index Scan using t2_pkey on t2
849 Index Cond: (id = t1.id)
852 /*+Leading(t3 t4 t1 t2 t1)*/
853 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
854 INFO: pg_hint_plan: hint syntax error at or near "Leading(t3 t4 t1 t2 t1)"
855 DETAIL: Relation name "t1" is duplicated.
861 Leading(t3 t4 t1 t2 t1)
864 --------------------------------------------------
867 Merge Cond: (t1.id = t4.id)
869 Merge Cond: (t1.id = t2.id)
870 -> Index Scan using t1_pkey on t1
871 -> Index Scan using t2_pkey on t2
875 -> Index Scan using t3_pkey on t3
876 Index Cond: (id = t1.id)
879 /*+Leading(t3 t4 t4)*/
880 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
881 INFO: pg_hint_plan: hint syntax error at or near "Leading(t3 t4 t4)"
882 DETAIL: Relation name "t4" is duplicated.
891 --------------------------------------------------
894 Merge Cond: (t1.id = t4.id)
896 Merge Cond: (t1.id = t2.id)
897 -> Index Scan using t1_pkey on t1
898 -> Index Scan using t2_pkey on t2
902 -> Index Scan using t3_pkey on t3
903 Index Cond: (id = t1.id)
906 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
908 -----------------------------------------------
910 -> Values Scan on "*VALUES*"
911 -> Index Scan using t1_pkey on t1
912 Index Cond: (id = "*VALUES*".column1)
916 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
925 -----------------------------------------------
927 -> Values Scan on "*VALUES*"
928 -> Index Scan using t1_pkey on t1
929 Index Cond: (id = "*VALUES*".column1)
932 /*+HashJoin(t1 *VALUES*)*/
933 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
936 HashJoin(*VALUES* t1)
942 -------------------------------------------
944 Hash Cond: (t1.id = "*VALUES*".column1)
947 -> Values Scan on "*VALUES*"
950 /*+HashJoin(t1 *VALUES*) IndexScan(t1) IndexScan(*VALUES*)*/
951 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
955 HashJoin(*VALUES* t1)
962 -------------------------------------------
964 Hash Cond: (t1.id = "*VALUES*".column1)
965 -> Index Scan using t1_pkey on t1
967 -> Values Scan on "*VALUES*"
970 -- single table scan hint test
971 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);
973 ------------------------------------------------------------------------
974 Index Only Scan using t1_pkey on t1
975 Index Cond: (id = $3)
976 InitPlan 2 (returns $1)
978 InitPlan 1 (returns $0)
980 -> Index Only Scan Backward using t1_pkey on t1 v_1
981 Index Cond: ((id IS NOT NULL) AND (id < 10))
982 InitPlan 4 (returns $3)
984 InitPlan 3 (returns $2)
986 -> Index Only Scan Backward using t1_pkey on t1 v_2
987 Index Cond: ((id IS NOT NULL) AND (id < 10))
991 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);
1000 ------------------------------------------------------------------------
1001 Index Only Scan using t1_pkey on t1
1002 Index Cond: (id = $3)
1003 InitPlan 1 (returns $1)
1005 -> Bitmap Heap Scan on t1 v_1
1006 Recheck Cond: (id < 10)
1007 -> Bitmap Index Scan on t1_pkey
1008 Index Cond: (id < 10)
1009 InitPlan 3 (returns $3)
1011 InitPlan 2 (returns $2)
1013 -> Index Only Scan Backward using t1_pkey on t1 v_2
1014 Index Cond: ((id IS NOT NULL) AND (id < 10))
1017 /*+BitmapScan(v_2)*/
1018 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);
1027 ------------------------------------------------------------------------
1028 Index Only Scan using t1_pkey on t1
1029 Index Cond: (id = $3)
1030 InitPlan 2 (returns $1)
1032 InitPlan 1 (returns $0)
1034 -> Index Only Scan Backward using t1_pkey on t1 v_1
1035 Index Cond: ((id IS NOT NULL) AND (id < 10))
1036 InitPlan 3 (returns $3)
1038 -> Bitmap Heap Scan on t1 v_2
1039 Recheck Cond: (id < 10)
1040 -> Bitmap Index Scan on t1_pkey
1041 Index Cond: (id < 10)
1045 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);
1054 ------------------------------------------------------------------------
1055 Bitmap Heap Scan on t1
1056 Recheck Cond: (id = $3)
1057 InitPlan 2 (returns $1)
1059 InitPlan 1 (returns $0)
1061 -> Index Only Scan Backward using t1_pkey on t1 v_1
1062 Index Cond: ((id IS NOT NULL) AND (id < 10))
1063 InitPlan 4 (returns $3)
1065 InitPlan 3 (returns $2)
1067 -> Index Only Scan Backward using t1_pkey on t1 v_2
1068 Index Cond: ((id IS NOT NULL) AND (id < 10))
1069 -> Bitmap Index Scan on t1_pkey
1070 Index Cond: (id = $3)
1073 /*+BitmapScan(v_1)BitmapScan(v_2)*/
1074 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);
1084 --------------------------------------------------
1085 Index Only Scan using t1_pkey on t1
1086 Index Cond: (id = $3)
1087 InitPlan 1 (returns $1)
1089 -> Bitmap Heap Scan on t1 v_1
1090 Recheck Cond: (id < 10)
1091 -> Bitmap Index Scan on t1_pkey
1092 Index Cond: (id < 10)
1093 InitPlan 2 (returns $3)
1095 -> Bitmap Heap Scan on t1 v_2
1096 Recheck Cond: (id < 10)
1097 -> Bitmap Index Scan on t1_pkey
1098 Index Cond: (id < 10)
1101 /*+BitmapScan(v_1)BitmapScan(t1)*/
1102 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);
1112 ------------------------------------------------------------------------
1113 Bitmap Heap Scan on t1
1114 Recheck Cond: (id = $3)
1115 InitPlan 1 (returns $1)
1117 -> Bitmap Heap Scan on t1 v_1
1118 Recheck Cond: (id < 10)
1119 -> Bitmap Index Scan on t1_pkey
1120 Index Cond: (id < 10)
1121 InitPlan 3 (returns $3)
1123 InitPlan 2 (returns $2)
1125 -> Index Only Scan Backward using t1_pkey on t1 v_2
1126 Index Cond: ((id IS NOT NULL) AND (id < 10))
1127 -> Bitmap Index Scan on t1_pkey
1128 Index Cond: (id = $3)
1131 /*+BitmapScan(v_2)BitmapScan(t1)*/
1132 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);
1142 ------------------------------------------------------------------------
1143 Bitmap Heap Scan on t1
1144 Recheck Cond: (id = $3)
1145 InitPlan 2 (returns $1)
1147 InitPlan 1 (returns $0)
1149 -> Index Only Scan Backward using t1_pkey on t1 v_1
1150 Index Cond: ((id IS NOT NULL) AND (id < 10))
1151 InitPlan 3 (returns $3)
1153 -> Bitmap Heap Scan on t1 v_2
1154 Recheck Cond: (id < 10)
1155 -> Bitmap Index Scan on t1_pkey
1156 Index Cond: (id < 10)
1157 -> Bitmap Index Scan on t1_pkey
1158 Index Cond: (id = $3)
1161 /*+BitmapScan(v_1)BitmapScan(v_2)BitmapScan(t1)*/
1162 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);
1173 --------------------------------------------------
1174 Bitmap Heap Scan on t1
1175 Recheck Cond: (id = $3)
1176 InitPlan 1 (returns $1)
1178 -> Bitmap Heap Scan on t1 v_1
1179 Recheck Cond: (id < 10)
1180 -> Bitmap Index Scan on t1_pkey
1181 Index Cond: (id < 10)
1182 InitPlan 2 (returns $3)
1184 -> Bitmap Heap Scan on t1 v_2
1185 Recheck Cond: (id < 10)
1186 -> Bitmap Index Scan on t1_pkey
1187 Index Cond: (id < 10)
1188 -> Bitmap Index Scan on t1_pkey
1189 Index Cond: (id = $3)
1192 -- full scan hint pattern test
1193 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1195 -----------------------------------
1197 TID Cond: (ctid = '(1,1)'::tid)
1202 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1211 -------------------------------------------------
1213 Filter: ((id < 10) AND (ctid = '(1,1)'::tid))
1217 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1226 ---------------------------------
1227 Index Scan using t1_pkey on t1
1228 Index Cond: (id < 10)
1229 Filter: (ctid = '(1,1)'::tid)
1233 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1242 ------------------------------------
1243 Bitmap Heap Scan on t1
1244 Recheck Cond: (id < 10)
1245 Filter: (ctid = '(1,1)'::tid)
1246 -> Bitmap Index Scan on t1_pkey
1247 Index Cond: (id < 10)
1251 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1260 -----------------------------------
1262 TID Cond: (ctid = '(1,1)'::tid)
1267 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1276 -----------------------------------
1278 TID Cond: (ctid = '(1,1)'::tid)
1282 /*+NoIndexScan(t1)*/
1283 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1292 -----------------------------------
1294 TID Cond: (ctid = '(1,1)'::tid)
1298 /*+NoBitmapScan(t1)*/
1299 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1308 -----------------------------------
1310 TID Cond: (ctid = '(1,1)'::tid)
1315 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1324 ---------------------------------
1325 Index Scan using t1_pkey on t1
1326 Index Cond: (id < 10)
1327 Filter: (ctid = '(1,1)'::tid)
1330 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1332 -----------------------------------------
1334 Join Filter: (t1.id = t2.id)
1336 TID Cond: (ctid = '(1,1)'::tid)
1338 TID Cond: (ctid = '(1,1)'::tid)
1342 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1351 -----------------------------------------
1353 Join Filter: (t1.id = t2.id)
1355 Filter: (ctid = '(1,1)'::tid)
1357 TID Cond: (ctid = '(1,1)'::tid)
1361 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1370 -----------------------------------------
1372 Join Filter: (t1.id = t2.id)
1374 TID Cond: (ctid = '(1,1)'::tid)
1376 Filter: (ctid = '(1,1)'::tid)
1379 /*+SeqScan(t1) SeqScan(t2)*/
1380 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1390 ---------------------------------------
1392 Join Filter: (t1.id = t2.id)
1394 Filter: (ctid = '(1,1)'::tid)
1396 Filter: (ctid = '(1,1)'::tid)
1399 /*+SeqScan(t1) IndexScan(t2)*/
1400 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1410 ---------------------------------------
1413 Filter: (ctid = '(1,1)'::tid)
1414 -> Index Scan using t2_pkey on t2
1415 Index Cond: (id = t1.id)
1416 Filter: (ctid = '(1,1)'::tid)
1419 /*+SeqScan(t1) BitmapScan(t2)*/
1420 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1430 ------------------------------------------
1433 Filter: (ctid = '(1,1)'::tid)
1434 -> Bitmap Heap Scan on t2
1435 Recheck Cond: (id = t1.id)
1436 Filter: (ctid = '(1,1)'::tid)
1437 -> Bitmap Index Scan on t2_pkey
1438 Index Cond: (id = t1.id)
1441 /*+SeqScan(t1) TidScan(t2)*/
1442 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1452 -----------------------------------------
1454 Join Filter: (t1.id = t2.id)
1456 Filter: (ctid = '(1,1)'::tid)
1458 TID Cond: (ctid = '(1,1)'::tid)
1461 /*+SeqScan(t1) NoSeqScan(t2)*/
1462 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1472 -----------------------------------------
1474 Join Filter: (t1.id = t2.id)
1476 Filter: (ctid = '(1,1)'::tid)
1478 TID Cond: (ctid = '(1,1)'::tid)
1481 /*+SeqScan(t1) NoIndexScan(t2)*/
1482 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1492 -----------------------------------------
1494 Join Filter: (t1.id = t2.id)
1496 Filter: (ctid = '(1,1)'::tid)
1498 TID Cond: (ctid = '(1,1)'::tid)
1501 /*+SeqScan(t1) NoBitmapScan(t2)*/
1502 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1512 -----------------------------------------
1514 Join Filter: (t1.id = t2.id)
1516 Filter: (ctid = '(1,1)'::tid)
1518 TID Cond: (ctid = '(1,1)'::tid)
1521 /*+SeqScan(t1) NoTidScan(t2)*/
1522 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1532 ---------------------------------------
1534 Join Filter: (t1.id = t2.id)
1536 Filter: (ctid = '(1,1)'::tid)
1538 Filter: (ctid = '(1,1)'::tid)
1542 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1551 -----------------------------------------
1554 TID Cond: (ctid = '(1,1)'::tid)
1555 -> Index Scan using t1_pkey on t1
1556 Index Cond: (id = t2.id)
1557 Filter: (ctid = '(1,1)'::tid)
1561 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1570 -----------------------------------------
1573 TID Cond: (ctid = '(1,1)'::tid)
1574 -> Index Scan using t2_pkey on t2
1575 Index Cond: (id = t1.id)
1576 Filter: (ctid = '(1,1)'::tid)
1579 /*+IndexScan(t1) SeqScan(t2)*/
1580 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1590 ---------------------------------------
1593 Filter: (ctid = '(1,1)'::tid)
1594 -> Index Scan using t1_pkey on t1
1595 Index Cond: (id = t2.id)
1596 Filter: (ctid = '(1,1)'::tid)
1599 /*+IndexScan(t1) IndexScan(t2)*/
1600 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1610 ---------------------------------------
1612 -> Index Scan using t2_pkey on t2
1613 Filter: (ctid = '(1,1)'::tid)
1614 -> Index Scan using t1_pkey on t1
1615 Index Cond: (id = t2.id)
1616 Filter: (ctid = '(1,1)'::tid)
1619 /*+IndexScan(t1) BitmapScan(t2)*/
1620 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1630 ------------------------------------------
1632 -> Index Scan using t1_pkey on t1
1633 Filter: (ctid = '(1,1)'::tid)
1634 -> Bitmap Heap Scan on t2
1635 Recheck Cond: (id = t1.id)
1636 Filter: (ctid = '(1,1)'::tid)
1637 -> Bitmap Index Scan on t2_pkey
1638 Index Cond: (id = t1.id)
1641 /*+IndexScan(t1) TidScan(t2)*/
1642 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1652 -----------------------------------------
1655 TID Cond: (ctid = '(1,1)'::tid)
1656 -> Index Scan using t1_pkey on t1
1657 Index Cond: (id = t2.id)
1658 Filter: (ctid = '(1,1)'::tid)
1661 /*+IndexScan(t1) NoSeqScan(t2)*/
1662 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1672 -----------------------------------------
1675 TID Cond: (ctid = '(1,1)'::tid)
1676 -> Index Scan using t1_pkey on t1
1677 Index Cond: (id = t2.id)
1678 Filter: (ctid = '(1,1)'::tid)
1681 /*+IndexScan(t1) NoIndexScan(t2)*/
1682 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1692 -----------------------------------------
1695 TID Cond: (ctid = '(1,1)'::tid)
1696 -> Index Scan using t1_pkey on t1
1697 Index Cond: (id = t2.id)
1698 Filter: (ctid = '(1,1)'::tid)
1701 /*+IndexScan(t1) NoBitmapScan(t2)*/
1702 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1712 -----------------------------------------
1715 TID Cond: (ctid = '(1,1)'::tid)
1716 -> Index Scan using t1_pkey on t1
1717 Index Cond: (id = t2.id)
1718 Filter: (ctid = '(1,1)'::tid)
1721 /*+IndexScan(t1) NoTidScan(t2)*/
1722 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1732 ---------------------------------------
1735 Filter: (ctid = '(1,1)'::tid)
1736 -> Index Scan using t1_pkey on t1
1737 Index Cond: (id = t2.id)
1738 Filter: (ctid = '(1,1)'::tid)
1742 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1751 ------------------------------------------
1754 TID Cond: (ctid = '(1,1)'::tid)
1755 -> Bitmap Heap Scan on t1
1756 Recheck Cond: (id = t2.id)
1757 Filter: (ctid = '(1,1)'::tid)
1758 -> Bitmap Index Scan on t1_pkey
1759 Index Cond: (id = t2.id)
1763 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1772 ------------------------------------------
1775 TID Cond: (ctid = '(1,1)'::tid)
1776 -> Bitmap Heap Scan on t2
1777 Recheck Cond: (id = t1.id)
1778 Filter: (ctid = '(1,1)'::tid)
1779 -> Bitmap Index Scan on t2_pkey
1780 Index Cond: (id = t1.id)
1784 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1793 ------------------------------------------
1796 TID Cond: (ctid = '(1,1)'::tid)
1797 -> Bitmap Heap Scan on t2
1798 Recheck Cond: (id = t1.id)
1799 Filter: (ctid = '(1,1)'::tid)
1800 -> Bitmap Index Scan on t2_pkey
1801 Index Cond: (id = t1.id)
1804 /*+BitmapScan(t1) SeqScan(t2)*/
1805 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1815 ------------------------------------------
1818 Filter: (ctid = '(1,1)'::tid)
1819 -> Bitmap Heap Scan on t1
1820 Recheck Cond: (id = t2.id)
1821 Filter: (ctid = '(1,1)'::tid)
1822 -> Bitmap Index Scan on t1_pkey
1823 Index Cond: (id = t2.id)
1826 /*+BitmapScan(t1) IndexScan(t2)*/
1827 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1837 ------------------------------------------
1839 -> Index Scan using t2_pkey on t2
1840 Filter: (ctid = '(1,1)'::tid)
1841 -> Bitmap Heap Scan on t1
1842 Recheck Cond: (id = t2.id)
1843 Filter: (ctid = '(1,1)'::tid)
1844 -> Bitmap Index Scan on t1_pkey
1845 Index Cond: (id = t2.id)
1848 /*+BitmapScan(t1) BitmapScan(t2)*/
1849 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1859 ------------------------------------------
1861 -> Index Scan using t2_pkey on t2
1862 Filter: (ctid = '(1,1)'::tid)
1863 -> Bitmap Heap Scan on t1
1864 Recheck Cond: (id = t2.id)
1865 Filter: (ctid = '(1,1)'::tid)
1866 -> Bitmap Index Scan on t1_pkey
1867 Index Cond: (id = t2.id)
1870 /*+BitmapScan(t1) TidScan(t2)*/
1871 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1881 ------------------------------------------
1884 TID Cond: (ctid = '(1,1)'::tid)
1885 -> Bitmap Heap Scan on t1
1886 Recheck Cond: (id = t2.id)
1887 Filter: (ctid = '(1,1)'::tid)
1888 -> Bitmap Index Scan on t1_pkey
1889 Index Cond: (id = t2.id)
1892 /*+BitmapScan(t1) NoSeqScan(t2)*/
1893 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1903 ------------------------------------------
1906 TID Cond: (ctid = '(1,1)'::tid)
1907 -> Bitmap Heap Scan on t1
1908 Recheck Cond: (id = t2.id)
1909 Filter: (ctid = '(1,1)'::tid)
1910 -> Bitmap Index Scan on t1_pkey
1911 Index Cond: (id = t2.id)
1914 /*+BitmapScan(t1) NoIndexScan(t2)*/
1915 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1925 ------------------------------------------
1928 TID Cond: (ctid = '(1,1)'::tid)
1929 -> Bitmap Heap Scan on t1
1930 Recheck Cond: (id = t2.id)
1931 Filter: (ctid = '(1,1)'::tid)
1932 -> Bitmap Index Scan on t1_pkey
1933 Index Cond: (id = t2.id)
1936 /*+BitmapScan(t1) NoBitmapScan(t2)*/
1937 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1947 ------------------------------------------
1950 TID Cond: (ctid = '(1,1)'::tid)
1951 -> Bitmap Heap Scan on t1
1952 Recheck Cond: (id = t2.id)
1953 Filter: (ctid = '(1,1)'::tid)
1954 -> Bitmap Index Scan on t1_pkey
1955 Index Cond: (id = t2.id)
1958 /*+BitmapScan(t1) NoTidScan(t2)*/
1959 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1969 ------------------------------------------
1972 Filter: (ctid = '(1,1)'::tid)
1973 -> Bitmap Heap Scan on t1
1974 Recheck Cond: (id = t2.id)
1975 Filter: (ctid = '(1,1)'::tid)
1976 -> Bitmap Index Scan on t1_pkey
1977 Index Cond: (id = t2.id)
1981 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1990 -----------------------------------------
1992 Join Filter: (t1.id = t2.id)
1994 TID Cond: (ctid = '(1,1)'::tid)
1996 TID Cond: (ctid = '(1,1)'::tid)
2000 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2009 -----------------------------------------
2011 Join Filter: (t1.id = t2.id)
2013 TID Cond: (ctid = '(1,1)'::tid)
2015 TID Cond: (ctid = '(1,1)'::tid)
2018 /*+TidScan(t1) SeqScan(t2)*/
2019 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2029 -----------------------------------------
2031 Join Filter: (t1.id = t2.id)
2033 TID Cond: (ctid = '(1,1)'::tid)
2035 Filter: (ctid = '(1,1)'::tid)
2038 /*+TidScan(t1) IndexScan(t2)*/
2039 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2049 -----------------------------------------
2052 TID Cond: (ctid = '(1,1)'::tid)
2053 -> Index Scan using t2_pkey on t2
2054 Index Cond: (id = t1.id)
2055 Filter: (ctid = '(1,1)'::tid)
2058 /*+TidScan(t1) BitmapScan(t2)*/
2059 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2069 ------------------------------------------
2072 TID Cond: (ctid = '(1,1)'::tid)
2073 -> Bitmap Heap Scan on t2
2074 Recheck Cond: (id = t1.id)
2075 Filter: (ctid = '(1,1)'::tid)
2076 -> Bitmap Index Scan on t2_pkey
2077 Index Cond: (id = t1.id)
2080 /*+TidScan(t1) TidScan(t2)*/
2081 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2091 -----------------------------------------
2093 Join Filter: (t1.id = t2.id)
2095 TID Cond: (ctid = '(1,1)'::tid)
2097 TID Cond: (ctid = '(1,1)'::tid)
2100 /*+TidScan(t1) NoSeqScan(t2)*/
2101 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2111 -----------------------------------------
2113 Join Filter: (t1.id = t2.id)
2115 TID Cond: (ctid = '(1,1)'::tid)
2117 TID Cond: (ctid = '(1,1)'::tid)
2120 /*+TidScan(t1) NoIndexScan(t2)*/
2121 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2131 -----------------------------------------
2133 Join Filter: (t1.id = t2.id)
2135 TID Cond: (ctid = '(1,1)'::tid)
2137 TID Cond: (ctid = '(1,1)'::tid)
2140 /*+TidScan(t1) NoBitmapScan(t2)*/
2141 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2151 -----------------------------------------
2153 Join Filter: (t1.id = t2.id)
2155 TID Cond: (ctid = '(1,1)'::tid)
2157 TID Cond: (ctid = '(1,1)'::tid)
2160 /*+TidScan(t1) NoTidScan(t2)*/
2161 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2171 -----------------------------------------
2174 TID Cond: (ctid = '(1,1)'::tid)
2175 -> Index Scan using t2_pkey on t2
2176 Index Cond: (id = t1.id)
2177 Filter: (ctid = '(1,1)'::tid)
2181 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2190 -----------------------------------------
2192 Join Filter: (t1.id = t2.id)
2194 TID Cond: (ctid = '(1,1)'::tid)
2196 TID Cond: (ctid = '(1,1)'::tid)
2200 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2209 -----------------------------------------
2211 Join Filter: (t1.id = t2.id)
2213 TID Cond: (ctid = '(1,1)'::tid)
2215 TID Cond: (ctid = '(1,1)'::tid)
2218 /*+NoSeqScan(t1) SeqScan(t2)*/
2219 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2229 -----------------------------------------
2231 Join Filter: (t1.id = t2.id)
2233 TID Cond: (ctid = '(1,1)'::tid)
2235 Filter: (ctid = '(1,1)'::tid)
2238 /*+NoSeqScan(t1) IndexScan(t2)*/
2239 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2249 -----------------------------------------
2252 TID Cond: (ctid = '(1,1)'::tid)
2253 -> Index Scan using t2_pkey on t2
2254 Index Cond: (id = t1.id)
2255 Filter: (ctid = '(1,1)'::tid)
2258 /*+NoSeqScan(t1) BitmapScan(t2)*/
2259 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2269 ------------------------------------------
2272 TID Cond: (ctid = '(1,1)'::tid)
2273 -> Bitmap Heap Scan on t2
2274 Recheck Cond: (id = t1.id)
2275 Filter: (ctid = '(1,1)'::tid)
2276 -> Bitmap Index Scan on t2_pkey
2277 Index Cond: (id = t1.id)
2280 /*+NoSeqScan(t1) TidScan(t2)*/
2281 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2291 -----------------------------------------
2293 Join Filter: (t1.id = t2.id)
2295 TID Cond: (ctid = '(1,1)'::tid)
2297 TID Cond: (ctid = '(1,1)'::tid)
2300 /*+NoSeqScan(t1) NoSeqScan(t2)*/
2301 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2311 -----------------------------------------
2313 Join Filter: (t1.id = t2.id)
2315 TID Cond: (ctid = '(1,1)'::tid)
2317 TID Cond: (ctid = '(1,1)'::tid)
2320 /*+NoSeqScan(t1) NoIndexScan(t2)*/
2321 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2331 -----------------------------------------
2333 Join Filter: (t1.id = t2.id)
2335 TID Cond: (ctid = '(1,1)'::tid)
2337 TID Cond: (ctid = '(1,1)'::tid)
2340 /*+NoSeqScan(t1) NoBitmapScan(t2)*/
2341 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2351 -----------------------------------------
2353 Join Filter: (t1.id = t2.id)
2355 TID Cond: (ctid = '(1,1)'::tid)
2357 TID Cond: (ctid = '(1,1)'::tid)
2360 /*+NoSeqScan(t1) NoTidScan(t2)*/
2361 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2371 -----------------------------------------
2374 TID Cond: (ctid = '(1,1)'::tid)
2375 -> Index Scan using t2_pkey on t2
2376 Index Cond: (id = t1.id)
2377 Filter: (ctid = '(1,1)'::tid)
2380 /*+NoIndexScan(t1)*/
2381 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2390 -----------------------------------------
2392 Join Filter: (t1.id = t2.id)
2394 TID Cond: (ctid = '(1,1)'::tid)
2396 TID Cond: (ctid = '(1,1)'::tid)
2399 /*+NoIndexScan(t2)*/
2400 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2409 -----------------------------------------
2411 Join Filter: (t1.id = t2.id)
2413 TID Cond: (ctid = '(1,1)'::tid)
2415 TID Cond: (ctid = '(1,1)'::tid)
2418 /*+NoIndexScan(t1) SeqScan(t2)*/
2419 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2429 -----------------------------------------
2431 Join Filter: (t1.id = t2.id)
2433 TID Cond: (ctid = '(1,1)'::tid)
2435 Filter: (ctid = '(1,1)'::tid)
2438 /*+NoIndexScan(t1) IndexScan(t2)*/
2439 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2449 -----------------------------------------
2452 TID Cond: (ctid = '(1,1)'::tid)
2453 -> Index Scan using t2_pkey on t2
2454 Index Cond: (id = t1.id)
2455 Filter: (ctid = '(1,1)'::tid)
2458 /*+NoIndexScan(t1) BitmapScan(t2)*/
2459 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2469 ------------------------------------------
2472 TID Cond: (ctid = '(1,1)'::tid)
2473 -> Bitmap Heap Scan on t2
2474 Recheck Cond: (id = t1.id)
2475 Filter: (ctid = '(1,1)'::tid)
2476 -> Bitmap Index Scan on t2_pkey
2477 Index Cond: (id = t1.id)
2480 /*+NoIndexScan(t1) TidScan(t2)*/
2481 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2491 -----------------------------------------
2493 Join Filter: (t1.id = t2.id)
2495 TID Cond: (ctid = '(1,1)'::tid)
2497 TID Cond: (ctid = '(1,1)'::tid)
2500 /*+NoIndexScan(t1) NoSeqScan(t2)*/
2501 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2511 -----------------------------------------
2513 Join Filter: (t1.id = t2.id)
2515 TID Cond: (ctid = '(1,1)'::tid)
2517 TID Cond: (ctid = '(1,1)'::tid)
2520 /*+NoIndexScan(t1) NoIndexScan(t2)*/
2521 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2531 -----------------------------------------
2533 Join Filter: (t1.id = t2.id)
2535 TID Cond: (ctid = '(1,1)'::tid)
2537 TID Cond: (ctid = '(1,1)'::tid)
2540 /*+NoIndexScan(t1) NoBitmapScan(t2)*/
2541 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2551 -----------------------------------------
2553 Join Filter: (t1.id = t2.id)
2555 TID Cond: (ctid = '(1,1)'::tid)
2557 TID Cond: (ctid = '(1,1)'::tid)
2560 /*+NoIndexScan(t1) NoTidScan(t2)*/
2561 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2571 -----------------------------------------
2574 TID Cond: (ctid = '(1,1)'::tid)
2575 -> Index Scan using t2_pkey on t2
2576 Index Cond: (id = t1.id)
2577 Filter: (ctid = '(1,1)'::tid)
2580 /*+NoBitmapScan(t1)*/
2581 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2590 -----------------------------------------
2592 Join Filter: (t1.id = t2.id)
2594 TID Cond: (ctid = '(1,1)'::tid)
2596 TID Cond: (ctid = '(1,1)'::tid)
2599 /*+NoBitmapScan(t2)*/
2600 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2609 -----------------------------------------
2611 Join Filter: (t1.id = t2.id)
2613 TID Cond: (ctid = '(1,1)'::tid)
2615 TID Cond: (ctid = '(1,1)'::tid)
2618 /*+NoBitmapScan(t1) SeqScan(t2)*/
2619 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2629 -----------------------------------------
2631 Join Filter: (t1.id = t2.id)
2633 TID Cond: (ctid = '(1,1)'::tid)
2635 Filter: (ctid = '(1,1)'::tid)
2638 /*+NoBitmapScan(t1) IndexScan(t2)*/
2639 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2649 -----------------------------------------
2652 TID Cond: (ctid = '(1,1)'::tid)
2653 -> Index Scan using t2_pkey on t2
2654 Index Cond: (id = t1.id)
2655 Filter: (ctid = '(1,1)'::tid)
2658 /*+NoBitmapScan(t1) BitmapScan(t2)*/
2659 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2669 ------------------------------------------
2672 TID Cond: (ctid = '(1,1)'::tid)
2673 -> Bitmap Heap Scan on t2
2674 Recheck Cond: (id = t1.id)
2675 Filter: (ctid = '(1,1)'::tid)
2676 -> Bitmap Index Scan on t2_pkey
2677 Index Cond: (id = t1.id)
2680 /*+NoBitmapScan(t1) TidScan(t2)*/
2681 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2691 -----------------------------------------
2693 Join Filter: (t1.id = t2.id)
2695 TID Cond: (ctid = '(1,1)'::tid)
2697 TID Cond: (ctid = '(1,1)'::tid)
2700 /*+NoBitmapScan(t1) NoSeqScan(t2)*/
2701 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2711 -----------------------------------------
2713 Join Filter: (t1.id = t2.id)
2715 TID Cond: (ctid = '(1,1)'::tid)
2717 TID Cond: (ctid = '(1,1)'::tid)
2720 /*+NoBitmapScan(t1) NoIndexScan(t2)*/
2721 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2731 -----------------------------------------
2733 Join Filter: (t1.id = t2.id)
2735 TID Cond: (ctid = '(1,1)'::tid)
2737 TID Cond: (ctid = '(1,1)'::tid)
2740 /*+NoBitmapScan(t1) NoBitmapScan(t2)*/
2741 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2751 -----------------------------------------
2753 Join Filter: (t1.id = t2.id)
2755 TID Cond: (ctid = '(1,1)'::tid)
2757 TID Cond: (ctid = '(1,1)'::tid)
2760 /*+NoBitmapScan(t1) NoTidScan(t2)*/
2761 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2771 -----------------------------------------
2774 TID Cond: (ctid = '(1,1)'::tid)
2775 -> Index Scan using t2_pkey on t2
2776 Index Cond: (id = t1.id)
2777 Filter: (ctid = '(1,1)'::tid)
2781 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2790 -----------------------------------------
2793 TID Cond: (ctid = '(1,1)'::tid)
2794 -> Index Scan using t1_pkey on t1
2795 Index Cond: (id = t2.id)
2796 Filter: (ctid = '(1,1)'::tid)
2800 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2809 -----------------------------------------
2812 TID Cond: (ctid = '(1,1)'::tid)
2813 -> Index Scan using t2_pkey on t2
2814 Index Cond: (id = t1.id)
2815 Filter: (ctid = '(1,1)'::tid)
2818 /*+NoTidScan(t1) SeqScan(t2)*/
2819 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2829 ---------------------------------------
2832 Filter: (ctid = '(1,1)'::tid)
2833 -> Index Scan using t1_pkey on t1
2834 Index Cond: (id = t2.id)
2835 Filter: (ctid = '(1,1)'::tid)
2838 /*+NoTidScan(t1) IndexScan(t2)*/
2839 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2849 ---------------------------------------
2851 -> Index Scan using t2_pkey on t2
2852 Filter: (ctid = '(1,1)'::tid)
2853 -> Index Scan using t1_pkey on t1
2854 Index Cond: (id = t2.id)
2855 Filter: (ctid = '(1,1)'::tid)
2858 /*+NoTidScan(t1) BitmapScan(t2)*/
2859 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2869 ------------------------------------------
2872 Filter: (ctid = '(1,1)'::tid)
2873 -> Bitmap Heap Scan on t2
2874 Recheck Cond: (id = t1.id)
2875 Filter: (ctid = '(1,1)'::tid)
2876 -> Bitmap Index Scan on t2_pkey
2877 Index Cond: (id = t1.id)
2880 /*+NoTidScan(t1) TidScan(t2)*/
2881 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2891 -----------------------------------------
2894 TID Cond: (ctid = '(1,1)'::tid)
2895 -> Index Scan using t1_pkey on t1
2896 Index Cond: (id = t2.id)
2897 Filter: (ctid = '(1,1)'::tid)
2900 /*+NoTidScan(t1) NoSeqScan(t2)*/
2901 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2911 -----------------------------------------
2914 TID Cond: (ctid = '(1,1)'::tid)
2915 -> Index Scan using t1_pkey on t1
2916 Index Cond: (id = t2.id)
2917 Filter: (ctid = '(1,1)'::tid)
2920 /*+NoTidScan(t1) NoIndexScan(t2)*/
2921 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2931 -----------------------------------------
2934 TID Cond: (ctid = '(1,1)'::tid)
2935 -> Index Scan using t1_pkey on t1
2936 Index Cond: (id = t2.id)
2937 Filter: (ctid = '(1,1)'::tid)
2940 /*+NoTidScan(t1) NoBitmapScan(t2)*/
2941 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2951 -----------------------------------------
2954 TID Cond: (ctid = '(1,1)'::tid)
2955 -> Index Scan using t1_pkey on t1
2956 Index Cond: (id = t2.id)
2957 Filter: (ctid = '(1,1)'::tid)
2960 /*+NoTidScan(t1) NoTidScan(t2)*/
2961 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2971 ---------------------------------------
2974 Filter: (ctid = '(1,1)'::tid)
2975 -> Index Scan using t1_pkey on t1
2976 Index Cond: (id = t2.id)
2977 Filter: (ctid = '(1,1)'::tid)
2981 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;
2983 -----------------------------------------
2985 Join Filter: (t1.id = t2.id)
2987 TID Cond: (ctid = '(1,1)'::tid)
2990 TID Cond: (ctid = '(1,1)'::tid)
2994 /*+BitmapScan(t1) BitmapScan(t2)*/
2995 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;
3005 --------------------------------------------------------
3007 -> Bitmap Heap Scan on t2
3008 Recheck Cond: (id < 10)
3009 Filter: (ctid = '(1,1)'::tid)
3010 -> Bitmap Index Scan on t2_pkey
3011 Index Cond: (id < 10)
3012 -> Bitmap Heap Scan on t1
3013 Recheck Cond: ((id = t2.id) AND (id < 10))
3014 Filter: (ctid = '(1,1)'::tid)
3015 -> Bitmap Index Scan on t1_pkey
3016 Index Cond: ((id = t2.id) AND (id < 10))
3020 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
3022 ------------------------------
3024 Hash Cond: (t1.id = t2.id)
3030 /*+MergeJoin(t1 t2)*/
3031 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
3040 --------------------------------------
3042 Merge Cond: (t1.id = t2.id)
3043 -> Index Scan using t1_pkey on t1
3044 -> Index Scan using t2_pkey on t2
3048 /*+NestLoop(t1 t2)*/
3049 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
3058 ------------------------------
3060 Hash Cond: (t1.id = t2.id)
3066 -- inheritance tables test
3067 SET constraint_exclusion TO off;
3068 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3070 -----------------------------------------------------------------------
3072 -> Seq Scan on p1 p1_1
3073 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3074 -> Seq Scan on p1_c1 p1_2
3075 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3076 -> Seq Scan on p1_c2 p1_3
3077 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3078 -> Seq Scan on p1_c3 p1_4
3079 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3080 -> Seq Scan on p1_c4 p1_5
3081 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3082 -> Seq Scan on p1_c1_c1 p1_6
3083 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3084 -> Seq Scan on p1_c1_c2 p1_7
3085 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3086 -> Seq Scan on p1_c3_c1 p1_8
3087 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3088 -> Seq Scan on p1_c3_c2 p1_9
3089 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3092 SET constraint_exclusion TO on;
3093 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3095 -----------------------------------------------------------------------
3097 -> Seq Scan on p1 p1_1
3098 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3099 -> Seq Scan on p1_c1 p1_2
3100 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3101 -> Seq Scan on p1_c1_c1 p1_3
3102 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3103 -> Seq Scan on p1_c1_c2 p1_4
3104 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3107 SET constraint_exclusion TO off;
3109 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3118 -----------------------------------------------------------------------
3120 -> Seq Scan on p1 p1_1
3121 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3122 -> Seq Scan on p1_c1 p1_2
3123 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3124 -> Seq Scan on p1_c2 p1_3
3125 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3126 -> Seq Scan on p1_c3 p1_4
3127 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3128 -> Seq Scan on p1_c4 p1_5
3129 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3130 -> Seq Scan on p1_c1_c1 p1_6
3131 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3132 -> Seq Scan on p1_c1_c2 p1_7
3133 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3134 -> Seq Scan on p1_c3_c1 p1_8
3135 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3136 -> Seq Scan on p1_c3_c2 p1_9
3137 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3141 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3150 -------------------------------------------------------
3152 -> Index Scan using p1_pkey on p1 p1_1
3153 Index Cond: ((id >= 50) AND (id <= 51))
3154 Filter: (ctid = '(1,1)'::tid)
3155 -> Index Scan using p1_c1_pkey on p1_c1 p1_2
3156 Index Cond: ((id >= 50) AND (id <= 51))
3157 Filter: (ctid = '(1,1)'::tid)
3158 -> Index Scan using p1_c2_pkey on p1_c2 p1_3
3159 Index Cond: ((id >= 50) AND (id <= 51))
3160 Filter: (ctid = '(1,1)'::tid)
3161 -> Index Scan using p1_c3_pkey on p1_c3 p1_4
3162 Index Cond: ((id >= 50) AND (id <= 51))
3163 Filter: (ctid = '(1,1)'::tid)
3164 -> Index Scan using p1_c4_pkey on p1_c4 p1_5
3165 Index Cond: ((id >= 50) AND (id <= 51))
3166 Filter: (ctid = '(1,1)'::tid)
3167 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_6
3168 Index Cond: ((id >= 50) AND (id <= 51))
3169 Filter: (ctid = '(1,1)'::tid)
3170 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_7
3171 Index Cond: ((id >= 50) AND (id <= 51))
3172 Filter: (ctid = '(1,1)'::tid)
3173 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1 p1_8
3174 Index Cond: ((id >= 50) AND (id <= 51))
3175 Filter: (ctid = '(1,1)'::tid)
3176 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2 p1_9
3177 Index Cond: ((id >= 50) AND (id <= 51))
3178 Filter: (ctid = '(1,1)'::tid)
3182 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3191 -------------------------------------------------------
3193 -> Bitmap Heap Scan on p1 p1_1
3194 Recheck Cond: ((id >= 50) AND (id <= 51))
3195 Filter: (ctid = '(1,1)'::tid)
3196 -> Bitmap Index Scan on p1_pkey
3197 Index Cond: ((id >= 50) AND (id <= 51))
3198 -> Bitmap Heap Scan on p1_c1 p1_2
3199 Recheck Cond: ((id >= 50) AND (id <= 51))
3200 Filter: (ctid = '(1,1)'::tid)
3201 -> Bitmap Index Scan on p1_c1_pkey
3202 Index Cond: ((id >= 50) AND (id <= 51))
3203 -> Bitmap Heap Scan on p1_c2 p1_3
3204 Recheck Cond: ((id >= 50) AND (id <= 51))
3205 Filter: (ctid = '(1,1)'::tid)
3206 -> Bitmap Index Scan on p1_c2_pkey
3207 Index Cond: ((id >= 50) AND (id <= 51))
3208 -> Bitmap Heap Scan on p1_c3 p1_4
3209 Recheck Cond: ((id >= 50) AND (id <= 51))
3210 Filter: (ctid = '(1,1)'::tid)
3211 -> Bitmap Index Scan on p1_c3_pkey
3212 Index Cond: ((id >= 50) AND (id <= 51))
3213 -> Bitmap Heap Scan on p1_c4 p1_5
3214 Recheck Cond: ((id >= 50) AND (id <= 51))
3215 Filter: (ctid = '(1,1)'::tid)
3216 -> Bitmap Index Scan on p1_c4_pkey
3217 Index Cond: ((id >= 50) AND (id <= 51))
3218 -> Bitmap Heap Scan on p1_c1_c1 p1_6
3219 Recheck Cond: ((id >= 50) AND (id <= 51))
3220 Filter: (ctid = '(1,1)'::tid)
3221 -> Bitmap Index Scan on p1_c1_c1_pkey
3222 Index Cond: ((id >= 50) AND (id <= 51))
3223 -> Bitmap Heap Scan on p1_c1_c2 p1_7
3224 Recheck Cond: ((id >= 50) AND (id <= 51))
3225 Filter: (ctid = '(1,1)'::tid)
3226 -> Bitmap Index Scan on p1_c1_c2_pkey
3227 Index Cond: ((id >= 50) AND (id <= 51))
3228 -> Bitmap Heap Scan on p1_c3_c1 p1_8
3229 Recheck Cond: ((id >= 50) AND (id <= 51))
3230 Filter: (ctid = '(1,1)'::tid)
3231 -> Bitmap Index Scan on p1_c3_c1_pkey
3232 Index Cond: ((id >= 50) AND (id <= 51))
3233 -> Bitmap Heap Scan on p1_c3_c2 p1_9
3234 Recheck Cond: ((id >= 50) AND (id <= 51))
3235 Filter: (ctid = '(1,1)'::tid)
3236 -> Bitmap Index Scan on p1_c3_c2_pkey
3237 Index Cond: ((id >= 50) AND (id <= 51))
3241 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3250 ---------------------------------------------
3252 -> Tid Scan on p1 p1_1
3253 TID Cond: (ctid = '(1,1)'::tid)
3254 Filter: ((id >= 50) AND (id <= 51))
3255 -> Tid Scan on p1_c1 p1_2
3256 TID Cond: (ctid = '(1,1)'::tid)
3257 Filter: ((id >= 50) AND (id <= 51))
3258 -> Tid Scan on p1_c2 p1_3
3259 TID Cond: (ctid = '(1,1)'::tid)
3260 Filter: ((id >= 50) AND (id <= 51))
3261 -> Tid Scan on p1_c3 p1_4
3262 TID Cond: (ctid = '(1,1)'::tid)
3263 Filter: ((id >= 50) AND (id <= 51))
3264 -> Tid Scan on p1_c4 p1_5
3265 TID Cond: (ctid = '(1,1)'::tid)
3266 Filter: ((id >= 50) AND (id <= 51))
3267 -> Tid Scan on p1_c1_c1 p1_6
3268 TID Cond: (ctid = '(1,1)'::tid)
3269 Filter: ((id >= 50) AND (id <= 51))
3270 -> Tid Scan on p1_c1_c2 p1_7
3271 TID Cond: (ctid = '(1,1)'::tid)
3272 Filter: ((id >= 50) AND (id <= 51))
3273 -> Tid Scan on p1_c3_c1 p1_8
3274 TID Cond: (ctid = '(1,1)'::tid)
3275 Filter: ((id >= 50) AND (id <= 51))
3276 -> Tid Scan on p1_c3_c2 p1_9
3277 TID Cond: (ctid = '(1,1)'::tid)
3278 Filter: ((id >= 50) AND (id <= 51))
3281 SET constraint_exclusion TO on;
3283 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3292 -----------------------------------------------------------------------
3294 -> Seq Scan on p1 p1_1
3295 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3296 -> Seq Scan on p1_c1 p1_2
3297 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3298 -> Seq Scan on p1_c1_c1 p1_3
3299 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3300 -> Seq Scan on p1_c1_c2 p1_4
3301 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3305 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3314 -------------------------------------------------------
3316 -> Index Scan using p1_pkey on p1 p1_1
3317 Index Cond: ((id >= 50) AND (id <= 51))
3318 Filter: (ctid = '(1,1)'::tid)
3319 -> Index Scan using p1_c1_pkey on p1_c1 p1_2
3320 Index Cond: ((id >= 50) AND (id <= 51))
3321 Filter: (ctid = '(1,1)'::tid)
3322 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_3
3323 Index Cond: ((id >= 50) AND (id <= 51))
3324 Filter: (ctid = '(1,1)'::tid)
3325 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_4
3326 Index Cond: ((id >= 50) AND (id <= 51))
3327 Filter: (ctid = '(1,1)'::tid)
3331 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3340 -------------------------------------------------------
3342 -> Bitmap Heap Scan on p1 p1_1
3343 Recheck Cond: ((id >= 50) AND (id <= 51))
3344 Filter: (ctid = '(1,1)'::tid)
3345 -> Bitmap Index Scan on p1_pkey
3346 Index Cond: ((id >= 50) AND (id <= 51))
3347 -> Bitmap Heap Scan on p1_c1 p1_2
3348 Recheck Cond: ((id >= 50) AND (id <= 51))
3349 Filter: (ctid = '(1,1)'::tid)
3350 -> Bitmap Index Scan on p1_c1_pkey
3351 Index Cond: ((id >= 50) AND (id <= 51))
3352 -> Bitmap Heap Scan on p1_c1_c1 p1_3
3353 Recheck Cond: ((id >= 50) AND (id <= 51))
3354 Filter: (ctid = '(1,1)'::tid)
3355 -> Bitmap Index Scan on p1_c1_c1_pkey
3356 Index Cond: ((id >= 50) AND (id <= 51))
3357 -> Bitmap Heap Scan on p1_c1_c2 p1_4
3358 Recheck Cond: ((id >= 50) AND (id <= 51))
3359 Filter: (ctid = '(1,1)'::tid)
3360 -> Bitmap Index Scan on p1_c1_c2_pkey
3361 Index Cond: ((id >= 50) AND (id <= 51))
3365 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3374 ---------------------------------------------
3376 -> Tid Scan on p1 p1_1
3377 TID Cond: (ctid = '(1,1)'::tid)
3378 Filter: ((id >= 50) AND (id <= 51))
3379 -> Tid Scan on p1_c1 p1_2
3380 TID Cond: (ctid = '(1,1)'::tid)
3381 Filter: ((id >= 50) AND (id <= 51))
3382 -> Tid Scan on p1_c1_c1 p1_3
3383 TID Cond: (ctid = '(1,1)'::tid)
3384 Filter: ((id >= 50) AND (id <= 51))
3385 -> Tid Scan on p1_c1_c2 p1_4
3386 TID Cond: (ctid = '(1,1)'::tid)
3387 Filter: ((id >= 50) AND (id <= 51))
3390 SET constraint_exclusion TO off;
3391 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;
3393 -----------------------------------------------------------------------------------
3395 Merge Cond: (p1.id = t1.id)
3399 -> Seq Scan on p1 p1_1
3400 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3401 -> Seq Scan on p1_c1 p1_2
3402 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3403 -> Seq Scan on p1_c2 p1_3
3404 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3405 -> Seq Scan on p1_c3 p1_4
3406 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3407 -> Seq Scan on p1_c4 p1_5
3408 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3409 -> Seq Scan on p1_c1_c1 p1_6
3410 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3411 -> Seq Scan on p1_c1_c2 p1_7
3412 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3413 -> Seq Scan on p1_c3_c1 p1_8
3414 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3415 -> Seq Scan on p1_c3_c2 p1_9
3416 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3417 -> Index Scan using t1_pkey on t1
3418 Index Cond: (id < 10)
3421 SET constraint_exclusion TO on;
3422 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3424 -----------------------------------------------------------------------------------
3426 Merge Cond: (p1.id = t1.id)
3430 -> Seq Scan on p1 p1_1
3431 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3432 -> Seq Scan on p1_c1 p1_2
3433 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3434 -> Seq Scan on p1_c1_c1 p1_3
3435 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3436 -> Seq Scan on p1_c1_c2 p1_4
3437 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3438 -> Index Scan using t1_pkey on t1
3439 Index Cond: (id < 10)
3442 SET constraint_exclusion TO off;
3444 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;
3453 -----------------------------------------------------------------------------------
3455 Merge Cond: (p1.id = t1.id)
3459 -> Seq Scan on p1 p1_1
3460 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3461 -> Seq Scan on p1_c1 p1_2
3462 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3463 -> Seq Scan on p1_c2 p1_3
3464 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3465 -> Seq Scan on p1_c3 p1_4
3466 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3467 -> Seq Scan on p1_c4 p1_5
3468 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3469 -> Seq Scan on p1_c1_c1 p1_6
3470 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3471 -> Seq Scan on p1_c1_c2 p1_7
3472 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3473 -> Seq Scan on p1_c3_c1 p1_8
3474 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3475 -> Seq Scan on p1_c3_c2 p1_9
3476 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3477 -> Index Scan using t1_pkey on t1
3478 Index Cond: (id < 10)
3482 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3491 -------------------------------------------------------------
3493 Merge Cond: (p1.id = t1.id)
3496 -> Index Scan using p1_pkey on p1 p1_1
3497 Index Cond: ((id >= 50) AND (id <= 51))
3498 Filter: (ctid = '(1,1)'::tid)
3499 -> Index Scan using p1_c1_pkey on p1_c1 p1_2
3500 Index Cond: ((id >= 50) AND (id <= 51))
3501 Filter: (ctid = '(1,1)'::tid)
3502 -> Index Scan using p1_c2_pkey on p1_c2 p1_3
3503 Index Cond: ((id >= 50) AND (id <= 51))
3504 Filter: (ctid = '(1,1)'::tid)
3505 -> Index Scan using p1_c3_pkey on p1_c3 p1_4
3506 Index Cond: ((id >= 50) AND (id <= 51))
3507 Filter: (ctid = '(1,1)'::tid)
3508 -> Index Scan using p1_c4_pkey on p1_c4 p1_5
3509 Index Cond: ((id >= 50) AND (id <= 51))
3510 Filter: (ctid = '(1,1)'::tid)
3511 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_6
3512 Index Cond: ((id >= 50) AND (id <= 51))
3513 Filter: (ctid = '(1,1)'::tid)
3514 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_7
3515 Index Cond: ((id >= 50) AND (id <= 51))
3516 Filter: (ctid = '(1,1)'::tid)
3517 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1 p1_8
3518 Index Cond: ((id >= 50) AND (id <= 51))
3519 Filter: (ctid = '(1,1)'::tid)
3520 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2 p1_9
3521 Index Cond: ((id >= 50) AND (id <= 51))
3522 Filter: (ctid = '(1,1)'::tid)
3523 -> Index Scan using t1_pkey on t1
3524 Index Cond: (id < 10)
3528 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;
3537 -------------------------------------------------------------------
3539 Merge Cond: (p1.id = t1.id)
3543 -> Bitmap Heap Scan on p1 p1_1
3544 Recheck Cond: ((id >= 50) AND (id <= 51))
3545 Filter: (ctid = '(1,1)'::tid)
3546 -> Bitmap Index Scan on p1_pkey
3547 Index Cond: ((id >= 50) AND (id <= 51))
3548 -> Bitmap Heap Scan on p1_c1 p1_2
3549 Recheck Cond: ((id >= 50) AND (id <= 51))
3550 Filter: (ctid = '(1,1)'::tid)
3551 -> Bitmap Index Scan on p1_c1_pkey
3552 Index Cond: ((id >= 50) AND (id <= 51))
3553 -> Bitmap Heap Scan on p1_c2 p1_3
3554 Recheck Cond: ((id >= 50) AND (id <= 51))
3555 Filter: (ctid = '(1,1)'::tid)
3556 -> Bitmap Index Scan on p1_c2_pkey
3557 Index Cond: ((id >= 50) AND (id <= 51))
3558 -> Bitmap Heap Scan on p1_c3 p1_4
3559 Recheck Cond: ((id >= 50) AND (id <= 51))
3560 Filter: (ctid = '(1,1)'::tid)
3561 -> Bitmap Index Scan on p1_c3_pkey
3562 Index Cond: ((id >= 50) AND (id <= 51))
3563 -> Bitmap Heap Scan on p1_c4 p1_5
3564 Recheck Cond: ((id >= 50) AND (id <= 51))
3565 Filter: (ctid = '(1,1)'::tid)
3566 -> Bitmap Index Scan on p1_c4_pkey
3567 Index Cond: ((id >= 50) AND (id <= 51))
3568 -> Bitmap Heap Scan on p1_c1_c1 p1_6
3569 Recheck Cond: ((id >= 50) AND (id <= 51))
3570 Filter: (ctid = '(1,1)'::tid)
3571 -> Bitmap Index Scan on p1_c1_c1_pkey
3572 Index Cond: ((id >= 50) AND (id <= 51))
3573 -> Bitmap Heap Scan on p1_c1_c2 p1_7
3574 Recheck Cond: ((id >= 50) AND (id <= 51))
3575 Filter: (ctid = '(1,1)'::tid)
3576 -> Bitmap Index Scan on p1_c1_c2_pkey
3577 Index Cond: ((id >= 50) AND (id <= 51))
3578 -> Bitmap Heap Scan on p1_c3_c1 p1_8
3579 Recheck Cond: ((id >= 50) AND (id <= 51))
3580 Filter: (ctid = '(1,1)'::tid)
3581 -> Bitmap Index Scan on p1_c3_c1_pkey
3582 Index Cond: ((id >= 50) AND (id <= 51))
3583 -> Bitmap Heap Scan on p1_c3_c2 p1_9
3584 Recheck Cond: ((id >= 50) AND (id <= 51))
3585 Filter: (ctid = '(1,1)'::tid)
3586 -> Bitmap Index Scan on p1_c3_c2_pkey
3587 Index Cond: ((id >= 50) AND (id <= 51))
3588 -> Index Scan using t1_pkey on t1
3589 Index Cond: (id < 10)
3593 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;
3602 ---------------------------------------------------------
3604 Merge Cond: (p1.id = t1.id)
3608 -> Tid Scan on p1 p1_1
3609 TID Cond: (ctid = '(1,1)'::tid)
3610 Filter: ((id >= 50) AND (id <= 51))
3611 -> Tid Scan on p1_c1 p1_2
3612 TID Cond: (ctid = '(1,1)'::tid)
3613 Filter: ((id >= 50) AND (id <= 51))
3614 -> Tid Scan on p1_c2 p1_3
3615 TID Cond: (ctid = '(1,1)'::tid)
3616 Filter: ((id >= 50) AND (id <= 51))
3617 -> Tid Scan on p1_c3 p1_4
3618 TID Cond: (ctid = '(1,1)'::tid)
3619 Filter: ((id >= 50) AND (id <= 51))
3620 -> Tid Scan on p1_c4 p1_5
3621 TID Cond: (ctid = '(1,1)'::tid)
3622 Filter: ((id >= 50) AND (id <= 51))
3623 -> Tid Scan on p1_c1_c1 p1_6
3624 TID Cond: (ctid = '(1,1)'::tid)
3625 Filter: ((id >= 50) AND (id <= 51))
3626 -> Tid Scan on p1_c1_c2 p1_7
3627 TID Cond: (ctid = '(1,1)'::tid)
3628 Filter: ((id >= 50) AND (id <= 51))
3629 -> Tid Scan on p1_c3_c1 p1_8
3630 TID Cond: (ctid = '(1,1)'::tid)
3631 Filter: ((id >= 50) AND (id <= 51))
3632 -> Tid Scan on p1_c3_c2 p1_9
3633 TID Cond: (ctid = '(1,1)'::tid)
3634 Filter: ((id >= 50) AND (id <= 51))
3635 -> Index Scan using t1_pkey on t1
3636 Index Cond: (id < 10)
3639 /*+NestLoop(p1 t1)*/
3640 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;
3649 -----------------------------------------------------------------------------
3651 Join Filter: (p1.id = t1.id)
3653 -> Seq Scan on p1 p1_1
3654 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3655 -> Seq Scan on p1_c1 p1_2
3656 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3657 -> Seq Scan on p1_c2 p1_3
3658 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3659 -> Seq Scan on p1_c3 p1_4
3660 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3661 -> Seq Scan on p1_c4 p1_5
3662 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3663 -> Seq Scan on p1_c1_c1 p1_6
3664 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3665 -> Seq Scan on p1_c1_c2 p1_7
3666 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3667 -> Seq Scan on p1_c3_c1 p1_8
3668 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3669 -> Seq Scan on p1_c3_c2 p1_9
3670 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3672 -> Index Scan using t1_pkey on t1
3673 Index Cond: (id < 10)
3676 /*+MergeJoin(p1 t1)*/
3677 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;
3686 -----------------------------------------------------------------------------------
3688 Merge Cond: (p1.id = t1.id)
3692 -> Seq Scan on p1 p1_1
3693 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3694 -> Seq Scan on p1_c1 p1_2
3695 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3696 -> Seq Scan on p1_c2 p1_3
3697 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3698 -> Seq Scan on p1_c3 p1_4
3699 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3700 -> Seq Scan on p1_c4 p1_5
3701 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3702 -> Seq Scan on p1_c1_c1 p1_6
3703 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3704 -> Seq Scan on p1_c1_c2 p1_7
3705 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3706 -> Seq Scan on p1_c3_c1 p1_8
3707 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3708 -> Seq Scan on p1_c3_c2 p1_9
3709 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3710 -> Index Scan using t1_pkey on t1
3711 Index Cond: (id < 10)
3714 /*+HashJoin(p1 t1)*/
3715 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;
3724 -----------------------------------------------------------------------------
3726 Hash Cond: (p1.id = t1.id)
3728 -> Seq Scan on p1 p1_1
3729 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3730 -> Seq Scan on p1_c1 p1_2
3731 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3732 -> Seq Scan on p1_c2 p1_3
3733 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3734 -> Seq Scan on p1_c3 p1_4
3735 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3736 -> Seq Scan on p1_c4 p1_5
3737 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3738 -> Seq Scan on p1_c1_c1 p1_6
3739 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3740 -> Seq Scan on p1_c1_c2 p1_7
3741 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3742 -> Seq Scan on p1_c3_c1 p1_8
3743 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3744 -> Seq Scan on p1_c3_c2 p1_9
3745 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3747 -> Index Scan using t1_pkey on t1
3748 Index Cond: (id < 10)
3751 SET constraint_exclusion TO on;
3753 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;
3762 -----------------------------------------------------------------------------------
3764 Merge Cond: (p1.id = t1.id)
3768 -> Seq Scan on p1 p1_1
3769 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3770 -> Seq Scan on p1_c1 p1_2
3771 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3772 -> Seq Scan on p1_c1_c1 p1_3
3773 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3774 -> Seq Scan on p1_c1_c2 p1_4
3775 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3776 -> Index Scan using t1_pkey on t1
3777 Index Cond: (id < 10)
3781 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;
3790 -------------------------------------------------------------
3792 Merge Cond: (p1.id = t1.id)
3795 -> Index Scan using p1_pkey on p1 p1_1
3796 Index Cond: ((id >= 50) AND (id <= 51))
3797 Filter: (ctid = '(1,1)'::tid)
3798 -> Index Scan using p1_c1_pkey on p1_c1 p1_2
3799 Index Cond: ((id >= 50) AND (id <= 51))
3800 Filter: (ctid = '(1,1)'::tid)
3801 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_3
3802 Index Cond: ((id >= 50) AND (id <= 51))
3803 Filter: (ctid = '(1,1)'::tid)
3804 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_4
3805 Index Cond: ((id >= 50) AND (id <= 51))
3806 Filter: (ctid = '(1,1)'::tid)
3807 -> Index Scan using t1_pkey on t1
3808 Index Cond: (id < 10)
3812 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;
3821 -------------------------------------------------------------------
3823 Merge Cond: (p1.id = t1.id)
3827 -> Bitmap Heap Scan on p1 p1_1
3828 Recheck Cond: ((id >= 50) AND (id <= 51))
3829 Filter: (ctid = '(1,1)'::tid)
3830 -> Bitmap Index Scan on p1_pkey
3831 Index Cond: ((id >= 50) AND (id <= 51))
3832 -> Bitmap Heap Scan on p1_c1 p1_2
3833 Recheck Cond: ((id >= 50) AND (id <= 51))
3834 Filter: (ctid = '(1,1)'::tid)
3835 -> Bitmap Index Scan on p1_c1_pkey
3836 Index Cond: ((id >= 50) AND (id <= 51))
3837 -> Bitmap Heap Scan on p1_c1_c1 p1_3
3838 Recheck Cond: ((id >= 50) AND (id <= 51))
3839 Filter: (ctid = '(1,1)'::tid)
3840 -> Bitmap Index Scan on p1_c1_c1_pkey
3841 Index Cond: ((id >= 50) AND (id <= 51))
3842 -> Bitmap Heap Scan on p1_c1_c2 p1_4
3843 Recheck Cond: ((id >= 50) AND (id <= 51))
3844 Filter: (ctid = '(1,1)'::tid)
3845 -> Bitmap Index Scan on p1_c1_c2_pkey
3846 Index Cond: ((id >= 50) AND (id <= 51))
3847 -> Index Scan using t1_pkey on t1
3848 Index Cond: (id < 10)
3852 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;
3861 ---------------------------------------------------------
3863 Merge Cond: (p1.id = t1.id)
3867 -> Tid Scan on p1 p1_1
3868 TID Cond: (ctid = '(1,1)'::tid)
3869 Filter: ((id >= 50) AND (id <= 51))
3870 -> Tid Scan on p1_c1 p1_2
3871 TID Cond: (ctid = '(1,1)'::tid)
3872 Filter: ((id >= 50) AND (id <= 51))
3873 -> Tid Scan on p1_c1_c1 p1_3
3874 TID Cond: (ctid = '(1,1)'::tid)
3875 Filter: ((id >= 50) AND (id <= 51))
3876 -> Tid Scan on p1_c1_c2 p1_4
3877 TID Cond: (ctid = '(1,1)'::tid)
3878 Filter: ((id >= 50) AND (id <= 51))
3879 -> Index Scan using t1_pkey on t1
3880 Index Cond: (id < 10)
3883 /*+NestLoop(p1 t1)*/
3884 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;
3893 -----------------------------------------------------------------------------------
3895 Join Filter: (p1.id = t1.id)
3896 -> Index Scan using t1_pkey on t1
3897 Index Cond: (id < 10)
3900 -> Seq Scan on p1 p1_1
3901 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3902 -> Seq Scan on p1_c1 p1_2
3903 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3904 -> Seq Scan on p1_c1_c1 p1_3
3905 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3906 -> Seq Scan on p1_c1_c2 p1_4
3907 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3910 /*+MergeJoin(p1 t1)*/
3911 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;
3920 -----------------------------------------------------------------------------------
3922 Merge Cond: (p1.id = t1.id)
3926 -> Seq Scan on p1 p1_1
3927 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3928 -> Seq Scan on p1_c1 p1_2
3929 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3930 -> Seq Scan on p1_c1_c1 p1_3
3931 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3932 -> Seq Scan on p1_c1_c2 p1_4
3933 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3934 -> Index Scan using t1_pkey on t1
3935 Index Cond: (id < 10)
3938 /*+HashJoin(p1 t1)*/
3939 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;
3948 -----------------------------------------------------------------------------------
3950 Hash Cond: (t1.id = p1.id)
3951 -> Index Scan using t1_pkey on t1
3952 Index Cond: (id < 10)
3955 -> Seq Scan on p1 p1_1
3956 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3957 -> Seq Scan on p1_c1 p1_2
3958 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3959 -> Seq Scan on p1_c1_c1 p1_3
3960 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3961 -> Seq Scan on p1_c1_c2 p1_4
3962 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3965 SET constraint_exclusion TO off;
3966 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3968 -----------------------------------------------------------------
3970 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3973 SET constraint_exclusion TO on;
3974 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3976 -----------------------------------------------------------------
3978 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3981 SET constraint_exclusion TO off;
3983 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3992 -----------------------------------------------------------------
3994 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3998 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4007 -------------------------------------------
4008 Index Scan using p1_pkey on p1
4009 Index Cond: ((id >= 50) AND (id <= 51))
4010 Filter: (ctid = '(1,1)'::tid)
4014 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4023 -------------------------------------------------
4024 Bitmap Heap Scan on p1
4025 Recheck Cond: ((id >= 50) AND (id <= 51))
4026 Filter: (ctid = '(1,1)'::tid)
4027 -> Bitmap Index Scan on p1_pkey
4028 Index Cond: ((id >= 50) AND (id <= 51))
4032 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4041 ---------------------------------------
4043 TID Cond: (ctid = '(1,1)'::tid)
4044 Filter: ((id >= 50) AND (id <= 51))
4047 /*+NestLoop(p1 t1)*/
4048 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;
4057 -----------------------------------------------------------------------
4059 Join Filter: (p1.id = t1.id)
4061 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4062 -> Index Scan using t1_pkey on t1
4063 Index Cond: (id < 10)
4066 /*+MergeJoin(p1 t1)*/
4067 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;
4076 -----------------------------------------------------------------------------
4078 Merge Cond: (p1.id = t1.id)
4082 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4083 -> Index Scan using t1_pkey on t1
4084 Index Cond: (id < 10)
4087 /*+HashJoin(p1 t1)*/
4088 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;
4097 -----------------------------------------------------------------------------
4099 Hash Cond: (t1.id = p1.id)
4100 -> Index Scan using t1_pkey on t1
4101 Index Cond: (id < 10)
4104 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4107 SET constraint_exclusion TO on;
4109 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4118 -----------------------------------------------------------------
4120 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4124 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4133 -------------------------------------------
4134 Index Scan using p1_pkey on p1
4135 Index Cond: ((id >= 50) AND (id <= 51))
4136 Filter: (ctid = '(1,1)'::tid)
4140 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4149 -------------------------------------------------
4150 Bitmap Heap Scan on p1
4151 Recheck Cond: ((id >= 50) AND (id <= 51))
4152 Filter: (ctid = '(1,1)'::tid)
4153 -> Bitmap Index Scan on p1_pkey
4154 Index Cond: ((id >= 50) AND (id <= 51))
4158 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4167 ---------------------------------------
4169 TID Cond: (ctid = '(1,1)'::tid)
4170 Filter: ((id >= 50) AND (id <= 51))
4173 /*+NestLoop(p1 t1)*/
4174 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;
4183 -----------------------------------------------------------------------
4185 Join Filter: (p1.id = t1.id)
4187 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4188 -> Index Scan using t1_pkey on t1
4189 Index Cond: (id < 10)
4192 /*+MergeJoin(p1 t1)*/
4193 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4202 -----------------------------------------------------------------------------
4204 Merge Cond: (p1.id = t1.id)
4208 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4209 -> Index Scan using t1_pkey on t1
4210 Index Cond: (id < 10)
4213 /*+HashJoin(p1 t1)*/
4214 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;
4223 -----------------------------------------------------------------------------
4225 Hash Cond: (t1.id = p1.id)
4226 -> Index Scan using t1_pkey on t1
4227 Index Cond: (id < 10)
4230 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4233 SET constraint_exclusion TO off;
4234 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4236 -----------------------------------------------------------------------
4238 Join Filter: (p1.id = t1.id)
4240 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4241 -> Index Scan using t1_pkey on t1
4242 Index Cond: (id < 10)
4245 SET constraint_exclusion TO on;
4246 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4248 -----------------------------------------------------------------------
4250 Join Filter: (p1.id = t1.id)
4252 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4253 -> Index Scan using t1_pkey on t1
4254 Index Cond: (id < 10)
4257 SET constraint_exclusion TO off;
4259 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;
4268 -----------------------------------------------------------------------
4270 Join Filter: (p1.id = t1.id)
4272 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4273 -> Index Scan using t1_pkey on t1
4274 Index Cond: (id < 10)
4278 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;
4287 -------------------------------------------------
4289 Merge Cond: (p1.id = t1.id)
4290 -> Index Scan using p1_pkey on p1
4291 Index Cond: ((id >= 50) AND (id <= 51))
4292 Filter: (ctid = '(1,1)'::tid)
4293 -> Index Scan using t1_pkey on t1
4294 Index Cond: (id < 10)
4298 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;
4307 -------------------------------------------------------
4309 Join Filter: (p1.id = t1.id)
4310 -> Bitmap Heap Scan on p1
4311 Recheck Cond: ((id >= 50) AND (id <= 51))
4312 Filter: (ctid = '(1,1)'::tid)
4313 -> Bitmap Index Scan on p1_pkey
4314 Index Cond: ((id >= 50) AND (id <= 51))
4315 -> Index Scan using t1_pkey on t1
4316 Index Cond: (id < 10)
4320 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;
4329 ---------------------------------------------
4331 Join Filter: (p1.id = t1.id)
4333 TID Cond: (ctid = '(1,1)'::tid)
4334 Filter: ((id >= 50) AND (id <= 51))
4335 -> Index Scan using t1_pkey on t1
4336 Index Cond: (id < 10)
4339 SET constraint_exclusion TO on;
4341 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;
4350 -----------------------------------------------------------------------
4352 Join Filter: (p1.id = t1.id)
4354 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4355 -> Index Scan using t1_pkey on t1
4356 Index Cond: (id < 10)
4360 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;
4369 -------------------------------------------------
4371 Merge Cond: (p1.id = t1.id)
4372 -> Index Scan using p1_pkey on p1
4373 Index Cond: ((id >= 50) AND (id <= 51))
4374 Filter: (ctid = '(1,1)'::tid)
4375 -> Index Scan using t1_pkey on t1
4376 Index Cond: (id < 10)
4380 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;
4389 -------------------------------------------------------
4391 Join Filter: (p1.id = t1.id)
4392 -> Bitmap Heap Scan on p1
4393 Recheck Cond: ((id >= 50) AND (id <= 51))
4394 Filter: (ctid = '(1,1)'::tid)
4395 -> Bitmap Index Scan on p1_pkey
4396 Index Cond: ((id >= 50) AND (id <= 51))
4397 -> Index Scan using t1_pkey on t1
4398 Index Cond: (id < 10)
4402 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;
4411 ---------------------------------------------
4413 Join Filter: (p1.id = t1.id)
4415 TID Cond: (ctid = '(1,1)'::tid)
4416 Filter: ((id >= 50) AND (id <= 51))
4417 -> Index Scan using t1_pkey on t1
4418 Index Cond: (id < 10)
4422 /*+SeqScan("""t1 ) ")IndexScan("t 2 """)HashJoin("""t1 ) "T3"t 2 """)Leading("""t1 ) "T3"t 2 """)Set(application_name"a a a"" a A")*/
4423 EXPLAIN (COSTS false) SELECT * FROM t1 """t1 ) ", t2 "t 2 """, t3 "T3" WHERE """t1 ) ".id = "t 2 """.id AND """t1 ) ".id = "T3".id;
4428 HashJoin("""t1 ) " T3 "t 2 """)
4429 Leading("""t1 ) " T3 "t 2 """)
4430 Set(application_name "a a a"" a A")
4436 ---------------------------------------------------------
4438 Hash Cond: ("t 2 """.id = """t1 ) ".id)
4439 -> Index Scan using t2_pkey on t2 "t 2 """
4442 Hash Cond: ("""t1 ) ".id = "T3".id)
4443 -> Seq Scan on t1 """t1 ) "
4445 -> Seq Scan on t3 "T3"
4448 -- duplicate hint test
4449 /*+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)*/
4450 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
4451 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)"
4452 DETAIL: Conflict scan method hint.
4453 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)"
4454 DETAIL: Conflict scan method hint.
4455 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)"
4456 DETAIL: Conflict scan method hint.
4457 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)"
4458 DETAIL: Conflict scan method hint.
4459 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)"
4460 DETAIL: Conflict scan method hint.
4461 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)"
4462 DETAIL: Conflict scan method hint.
4463 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)"
4464 DETAIL: Conflict join method hint.
4465 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)"
4466 DETAIL: Conflict join method hint.
4467 INFO: pg_hint_plan: hint syntax error at or near "Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4468 DETAIL: Conflict set hint.
4469 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)"
4470 DETAIL: Conflict leading hint.
4477 Set(enable_mergejoin on)
4478 Set(enable_seqscan on)
4490 Set(enable_seqscan off)
4494 -----------------------------------------------
4496 Merge Cond: (t1.id = t2.id)
4500 TID Cond: (ctid = '(1,1)'::tid)
4504 TID Cond: (ctid = '(1,1)'::tid)
4507 -- sub query Leading hint test
4508 SET from_collapse_limit TO 100;
4509 SET geqo_threshold TO 100;
4510 EXPLAIN (COSTS false)
4512 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
4515 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
4516 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4517 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
4518 ) 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 = (
4519 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
4522 ------------------------------------------------------------------------------
4524 InitPlan 1 (returns $0)
4527 Merge Cond: (t1_2.id = t3_2.id)
4529 Merge Cond: (t1_2.id = t2_2.id)
4530 -> Index Only Scan using t1_pkey on t1 t1_2
4531 -> Index Only Scan using t2_pkey on t2 t2_2
4534 -> Seq Scan on t3 t3_2
4535 InitPlan 2 (returns $1)
4538 Merge Cond: (t1_4.id = t3_4.id)
4540 Merge Cond: (t1_4.id = t2_4.id)
4541 -> Index Only Scan using t1_pkey on t1 t1_4
4542 -> Index Only Scan using t2_pkey on t2 t2_4
4545 -> Seq Scan on t3 t3_4
4551 -> Index Only Scan using t1_pkey on t1 t1_1
4552 Index Cond: (id = $1)
4553 -> Index Only Scan using t2_pkey on t2 t2_1
4554 Index Cond: (id = $1)
4555 -> Seq Scan on t3 t3_1
4557 -> Index Only Scan using t1_pkey on t1 t1_3
4558 Index Cond: (id = $1)
4559 -> Index Only Scan using t2_pkey on t2 t2_3
4560 Index Cond: (id = $1)
4561 -> Seq Scan on t3 t3_3
4564 Filter: (max(t1_5.id) = $1)
4566 Merge Cond: (t1_5.id = t3_5.id)
4568 Merge Cond: (t1_5.id = t2_5.id)
4569 -> Index Only Scan using t1_pkey on t1 t1_5
4570 -> Index Only Scan using t2_pkey on t2 t2_5
4573 -> Seq Scan on t3 t3_5
4576 /*+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)*/
4577 EXPLAIN (COSTS false)
4579 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
4582 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
4583 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4584 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
4585 ) 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 = (
4586 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
4592 MergeJoin(t1_3 t3_3)
4600 ------------------------------------------------------------------------------
4602 InitPlan 1 (returns $1)
4605 Merge Cond: (t1_2.id = t3_2.id)
4607 -> Index Only Scan using t2_pkey on t2 t2_2
4608 -> Index Only Scan using t1_pkey on t1 t1_2
4609 Index Cond: (id = t2_2.id)
4612 -> Seq Scan on t3 t3_2
4613 InitPlan 2 (returns $3)
4616 Merge Cond: (t1_4.id = t3_4.id)
4618 -> Index Only Scan using t2_pkey on t2 t2_4
4619 -> Index Only Scan using t1_pkey on t1 t1_4
4620 Index Cond: (id = t2_4.id)
4623 -> Seq Scan on t3 t3_4
4629 -> Index Only Scan using t1_pkey on t1 t1_1
4630 Index Cond: (id = $3)
4631 -> Index Only Scan using t2_pkey on t2 t2_1
4632 Index Cond: (id = $3)
4633 -> Seq Scan on t3 t3_1
4635 -> Index Only Scan using t1_pkey on t1 t1_3
4636 Index Cond: (id = $3)
4637 -> Index Only Scan using t2_pkey on t2 t2_3
4638 Index Cond: (id = $3)
4639 -> Seq Scan on t3 t3_3
4642 Filter: (max(t1_5.id) = $3)
4644 Merge Cond: (t1_5.id = t3_5.id)
4646 -> Index Only Scan using t2_pkey on t2 t2_5
4647 -> Index Only Scan using t1_pkey on t1 t1_5
4648 Index Cond: (id = t2_5.id)
4651 -> Seq Scan on t3 t3_5
4654 /*+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)*/
4655 EXPLAIN (COSTS false)
4657 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
4660 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
4661 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4662 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
4663 ) 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 = (
4664 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
4670 MergeJoin(t1_3 t3_3)
4674 Leading(a t1_1 t1_2 t1_4 t1_5)
4679 ------------------------------------------------------------------------------
4681 InitPlan 1 (returns $1)
4684 Merge Cond: (t1_2.id = t3_2.id)
4686 -> Index Only Scan using t2_pkey on t2 t2_2
4687 -> Index Only Scan using t1_pkey on t1 t1_2
4688 Index Cond: (id = t2_2.id)
4691 -> Seq Scan on t3 t3_2
4692 InitPlan 2 (returns $3)
4695 Merge Cond: (t1_4.id = t3_4.id)
4697 -> Index Only Scan using t2_pkey on t2 t2_4
4698 -> Index Only Scan using t1_pkey on t1 t1_4
4699 Index Cond: (id = t2_4.id)
4702 -> Seq Scan on t3 t3_4
4708 -> Index Only Scan using t1_pkey on t1 t1_1
4709 Index Cond: (id = $3)
4710 -> Index Only Scan using t2_pkey on t2 t2_1
4711 Index Cond: (id = $3)
4712 -> Seq Scan on t3 t3_1
4714 -> Index Only Scan using t1_pkey on t1 t1_3
4715 Index Cond: (id = $3)
4716 -> Index Only Scan using t2_pkey on t2 t2_3
4717 Index Cond: (id = $3)
4718 -> Seq Scan on t3 t3_3
4721 Filter: (max(t1_5.id) = $3)
4723 Merge Cond: (t1_5.id = t3_5.id)
4725 -> Index Only Scan using t2_pkey on t2 t2_5
4726 -> Index Only Scan using t1_pkey on t1 t1_5
4727 Index Cond: (id = t2_5.id)
4730 -> Seq Scan on t3 t3_5
4733 /*+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)*/
4734 EXPLAIN (COSTS false)
4736 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
4739 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
4740 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4741 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
4742 ) 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 = (
4743 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
4749 MergeJoin(t1_3 t3_3)
4753 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)
4758 ------------------------------------------------------------------------------
4760 InitPlan 1 (returns $1)
4763 Merge Cond: (t1_2.id = t3_2.id)
4765 -> Index Only Scan using t2_pkey on t2 t2_2
4766 -> Index Only Scan using t1_pkey on t1 t1_2
4767 Index Cond: (id = t2_2.id)
4770 -> Seq Scan on t3 t3_2
4771 InitPlan 2 (returns $3)
4774 Merge Cond: (t1_4.id = t3_4.id)
4776 -> Index Only Scan using t2_pkey on t2 t2_4
4777 -> Index Only Scan using t1_pkey on t1 t1_4
4778 Index Cond: (id = t2_4.id)
4781 -> Seq Scan on t3 t3_4
4787 -> Index Only Scan using t1_pkey on t1 t1_1
4788 Index Cond: (id = $3)
4789 -> Index Only Scan using t2_pkey on t2 t2_1
4790 Index Cond: (id = $3)
4791 -> Seq Scan on t3 t3_1
4793 -> Index Only Scan using t1_pkey on t1 t1_3
4794 Index Cond: (id = $3)
4795 -> Index Only Scan using t2_pkey on t2 t2_3
4796 Index Cond: (id = $3)
4797 -> Seq Scan on t3 t3_3
4800 Filter: (max(t1_5.id) = $3)
4802 Merge Cond: (t1_5.id = t3_5.id)
4804 -> Index Only Scan using t2_pkey on t2 t2_5
4805 -> Index Only Scan using t1_pkey on t1 t1_5
4806 Index Cond: (id = t2_5.id)
4809 -> Seq Scan on t3 t3_5
4812 /*+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)*/
4813 EXPLAIN (COSTS false)
4815 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
4818 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
4819 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4820 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
4821 ) 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 = (
4822 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
4826 Leading(t3_5 t2_5 t1_5)
4827 Leading(t3_2 t2_2 t1_2)
4828 Leading(t3_4 t2_4 t1_4)
4829 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
4833 MergeJoin(t1_3 t3_3)
4840 ------------------------------------------------------------------------------------------------
4842 InitPlan 1 (returns $0)
4845 Merge Cond: (t2_2.id = t1_2.id)
4847 Merge Cond: (t2_2.id = t3_2.id)
4848 -> Index Only Scan using t2_pkey on t2 t2_2
4851 -> Seq Scan on t3 t3_2
4852 -> Index Only Scan using t1_pkey on t1 t1_2
4853 InitPlan 2 (returns $1)
4856 Merge Cond: (t2_4.id = t1_4.id)
4858 Merge Cond: (t2_4.id = t3_4.id)
4859 -> Index Only Scan using t2_pkey on t2 t2_4
4862 -> Seq Scan on t3 t3_4
4863 -> Index Only Scan using t1_pkey on t1 t1_4
4869 -> Seq Scan on t3 t3_3
4872 Filter: (max(t1_5.id) = $1)
4874 Merge Cond: (t2_5.id = t1_5.id)
4876 Merge Cond: (t2_5.id = t3_5.id)
4877 -> Index Only Scan using t2_pkey on t2 t2_5
4880 -> Seq Scan on t3 t3_5
4881 -> Index Only Scan using t1_pkey on t1 t1_5
4882 -> Index Only Scan using t2_pkey on t2 t2_3
4883 Index Cond: (id = $1)
4884 -> Index Only Scan using t1_pkey on t1 t1_3
4885 Index Cond: (id = $1)
4886 -> Seq Scan on t3 t3_1
4888 -> Index Only Scan using t2_pkey on t2 t2_1
4889 Index Cond: (id = $1)
4890 -> Index Only Scan using t1_pkey on t1 t1_1
4891 Index Cond: (id = $1)
4894 SET from_collapse_limit TO 1;
4895 EXPLAIN (COSTS false)
4897 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
4900 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
4901 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4902 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
4903 ) 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 = (
4904 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
4907 --------------------------------------------------------------------
4909 InitPlan 1 (returns $0)
4912 Merge Cond: (t1_2.id = t3_2.id)
4914 Merge Cond: (t1_2.id = t2_2.id)
4915 -> Index Only Scan using t1_pkey on t1 t1_2
4916 -> Index Only Scan using t2_pkey on t2 t2_2
4919 -> Seq Scan on t3 t3_2
4920 InitPlan 2 (returns $1)
4923 Merge Cond: (t1_4.id = t3_4.id)
4925 Merge Cond: (t1_4.id = t2_4.id)
4926 -> Index Only Scan using t1_pkey on t1 t1_4
4927 -> Index Only Scan using t2_pkey on t2 t2_4
4930 -> Seq Scan on t3 t3_4
4934 -> Index Only Scan using t1_pkey on t1 t1_1
4935 Index Cond: (id = $1)
4936 -> Index Only Scan using t2_pkey on t2 t2_1
4937 Index Cond: (id = $1)
4938 -> Seq Scan on t3 t3_1
4942 -> Index Only Scan using t1_pkey on t1 t1_3
4943 Index Cond: (id = $1)
4944 -> Index Only Scan using t2_pkey on t2 t2_3
4945 Index Cond: (id = $1)
4946 -> Seq Scan on t3 t3_3
4949 Filter: (max(t1_5.id) = $1)
4951 Merge Cond: (t1_5.id = t3_5.id)
4953 Merge Cond: (t1_5.id = t2_5.id)
4954 -> Index Only Scan using t1_pkey on t1 t1_5
4955 -> Index Only Scan using t2_pkey on t2 t2_5
4958 -> Seq Scan on t3 t3_5
4961 /*+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)*/
4962 EXPLAIN (COSTS false)
4964 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
4967 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
4968 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4969 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
4970 ) 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 = (
4971 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
4977 MergeJoin(t1_3 t3_3)
4985 --------------------------------------------------------------------
4987 InitPlan 1 (returns $1)
4990 Merge Cond: (t1_2.id = t3_2.id)
4992 -> Index Only Scan using t2_pkey on t2 t2_2
4993 -> Index Only Scan using t1_pkey on t1 t1_2
4994 Index Cond: (id = t2_2.id)
4997 -> Seq Scan on t3 t3_2
4998 InitPlan 2 (returns $3)
5001 Merge Cond: (t1_4.id = t3_4.id)
5003 -> Index Only Scan using t2_pkey on t2 t2_4
5004 -> Index Only Scan using t1_pkey on t1 t1_4
5005 Index Cond: (id = t2_4.id)
5008 -> Seq Scan on t3 t3_4
5012 -> Index Only Scan using t1_pkey on t1 t1_1
5013 Index Cond: (id = $3)
5014 -> Index Only Scan using t2_pkey on t2 t2_1
5015 Index Cond: (id = $3)
5016 -> Seq Scan on t3 t3_1
5020 -> Index Only Scan using t1_pkey on t1 t1_3
5021 Index Cond: (id = $3)
5022 -> Index Only Scan using t2_pkey on t2 t2_3
5023 Index Cond: (id = $3)
5024 -> Seq Scan on t3 t3_3
5027 Filter: (max(t1_5.id) = $3)
5029 Merge Cond: (t1_5.id = t3_5.id)
5031 -> Index Only Scan using t2_pkey on t2 t2_5
5032 -> Index Only Scan using t1_pkey on t1 t1_5
5033 Index Cond: (id = t2_5.id)
5036 -> Seq Scan on t3 t3_5
5039 /*+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)*/
5040 EXPLAIN (COSTS false)
5042 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
5045 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
5046 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5047 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
5048 ) 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 = (
5049 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
5055 MergeJoin(t1_3 t3_3)
5059 Leading(a t1_1 t1_2 t1_4 t1_5)
5064 --------------------------------------------------------------------
5066 InitPlan 1 (returns $1)
5069 Merge Cond: (t1_2.id = t3_2.id)
5071 -> Index Only Scan using t2_pkey on t2 t2_2
5072 -> Index Only Scan using t1_pkey on t1 t1_2
5073 Index Cond: (id = t2_2.id)
5076 -> Seq Scan on t3 t3_2
5077 InitPlan 2 (returns $3)
5080 Merge Cond: (t1_4.id = t3_4.id)
5082 -> Index Only Scan using t2_pkey on t2 t2_4
5083 -> Index Only Scan using t1_pkey on t1 t1_4
5084 Index Cond: (id = t2_4.id)
5087 -> Seq Scan on t3 t3_4
5091 -> Index Only Scan using t1_pkey on t1 t1_1
5092 Index Cond: (id = $3)
5093 -> Index Only Scan using t2_pkey on t2 t2_1
5094 Index Cond: (id = $3)
5095 -> Seq Scan on t3 t3_1
5099 -> Index Only Scan using t1_pkey on t1 t1_3
5100 Index Cond: (id = $3)
5101 -> Index Only Scan using t2_pkey on t2 t2_3
5102 Index Cond: (id = $3)
5103 -> Seq Scan on t3 t3_3
5106 Filter: (max(t1_5.id) = $3)
5108 Merge Cond: (t1_5.id = t3_5.id)
5110 -> Index Only Scan using t2_pkey on t2 t2_5
5111 -> Index Only Scan using t1_pkey on t1 t1_5
5112 Index Cond: (id = t2_5.id)
5115 -> Seq Scan on t3 t3_5
5118 /*+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)*/
5119 EXPLAIN (COSTS false)
5121 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
5124 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
5125 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5126 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
5127 ) 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 = (
5128 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
5134 MergeJoin(t1_3 t3_3)
5138 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)
5143 --------------------------------------------------------------------
5145 InitPlan 1 (returns $1)
5148 Merge Cond: (t1_2.id = t3_2.id)
5150 -> Index Only Scan using t2_pkey on t2 t2_2
5151 -> Index Only Scan using t1_pkey on t1 t1_2
5152 Index Cond: (id = t2_2.id)
5155 -> Seq Scan on t3 t3_2
5156 InitPlan 2 (returns $3)
5159 Merge Cond: (t1_4.id = t3_4.id)
5161 -> Index Only Scan using t2_pkey on t2 t2_4
5162 -> Index Only Scan using t1_pkey on t1 t1_4
5163 Index Cond: (id = t2_4.id)
5166 -> Seq Scan on t3 t3_4
5170 -> Index Only Scan using t1_pkey on t1 t1_1
5171 Index Cond: (id = $3)
5172 -> Index Only Scan using t2_pkey on t2 t2_1
5173 Index Cond: (id = $3)
5174 -> Seq Scan on t3 t3_1
5178 -> Index Only Scan using t1_pkey on t1 t1_3
5179 Index Cond: (id = $3)
5180 -> Index Only Scan using t2_pkey on t2 t2_3
5181 Index Cond: (id = $3)
5182 -> Seq Scan on t3 t3_3
5185 Filter: (max(t1_5.id) = $3)
5187 Merge Cond: (t1_5.id = t3_5.id)
5189 -> Index Only Scan using t2_pkey on t2 t2_5
5190 -> Index Only Scan using t1_pkey on t1 t1_5
5191 Index Cond: (id = t2_5.id)
5194 -> Seq Scan on t3 t3_5
5197 /*+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)*/
5198 EXPLAIN (COSTS false)
5200 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
5203 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
5204 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5205 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
5206 ) 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 = (
5207 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
5211 MergeJoin(t1_3 t3_3)
5212 Leading(t3_5 t2_5 t1_5)
5213 Leading(t3_2 t2_2 t1_2)
5214 Leading(t3_4 t2_4 t1_4)
5215 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
5225 ------------------------------------------------------------------------------------
5227 InitPlan 1 (returns $0)
5230 Merge Cond: (t2_2.id = t1_2.id)
5232 Merge Cond: (t2_2.id = t3_2.id)
5233 -> Index Only Scan using t2_pkey on t2 t2_2
5236 -> Seq Scan on t3 t3_2
5237 -> Index Only Scan using t1_pkey on t1 t1_2
5238 InitPlan 2 (returns $1)
5241 Merge Cond: (t2_4.id = t1_4.id)
5243 Merge Cond: (t2_4.id = t3_4.id)
5244 -> Index Only Scan using t2_pkey on t2 t2_4
5247 -> Seq Scan on t3 t3_4
5248 -> Index Only Scan using t1_pkey on t1 t1_4
5254 -> Index Only Scan using t1_pkey on t1 t1_3
5255 Index Cond: (id = $1)
5256 -> Index Only Scan using t2_pkey on t2 t2_3
5257 Index Cond: (id = $1)
5258 -> Seq Scan on t3 t3_3
5261 Filter: (max(t1_5.id) = $1)
5263 Merge Cond: (t2_5.id = t1_5.id)
5265 Merge Cond: (t2_5.id = t3_5.id)
5266 -> Index Only Scan using t2_pkey on t2 t2_5
5269 -> Seq Scan on t3 t3_5
5270 -> Index Only Scan using t1_pkey on t1 t1_5
5271 -> Seq Scan on t3 t3_1
5273 -> Index Only Scan using t2_pkey on t2 t2_1
5274 Index Cond: (id = $1)
5275 -> Index Only Scan using t1_pkey on t1 t1_1
5276 Index Cond: (id = $1)
5280 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5282 -------------------------------------------------
5284 Merge Cond: (t1.id = t2.id)
5286 Merge Cond: (t1.id = t1_1.id)
5287 -> Index Scan using t1_pkey on t1
5288 -> Index Scan using t1_pkey on t1 t1_1
5289 -> Index Scan using t2_pkey on t2
5292 /*+NestLoop(t1 t2)*/
5293 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5294 INFO: pg_hint_plan: hint syntax error at or near "NestLoop(t1 t2)"
5295 DETAIL: Relation name "t1" is ambiguous.
5304 -------------------------------------------------
5306 Merge Cond: (t1.id = t2.id)
5308 Merge Cond: (t1.id = t1_1.id)
5309 -> Index Scan using t1_pkey on t1
5310 -> Index Scan using t1_pkey on t1 t1_1
5311 -> Index Scan using t2_pkey on t2
5314 /*+Leading(t1 t2 t1)*/
5315 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5316 INFO: pg_hint_plan: hint syntax error at or near "Leading(t1 t2 t1)"
5317 DETAIL: Relation name "t1" is ambiguous.
5326 -------------------------------------------------
5328 Merge Cond: (t1.id = t2.id)
5330 Merge Cond: (t1.id = t1_1.id)
5331 -> Index Scan using t1_pkey on t1
5332 -> Index Scan using t1_pkey on t1 t1_1
5333 -> Index Scan using t2_pkey on t2
5336 -- identifier length test
5337 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5339 --------------------------------------------------------------------------------------------------------------
5341 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5343 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id)
5344 -> Index Scan using t1_pkey on t1 "123456789012345678901234567890123456789012345678901234567890123"
5345 -> Index Scan using t2_pkey on t2
5352 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5353 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5354 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5355 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5357 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5358 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5361 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5362 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5363 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5367 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5370 ----------------------------------------------------------------------------------------------------
5372 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5374 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5375 -> Index Scan using t2_pkey on t2
5377 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5378 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5385 Leading(1234567890123456789012345678901234567890123456789012345678901234 t2 t3)
5386 SeqScan(1234567890123456789012345678901234567890123456789012345678901234)
5387 MergeJoin(1234567890123456789012345678901234567890123456789012345678901234 t2)
5388 Set(1234567890123456789012345678901234567890123456789012345678901234 1)
5389 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5391 EXPLAIN (COSTS false) SELECT * FROM t1 "1234567890123456789012345678901234567890123456789012345678901234" JOIN t2 ON ("1234567890123456789012345678901234567890123456789012345678901234".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5392 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5393 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
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 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5401 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5402 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5403 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5404 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5408 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5411 ----------------------------------------------------------------------------------------------------
5413 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5415 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5416 -> Index Scan using t2_pkey on t2
5418 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5419 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5425 SET "123456789012345678901234567890123456789012345678901234567890123" TO 1;
5426 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5427 SET "1234567890123456789012345678901234567890123456789012345678901234" TO 1;
5428 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5429 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5430 SET cursor_tuple_fraction TO 1234567890123456789012345678901234567890123456789012345678901234;
5431 ERROR: 1.23457e+63 is outside the valid range for parameter "cursor_tuple_fraction" (0 .. 1)
5433 /*+ Set(enable_seqscan 100)Set(seq_page_cost on)*/
5434 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
5435 INFO: parameter "enable_seqscan" requires a Boolean value
5436 INFO: invalid value for parameter "seq_page_cost": "on"
5442 Set(enable_seqscan 100)
5443 Set(seq_page_cost on)
5446 --------------------------------------
5448 Merge Cond: (t1.id = t2.id)
5449 -> Index Scan using t1_pkey on t1
5450 -> Index Scan using t2_pkey on t2
5453 -- debug log of candidate index to use IndexScan
5454 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5456 ----------------------------------------------------------------------------------------
5457 Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
5458 Index Cond: (id = 1)
5461 /*+IndexScan(t5 t5_id2)*/
5462 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5463 LOG: available indexes for IndexScan(t5): t5_id2
5466 IndexScan(t5 t5_id2)
5472 -------------------------------
5473 Index Scan using t5_id2 on t5
5474 Index Cond: (id = 1)
5477 /*+IndexScan(t5 no_exist)*/
5478 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5479 LOG: available indexes for IndexScan(t5):
5482 IndexScan(t5 no_exist)
5488 --------------------
5493 /*+IndexScan(t5 t5_id1 t5_id2)*/
5494 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5495 LOG: available indexes for IndexScan(t5): t5_id2 t5_id1
5498 IndexScan(t5 t5_id1 t5_id2)
5504 -------------------------------
5505 Index Scan using t5_id2 on t5
5506 Index Cond: (id = 1)
5509 /*+IndexScan(t5 no_exist t5_id2)*/
5510 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5511 LOG: available indexes for IndexScan(t5): t5_id2
5514 IndexScan(t5 no_exist t5_id2)
5520 -------------------------------
5521 Index Scan using t5_id2 on t5
5522 Index Cond: (id = 1)
5525 /*+IndexScan(t5 no_exist5 no_exist2)*/
5526 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5527 LOG: available indexes for IndexScan(t5):
5530 IndexScan(t5 no_exist5 no_exist2)
5536 --------------------
5542 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5544 --------------------------------------------------------
5546 Hash Cond: (t3.val = t2.val)
5550 Hash Cond: (t2.id = t1.id)
5553 -> Index Scan using t1_pkey on t1
5554 Index Cond: (id < 10)
5558 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5559 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1))"
5560 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5569 --------------------------------------------------------
5571 Hash Cond: (t3.val = t2.val)
5575 Hash Cond: (t2.id = t1.id)
5578 -> Index Scan using t1_pkey on t1
5579 Index Cond: (id < 10)
5582 /*+Leading((t1 t2))*/
5583 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5592 --------------------------------------------
5594 Join Filter: (t2.val = t3.val)
5596 Hash Cond: (t1.id = t2.id)
5597 -> Index Scan using t1_pkey on t1
5598 Index Cond: (id < 10)
5604 /*+Leading((t1 t2 t3))*/
5605 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5606 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1 t2 t3))"
5607 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5616 --------------------------------------------------------
5618 Hash Cond: (t3.val = t2.val)
5622 Hash Cond: (t2.id = t1.id)
5625 -> Index Scan using t1_pkey on t1
5626 Index Cond: (id < 10)
5629 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5631 --------------------------------------------
5633 Hash Cond: (t2.id = t1.id)
5636 -> Index Scan using t1_pkey on t1
5637 Index Cond: (id < 10)
5640 /*+Leading((t1 t2))*/
5641 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5650 --------------------------------------
5652 Hash Cond: (t1.id = t2.id)
5653 -> Index Scan using t1_pkey on t1
5654 Index Cond: (id < 10)
5659 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5661 --------------------------------------------------------
5663 Hash Cond: (t3.val = t2.val)
5667 Hash Cond: (t2.id = t1.id)
5670 -> Index Scan using t1_pkey on t1
5671 Index Cond: (id < 10)
5674 /*+Leading(((t1 t2) t3))*/
5675 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5678 Leading(((t1 t2) t3))
5684 --------------------------------------------
5686 Join Filter: (t2.val = t3.val)
5688 Hash Cond: (t1.id = t2.id)
5689 -> Index Scan using t1_pkey on t1
5690 Index Cond: (id < 10)
5696 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;
5698 --------------------------------------------------------
5701 Merge Cond: (t3.id = t4.id)
5703 Join Filter: (t1.val = t3.val)
5704 -> Index Scan using t3_pkey on t3
5706 -> Index Scan using t1_pkey on t1
5707 Index Cond: (id < 10)
5711 -> Index Scan using t2_pkey on t2
5712 Index Cond: (id = t1.id)
5715 /*+Leading((((t1 t2) t3) t4))*/
5716 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;
5719 Leading((((t1 t2) t3) t4))
5725 --------------------------------------------------
5728 Join Filter: (t1.val = t3.val)
5730 Hash Cond: (t1.id = t2.id)
5731 -> Index Scan using t1_pkey on t1
5732 Index Cond: (id < 10)
5736 -> Index Scan using t4_pkey on t4
5737 Index Cond: (id = t3.id)
5740 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5742 --------------------------------------------------------
5744 Hash Cond: (t3.val = t2.val)
5748 Hash Cond: (t2.id = t1.id)
5751 -> Index Scan using t1_pkey on t1
5752 Index Cond: (id < 10)
5755 /*+Leading(((t1 t2) t3))*/
5756 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5759 Leading(((t1 t2) t3))
5765 --------------------------------------------
5767 Join Filter: (t2.val = t3.val)
5769 Hash Cond: (t1.id = t2.id)
5770 -> Index Scan using t1_pkey on t1
5771 Index Cond: (id < 10)
5777 /*+Leading((t1 (t2 t3)))*/
5778 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5781 Leading((t1 (t2 t3)))
5787 --------------------------------------------
5789 Hash Cond: (t1.id = t2.id)
5790 -> Index Scan using t1_pkey on t1
5791 Index Cond: (id < 10)
5794 Hash Cond: (t2.val = t3.val)
5800 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;
5802 --------------------------------------------------------
5805 Merge Cond: (t3.id = t4.id)
5807 Join Filter: (t1.val = t3.val)
5808 -> Index Scan using t3_pkey on t3
5810 -> Index Scan using t1_pkey on t1
5811 Index Cond: (id < 10)
5815 -> Index Scan using t2_pkey on t2
5816 Index Cond: (id = t1.id)
5819 /*+Leading(((t1 t2) (t3 t4)))*/
5820 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;
5823 Leading(((t1 t2) (t3 t4)))
5829 --------------------------------------------
5831 Join Filter: (t1.val = t3.val)
5833 Hash Cond: (t1.id = t2.id)
5834 -> Index Scan using t1_pkey on t1
5835 Index Cond: (id < 10)
5839 Merge Cond: (t3.id = t4.id)
5840 -> Index Scan using t3_pkey on t3
5846 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);
5848 --------------------------------------------------------------------
5850 Hash Cond: (t2.val = t3.val)
5851 InitPlan 1 (returns $1)
5856 -> Index Scan using t2_val on t2 t2_2
5857 Index Cond: (val > 100)
5858 -> Index Only Scan using t1_pkey on t1 t1_2
5859 Index Cond: (id = t2_2.id)
5861 Merge Cond: (t1.id = t2.id)
5862 -> Index Scan using t1_pkey on t1
5863 Index Cond: (id < $1)
5864 -> Index Scan using t2_pkey on t2
5869 /*+Leading(((t1 t2) t3)) Leading(((t3 t1) t2))*/
5870 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);
5871 INFO: pg_hint_plan: hint syntax error at or near "Leading(((t1 t2) t3)) Leading(((t3 t1) t2))"
5872 DETAIL: Conflict leading hint.
5875 Leading(((t3 t1) t2))
5878 Leading(((t1 t2) t3))
5882 --------------------------------------------------------------------
5884 Hash Cond: (t1.id = t2.id)
5885 InitPlan 1 (returns $1)
5890 -> Index Scan using t2_val on t2 t2_2
5891 Index Cond: (val > 100)
5892 -> Index Only Scan using t1_pkey on t1 t1_2
5893 Index Cond: (id = t2_2.id)
5895 Hash Cond: (t3.val = t1.val)
5898 -> Index Scan using t1_pkey on t1
5899 Index Cond: (id < $1)
5904 /*+Leading(((t1 t2) t3)) Leading((t1_2 t2_2))*/
5905 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);
5908 Leading(((t1 t2) t3))
5909 Leading((t1_2 t2_2))
5915 --------------------------------------------------------------
5917 Hash Cond: (t2.val = t3.val)
5918 InitPlan 1 (returns $0)
5921 Merge Cond: (t1_2.id = t2_2.id)
5922 -> Index Only Scan using t1_pkey on t1 t1_2
5925 -> Index Scan using t2_val on t2 t2_2
5926 Index Cond: (val > 100)
5928 Merge Cond: (t1.id = t2.id)
5929 -> Index Scan using t1_pkey on t1
5930 Index Cond: (id < $0)
5931 -> Index Scan using t2_pkey on t2
5936 /*+Leading(((((t1 t2) t3) t1_2) t2_2))*/
5937 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);
5941 Leading(((((t1 t2) t3) t1_2) t2_2))
5946 --------------------------------------------------------------------
5948 Hash Cond: (t2.val = t3.val)
5949 InitPlan 1 (returns $1)
5954 -> Index Scan using t2_val on t2 t2_2
5955 Index Cond: (val > 100)
5956 -> Index Only Scan using t1_pkey on t1 t1_2
5957 Index Cond: (id = t2_2.id)
5959 Merge Cond: (t1.id = t2.id)
5960 -> Index Scan using t1_pkey on t1
5961 Index Cond: (id < $1)
5962 -> Index Scan using t2_pkey on t2
5967 -- Specified outer/inner leading hint and join method hint at the same time
5968 /*+Leading(((t1 t2) t3))*/
5969 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5972 Leading(((t1 t2) t3))
5978 --------------------------------------------
5980 Join Filter: (t2.val = t3.val)
5982 Hash Cond: (t1.id = t2.id)
5983 -> Index Scan using t1_pkey on t1
5984 Index Cond: (id < 10)
5990 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2)*/
5991 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5995 Leading(((t1 t2) t3))
6001 --------------------------------------------
6003 Join Filter: (t2.val = t3.val)
6005 Merge Cond: (t1.id = t2.id)
6006 -> Index Scan using t1_pkey on t1
6007 Index Cond: (id < 10)
6008 -> Index Scan using t2_pkey on t2
6012 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3)*/
6013 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6017 Leading(((t1 t2) t3))
6023 --------------------------------------------------
6025 Merge Cond: (t2.val = t3.val)
6029 Hash Cond: (t1.id = t2.id)
6030 -> Index Scan using t1_pkey on t1
6031 Index Cond: (id < 10)
6039 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t3)*/
6040 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6043 Leading(((t1 t2) t3))
6050 --------------------------------------------
6052 Join Filter: (t2.val = t3.val)
6054 Hash Cond: (t1.id = t2.id)
6055 -> Index Scan using t1_pkey on t1
6056 Index Cond: (id < 10)
6062 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;
6064 --------------------------------------------------------
6067 Merge Cond: (t3.id = t4.id)
6069 Join Filter: (t1.val = t3.val)
6070 -> Index Scan using t3_pkey on t3
6072 -> Index Scan using t1_pkey on t1
6073 Index Cond: (id < 10)
6077 -> Index Scan using t2_pkey on t2
6078 Index Cond: (id = t1.id)
6081 /*+Leading(((t1 t2) t3)) MergeJoin(t3 t4)*/
6082 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t3.id = t4.id AND t1.val = t3.val AND t1.id < 10;
6085 Leading(((t1 t2) t3))
6092 --------------------------------------------------
6094 Join Filter: (t3.id = t4.id)
6096 Join Filter: (t1.val = t3.val)
6098 Hash Cond: (t1.id = t2.id)
6099 -> Index Scan using t1_pkey on t1
6100 Index Cond: (id < 10)
6107 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3 t4)*/
6108 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;
6111 MergeJoin(t1 t2 t3 t4)
6112 Leading(((t1 t2) t3))
6118 --------------------------------------------------------
6120 Merge Cond: (t3.id = t4.id)
6124 Join Filter: (t1.val = t3.val)
6126 Hash Cond: (t1.id = t2.id)
6127 -> Index Scan using t1_pkey on t1
6128 Index Cond: (id < 10)
6137 /*+ Leading ( ( t1 ( t2 t3 ) ) ) */
6138 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6141 Leading((t1 (t2 t3)))
6147 --------------------------------------------
6149 Hash Cond: (t1.id = t2.id)
6150 -> Index Scan using t1_pkey on t1
6151 Index Cond: (id < 10)
6154 Hash Cond: (t2.val = t3.val)
6160 /*+Leading((t1(t2 t3)))*/
6161 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6164 Leading((t1 (t2 t3)))
6170 --------------------------------------------
6172 Hash Cond: (t1.id = t2.id)
6173 -> Index Scan using t1_pkey on t1
6174 Index Cond: (id < 10)
6177 Hash Cond: (t2.val = t3.val)
6183 /*+Leading(("t1(t2" "t3)"))*/
6184 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6188 Leading(("t1(t2" "t3)"))
6193 --------------------------------------------------------
6195 Hash Cond: (t3.val = t2.val)
6199 Hash Cond: (t2.id = t1.id)
6202 -> Index Scan using t1_pkey on t1
6203 Index Cond: (id < 10)
6206 /*+ Leading ( ( ( t1 t2 ) t3 ) ) */
6207 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6210 Leading(((t1 t2) t3))
6216 --------------------------------------------
6218 Join Filter: (t2.val = t3.val)
6220 Hash Cond: (t1.id = t2.id)
6221 -> Index Scan using t1_pkey on t1
6222 Index Cond: (id < 10)
6228 /*+Leading(((t1 t2)t3))*/
6229 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6232 Leading(((t1 t2) t3))
6238 --------------------------------------------
6240 Join Filter: (t2.val = t3.val)
6242 Hash Cond: (t1.id = t2.id)
6243 -> Index Scan using t1_pkey on t1
6244 Index Cond: (id < 10)
6250 /*+Leading(("(t1" "t2)t3"))*/
6251 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6255 Leading(("(t1" "t2)t3"))
6260 --------------------------------------------------------
6262 Hash Cond: (t3.val = t2.val)
6266 Hash Cond: (t2.id = t1.id)
6269 -> Index Scan using t1_pkey on t1
6270 Index Cond: (id < 10)
6273 /*+Leading((t1(t2(t3(t4 t5)))))*/
6274 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;
6277 Leading((t1 (t2 (t3 (t4 t5)))))
6283 ----------------------------------------------------------------------------------------------------------------------------------
6285 Merge Cond: (t1.id = t2.id)
6286 -> Index Scan using t1_pkey on t1
6289 Merge Cond: (t2.id = t3.id)
6290 -> Index Scan using t2_pkey on t2
6293 Merge Cond: (t3.id = t4.id)
6294 -> Index Scan using t3_pkey on t3
6297 Merge Cond: (t4.id = t5.id)
6298 -> Index Scan using t4_pkey on t4
6299 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6302 /*+Leading((t5(t4(t3(t2 t1)))))*/
6303 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;
6306 Leading((t5 (t4 (t3 (t2 t1)))))
6312 --------------------------------------------------------------------------
6314 Hash Cond: (t5.id = t1.id)
6318 Merge Cond: (t4.id = t1.id)
6324 Merge Cond: (t3.id = t1.id)
6330 Merge Cond: (t2.id = t1.id)
6331 -> Index Scan using t2_pkey on t2
6332 -> Index Scan using t1_pkey on t1
6335 /*+Leading(((((t1 t2)t3)t4)t5))*/
6336 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;
6339 Leading(((((t1 t2) t3) t4) t5))
6345 ----------------------------------------------------------------------------------------------
6348 Merge Cond: (t1.id = t4.id)
6350 Merge Cond: (t1.id = t3.id)
6352 Merge Cond: (t1.id = t2.id)
6353 -> Index Scan using t1_pkey on t1
6354 -> Index Scan using t2_pkey on t2
6361 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6362 Index Cond: (id = t1.id)
6365 /*+Leading(((((t5 t4)t3)t2)t1))*/
6366 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;
6369 Leading(((((t5 t4) t3) t2) t1))
6375 ----------------------------------------------------------------------------------------------------------------
6377 Join Filter: (t2.id = t1.id)
6379 Join Filter: (t3.id = t2.id)
6381 Merge Cond: (t4.id = t3.id)
6383 Merge Cond: (t5.id = t4.id)
6384 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6388 -> Index Scan using t3_pkey on t3
6389 -> Index Scan using t2_pkey on t2
6390 Index Cond: (id = t5.id)
6391 -> Index Scan using t1_pkey on t1
6392 Index Cond: (id = t5.id)
6395 /*+Leading(((t1 t2)(t3(t4 t5))))*/
6396 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;
6399 Leading(((t1 t2) (t3 (t4 t5))))
6405 ----------------------------------------------------------------------------------------------------------------------
6407 Merge Cond: (t1.id = t3.id)
6409 Merge Cond: (t1.id = t2.id)
6410 -> Index Scan using t1_pkey on t1
6411 -> Index Scan using t2_pkey on t2
6414 Merge Cond: (t3.id = t4.id)
6415 -> Index Scan using t3_pkey on t3
6418 Merge Cond: (t4.id = t5.id)
6419 -> Index Scan using t4_pkey on t4
6420 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6423 /*+Leading(((t5 t4)(t3(t2 t1))))*/
6424 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;
6427 Leading(((t5 t4) (t3 (t2 t1))))
6433 ----------------------------------------------------------------------------------------------------
6435 Merge Cond: (t4.id = t1.id)
6437 Merge Cond: (t5.id = t4.id)
6438 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6444 Merge Cond: (t3.id = t1.id)
6450 Merge Cond: (t2.id = t1.id)
6451 -> Index Scan using t2_pkey on t2
6452 -> Index Scan using t1_pkey on t1
6455 /*+Leading((((t1 t2)t3)(t4 t5)))*/
6456 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;
6459 Leading((((t1 t2) t3) (t4 t5)))
6465 ----------------------------------------------------------------------------------------------------------
6467 Merge Cond: (t1.id = t4.id)
6469 Merge Cond: (t1.id = t3.id)
6471 Merge Cond: (t1.id = t2.id)
6472 -> Index Scan using t1_pkey on t1
6473 -> Index Scan using t2_pkey on t2
6479 Merge Cond: (t4.id = t5.id)
6480 -> Index Scan using t4_pkey on t4
6481 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6484 /*+Leading((((t5 t4)t3)(t2 t1)))*/
6485 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;
6488 Leading((((t5 t4) t3) (t2 t1)))
6494 ----------------------------------------------------------------------------------------------------------
6496 Merge Cond: (t3.id = t1.id)
6498 Merge Cond: (t4.id = t3.id)
6500 Merge Cond: (t5.id = t4.id)
6501 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6505 -> Index Scan using t3_pkey on t3
6508 Merge Cond: (t2.id = t1.id)
6509 -> Index Scan using t2_pkey on t2
6510 -> Index Scan using t1_pkey on t1
6513 -- inherite table test to specify the index's name
6514 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6516 -----------------------------------------------------------------------
6518 -> Seq Scan on p2 p2_1
6519 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6520 -> Seq Scan on p2_c1 p2_2
6521 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6522 -> Seq Scan on p2_c1_c1 p2_3
6523 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6524 -> Seq Scan on p2_c1_c2 p2_4
6525 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6528 /*+IndexScan(p2 p2_pkey)*/
6529 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6530 LOG: available indexes for IndexScan(p2): p2_pkey
6531 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6532 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6533 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6536 IndexScan(p2 p2_pkey)
6542 -------------------------------------------------------
6544 -> Index Scan using p2_pkey on p2 p2_1
6545 Index Cond: ((id >= 50) AND (id <= 51))
6546 Filter: (ctid = '(1,1)'::tid)
6547 -> Index Scan using p2_c1_pkey on p2_c1 p2_2
6548 Index Cond: ((id >= 50) AND (id <= 51))
6549 Filter: (ctid = '(1,1)'::tid)
6550 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6551 Index Cond: ((id >= 50) AND (id <= 51))
6552 Filter: (ctid = '(1,1)'::tid)
6553 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6554 Index Cond: ((id >= 50) AND (id <= 51))
6555 Filter: (ctid = '(1,1)'::tid)
6558 /*+IndexScan(p2 p2_id_val_idx)*/
6559 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6560 LOG: available indexes for IndexScan(p2): p2_id_val_idx
6561 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6562 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
6563 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
6566 IndexScan(p2 p2_id_val_idx)
6572 -------------------------------------------------------------
6574 -> Index Scan using p2_id_val_idx on p2 p2_1
6575 Index Cond: ((id >= 50) AND (id <= 51))
6576 Filter: (ctid = '(1,1)'::tid)
6577 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
6578 Index Cond: ((id >= 50) AND (id <= 51))
6579 Filter: (ctid = '(1,1)'::tid)
6580 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_3
6581 Index Cond: ((id >= 50) AND (id <= 51))
6582 Filter: (ctid = '(1,1)'::tid)
6583 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_4
6584 Index Cond: ((id >= 50) AND (id <= 51))
6585 Filter: (ctid = '(1,1)'::tid)
6588 /*+IndexScan(p2 p2_val_id_idx)*/
6589 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6590 LOG: available indexes for IndexScan(p2): p2_val_id_idx
6591 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_id_idx
6592 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_id_idx
6593 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_id_idx
6596 IndexScan(p2 p2_val_id_idx)
6602 -------------------------------------------------------------
6604 -> Index Scan using p2_val_id_idx on p2 p2_1
6605 Index Cond: ((id >= 50) AND (id <= 51))
6606 Filter: (ctid = '(1,1)'::tid)
6607 -> Index Scan using p2_c1_val_id_idx on p2_c1 p2_2
6608 Index Cond: ((id >= 50) AND (id <= 51))
6609 Filter: (ctid = '(1,1)'::tid)
6610 -> Index Scan using p2_c1_c1_val_id_idx on p2_c1_c1 p2_3
6611 Index Cond: ((id >= 50) AND (id <= 51))
6612 Filter: (ctid = '(1,1)'::tid)
6613 -> Index Scan using p2_c1_c2_val_id_idx on p2_c1_c2 p2_4
6614 Index Cond: ((id >= 50) AND (id <= 51))
6615 Filter: (ctid = '(1,1)'::tid)
6618 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6620 -----------------------------------------------------------------------------------------
6622 -> Seq Scan on p2 p2_1
6623 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6624 -> Seq Scan on p2_c1 p2_2
6625 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6626 -> Seq Scan on p2_c2 p2_3
6627 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6628 -> Seq Scan on p2_c3 p2_4
6629 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6630 -> Seq Scan on p2_c4 p2_5
6631 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6632 -> Seq Scan on p2_c1_c1 p2_6
6633 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6634 -> Seq Scan on p2_c1_c2 p2_7
6635 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6636 -> Seq Scan on p2_c3_c1 p2_8
6637 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6638 -> Seq Scan on p2_c3_c2 p2_9
6639 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6642 -- Inhibit parallel exection to avoid interfaring the hint
6643 set max_parallel_workers_per_gather to 0;
6644 /*+ IndexScan(p2 p2_val)*/
6645 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6646 LOG: available indexes for IndexScan(p2):
6647 LOG: available indexes for IndexScan(p2_c1):
6648 LOG: available indexes for IndexScan(p2_c2):
6649 LOG: available indexes for IndexScan(p2_c3):
6650 LOG: available indexes for IndexScan(p2_c4):
6651 LOG: available indexes for IndexScan(p2_c1_c1):
6652 LOG: available indexes for IndexScan(p2_c1_c2):
6653 LOG: available indexes for IndexScan(p2_c3_c1):
6654 LOG: available indexes for IndexScan(p2_c3_c2):
6657 IndexScan(p2 p2_val)
6663 -----------------------------------------------------------------------------------------
6665 -> Seq Scan on p2 p2_1
6666 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6667 -> Seq Scan on p2_c1 p2_2
6668 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6669 -> Seq Scan on p2_c2 p2_3
6670 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6671 -> Seq Scan on p2_c3 p2_4
6672 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6673 -> Seq Scan on p2_c4 p2_5
6674 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6675 -> Seq Scan on p2_c1_c1 p2_6
6676 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6677 -> Seq Scan on p2_c1_c2 p2_7
6678 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6679 -> Seq Scan on p2_c3_c1 p2_8
6680 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6681 -> Seq Scan on p2_c3_c2 p2_9
6682 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6685 /*+IndexScan(p2 p2_pkey)*/
6686 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6687 LOG: available indexes for IndexScan(p2): p2_pkey
6688 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6689 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6690 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6693 IndexScan(p2 p2_pkey)
6699 -------------------------------------------------------
6701 -> Index Scan using p2_pkey on p2 p2_1
6702 Index Cond: ((id >= 50) AND (id <= 51))
6703 Filter: (ctid = '(1,1)'::tid)
6704 -> Index Scan using p2_c1_pkey on p2_c1 p2_2
6705 Index Cond: ((id >= 50) AND (id <= 51))
6706 Filter: (ctid = '(1,1)'::tid)
6707 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6708 Index Cond: ((id >= 50) AND (id <= 51))
6709 Filter: (ctid = '(1,1)'::tid)
6710 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6711 Index Cond: ((id >= 50) AND (id <= 51))
6712 Filter: (ctid = '(1,1)'::tid)
6715 /*+IndexScan(p2 p2_id2_val)*/
6716 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6717 LOG: available indexes for IndexScan(p2): p2_id2_val
6718 LOG: available indexes for IndexScan(p2_c1): p2_c1_id2_val
6719 LOG: available indexes for IndexScan(p2_c1_c1):
6720 LOG: available indexes for IndexScan(p2_c1_c2):
6723 IndexScan(p2 p2_id2_val)
6729 -----------------------------------------------------------------------
6731 -> Index Scan using p2_id2_val on p2 p2_1
6732 Index Cond: ((id >= 50) AND (id <= 51))
6733 Filter: (ctid = '(1,1)'::tid)
6734 -> Index Scan using p2_c1_id2_val on p2_c1 p2_2
6735 Index Cond: ((id >= 50) AND (id <= 51))
6736 Filter: (ctid = '(1,1)'::tid)
6737 -> Seq Scan on p2_c1_c1 p2_3
6738 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6739 -> Seq Scan on p2_c1_c2 p2_4
6740 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6743 /*+IndexScan(p2 p2_val2_id)*/
6744 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6745 LOG: available indexes for IndexScan(p2): p2_val2_id
6746 LOG: available indexes for IndexScan(p2_c1):
6747 LOG: available indexes for IndexScan(p2_c1_c1):
6748 LOG: available indexes for IndexScan(p2_c1_c2):
6751 IndexScan(p2 p2_val2_id)
6757 -----------------------------------------------------------------------
6759 -> Index Scan using p2_val2_id on p2 p2_1
6760 Index Cond: ((id >= 50) AND (id <= 51))
6761 Filter: (ctid = '(1,1)'::tid)
6762 -> Seq Scan on p2_c1 p2_2
6763 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6764 -> Seq Scan on p2_c1_c1 p2_3
6765 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6766 -> Seq Scan on p2_c1_c2 p2_4
6767 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6770 /*+IndexScan(p2 p2_pkey)*/
6771 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6772 LOG: available indexes for IndexScan(p2): p2_pkey
6773 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6774 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6775 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6778 IndexScan(p2 p2_pkey)
6784 -------------------------------------------------------
6786 -> Index Scan using p2_pkey on p2 p2_1
6787 Index Cond: ((id >= 50) AND (id <= 51))
6788 Filter: (ctid = '(1,1)'::tid)
6789 -> Index Scan using p2_c1_pkey on p2_c1 p2_2
6790 Index Cond: ((id >= 50) AND (id <= 51))
6791 Filter: (ctid = '(1,1)'::tid)
6792 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6793 Index Cond: ((id >= 50) AND (id <= 51))
6794 Filter: (ctid = '(1,1)'::tid)
6795 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6796 Index Cond: ((id >= 50) AND (id <= 51))
6797 Filter: (ctid = '(1,1)'::tid)
6800 /*+IndexScan(p2 p2_c1_id_val_idx)*/
6801 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6802 LOG: available indexes for IndexScan(p2):
6803 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6804 LOG: available indexes for IndexScan(p2_c1_c1):
6805 LOG: available indexes for IndexScan(p2_c1_c2):
6808 IndexScan(p2 p2_c1_id_val_idx)
6814 -----------------------------------------------------------------------
6816 -> Seq Scan on p2 p2_1
6817 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6818 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
6819 Index Cond: ((id >= 50) AND (id <= 51))
6820 Filter: (ctid = '(1,1)'::tid)
6821 -> Seq Scan on p2_c1_c1 p2_3
6822 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6823 -> Seq Scan on p2_c1_c2 p2_4
6824 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6827 /*+IndexScan(p2 no_exist)*/
6828 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6829 LOG: available indexes for IndexScan(p2):
6830 LOG: available indexes for IndexScan(p2_c1):
6831 LOG: available indexes for IndexScan(p2_c1_c1):
6832 LOG: available indexes for IndexScan(p2_c1_c2):
6835 IndexScan(p2 no_exist)
6841 -----------------------------------------------------------------------
6843 -> Seq Scan on p2 p2_1
6844 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6845 -> Seq Scan on p2_c1 p2_2
6846 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6847 -> Seq Scan on p2_c1_c1 p2_3
6848 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6849 -> Seq Scan on p2_c1_c2 p2_4
6850 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6853 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx)*/
6854 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6855 LOG: available indexes for IndexScan(p2): p2_pkey
6856 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6857 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6858 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6861 IndexScan(p2 p2_pkey p2_c1_id_val_idx)
6867 -------------------------------------------------------
6869 -> Index Scan using p2_pkey on p2 p2_1
6870 Index Cond: ((id >= 50) AND (id <= 51))
6871 Filter: (ctid = '(1,1)'::tid)
6872 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
6873 Index Cond: ((id >= 50) AND (id <= 51))
6874 Filter: (ctid = '(1,1)'::tid)
6875 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6876 Index Cond: ((id >= 50) AND (id <= 51))
6877 Filter: (ctid = '(1,1)'::tid)
6878 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6879 Index Cond: ((id >= 50) AND (id <= 51))
6880 Filter: (ctid = '(1,1)'::tid)
6883 /*+IndexScan(p2 p2_pkey no_exist)*/
6884 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6885 LOG: available indexes for IndexScan(p2): p2_pkey
6886 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6887 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6888 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6891 IndexScan(p2 p2_pkey no_exist)
6897 -------------------------------------------------------
6899 -> Index Scan using p2_pkey on p2 p2_1
6900 Index Cond: ((id >= 50) AND (id <= 51))
6901 Filter: (ctid = '(1,1)'::tid)
6902 -> Index Scan using p2_c1_pkey on p2_c1 p2_2
6903 Index Cond: ((id >= 50) AND (id <= 51))
6904 Filter: (ctid = '(1,1)'::tid)
6905 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6906 Index Cond: ((id >= 50) AND (id <= 51))
6907 Filter: (ctid = '(1,1)'::tid)
6908 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6909 Index Cond: ((id >= 50) AND (id <= 51))
6910 Filter: (ctid = '(1,1)'::tid)
6913 /*+IndexScan(p2 p2_c1_id_val_idx no_exist)*/
6914 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6915 LOG: available indexes for IndexScan(p2):
6916 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6917 LOG: available indexes for IndexScan(p2_c1_c1):
6918 LOG: available indexes for IndexScan(p2_c1_c2):
6921 IndexScan(p2 p2_c1_id_val_idx no_exist)
6927 -----------------------------------------------------------------------
6929 -> Seq Scan on p2 p2_1
6930 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6931 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
6932 Index Cond: ((id >= 50) AND (id <= 51))
6933 Filter: (ctid = '(1,1)'::tid)
6934 -> Seq Scan on p2_c1_c1 p2_3
6935 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6936 -> Seq Scan on p2_c1_c2 p2_4
6937 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6940 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)*/
6941 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6942 LOG: available indexes for IndexScan(p2): p2_pkey
6943 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6944 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6945 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6948 IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)
6954 -------------------------------------------------------
6956 -> Index Scan using p2_pkey on p2 p2_1
6957 Index Cond: ((id >= 50) AND (id <= 51))
6958 Filter: (ctid = '(1,1)'::tid)
6959 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
6960 Index Cond: ((id >= 50) AND (id <= 51))
6961 Filter: (ctid = '(1,1)'::tid)
6962 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6963 Index Cond: ((id >= 50) AND (id <= 51))
6964 Filter: (ctid = '(1,1)'::tid)
6965 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6966 Index Cond: ((id >= 50) AND (id <= 51))
6967 Filter: (ctid = '(1,1)'::tid)
6970 /*+IndexScan(p2 p2_val_idx)*/
6971 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6972 LOG: available indexes for IndexScan(p2): p2_val_idx
6973 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx
6974 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx
6975 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx
6976 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx
6977 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx
6978 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx
6979 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx
6980 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx
6983 IndexScan(p2 p2_val_idx)
6989 -------------------------------------------------------------------
6991 -> Index Scan using p2_val_idx on p2 p2_1
6992 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6993 Filter: (ctid = '(1,1)'::tid)
6994 -> Index Scan using p2_c1_val_idx on p2_c1 p2_2
6995 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6996 Filter: (ctid = '(1,1)'::tid)
6997 -> Index Scan using p2_c2_val_idx on p2_c2 p2_3
6998 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6999 Filter: (ctid = '(1,1)'::tid)
7000 -> Index Scan using p2_c3_val_idx on p2_c3 p2_4
7001 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7002 Filter: (ctid = '(1,1)'::tid)
7003 -> Index Scan using p2_c4_val_idx on p2_c4 p2_5
7004 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7005 Filter: (ctid = '(1,1)'::tid)
7006 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1 p2_6
7007 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7008 Filter: (ctid = '(1,1)'::tid)
7009 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2 p2_7
7010 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7011 Filter: (ctid = '(1,1)'::tid)
7012 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1 p2_8
7013 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7014 Filter: (ctid = '(1,1)'::tid)
7015 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2 p2_9
7016 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7017 Filter: (ctid = '(1,1)'::tid)
7020 /*+IndexScan(p2 p2_expr)*/
7021 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7022 LOG: available indexes for IndexScan(p2): p2_expr
7023 LOG: available indexes for IndexScan(p2_c1): p2_c1_expr_idx
7024 LOG: available indexes for IndexScan(p2_c2): p2_c2_expr_idx
7025 LOG: available indexes for IndexScan(p2_c3): p2_c3_expr_idx
7026 LOG: available indexes for IndexScan(p2_c4): p2_c4_expr_idx
7027 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_expr_idx
7028 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_expr_idx
7029 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_expr_idx
7030 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_expr_idx
7033 IndexScan(p2 p2_expr)
7039 -----------------------------------------------------------------------------------------
7041 -> Seq Scan on p2 p2_1
7042 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7043 -> Seq Scan on p2_c1 p2_2
7044 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7045 -> Seq Scan on p2_c2 p2_3
7046 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7047 -> Seq Scan on p2_c3 p2_4
7048 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7049 -> Seq Scan on p2_c4 p2_5
7050 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7051 -> Seq Scan on p2_c1_c1 p2_6
7052 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7053 -> Seq Scan on p2_c1_c2 p2_7
7054 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7055 -> Seq Scan on p2_c3_c1 p2_8
7056 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7057 -> Seq Scan on p2_c3_c2 p2_9
7058 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7061 /*+IndexScan(p2 p2_val_idx6)*/
7062 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7063 LOG: available indexes for IndexScan(p2): p2_val_idx6
7064 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx7
7065 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx7
7066 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx7
7067 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx7
7068 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx7
7069 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx7
7070 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx7
7071 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx7
7074 IndexScan(p2 p2_val_idx6)
7080 -----------------------------------------------------------------------------------------
7082 -> Seq Scan on p2 p2_1
7083 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7084 -> Seq Scan on p2_c1 p2_2
7085 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7086 -> Seq Scan on p2_c2 p2_3
7087 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7088 -> Seq Scan on p2_c3 p2_4
7089 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7090 -> Seq Scan on p2_c4 p2_5
7091 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7092 -> Seq Scan on p2_c1_c1 p2_6
7093 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7094 -> Seq Scan on p2_c1_c2 p2_7
7095 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7096 -> Seq Scan on p2_c3_c1 p2_8
7097 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7098 -> Seq Scan on p2_c3_c2 p2_9
7099 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7102 /*+IndexScan(p2 p2_val_idx p2_val_idx6)*/
7103 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7104 LOG: available indexes for IndexScan(p2): p2_val_idx6 p2_val_idx
7105 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx7 p2_c1_val_idx
7106 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx7 p2_c2_val_idx
7107 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx7 p2_c3_val_idx
7108 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx7 p2_c4_val_idx
7109 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx7 p2_c1_c1_val_idx
7110 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx7 p2_c1_c2_val_idx
7111 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx7 p2_c3_c1_val_idx
7112 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx7 p2_c3_c2_val_idx
7115 IndexScan(p2 p2_val_idx p2_val_idx6)
7121 -------------------------------------------------------------------
7123 -> Index Scan using p2_val_idx on p2 p2_1
7124 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7125 Filter: (ctid = '(1,1)'::tid)
7126 -> Index Scan using p2_c1_val_idx on p2_c1 p2_2
7127 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7128 Filter: (ctid = '(1,1)'::tid)
7129 -> Index Scan using p2_c2_val_idx on p2_c2 p2_3
7130 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7131 Filter: (ctid = '(1,1)'::tid)
7132 -> Index Scan using p2_c3_val_idx on p2_c3 p2_4
7133 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7134 Filter: (ctid = '(1,1)'::tid)
7135 -> Index Scan using p2_c4_val_idx on p2_c4 p2_5
7136 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7137 Filter: (ctid = '(1,1)'::tid)
7138 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1 p2_6
7139 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7140 Filter: (ctid = '(1,1)'::tid)
7141 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2 p2_7
7142 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7143 Filter: (ctid = '(1,1)'::tid)
7144 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1 p2_8
7145 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7146 Filter: (ctid = '(1,1)'::tid)
7147 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2 p2_9
7148 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7149 Filter: (ctid = '(1,1)'::tid)
7152 -- regular expression
7154 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7156 ---------------------------------------------------------------------------------------------
7157 Index Only Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
7158 Index Cond: (id = 1)
7161 /*+ IndexScanRegexp(t5 t5_[^i].*)*/
7162 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7163 LOG: available indexes for IndexScanRegexp(t5): t5_val t5_pkey
7166 IndexScanRegexp(t5 t5_[^i].*)
7172 --------------------------------
7173 Index Scan using t5_pkey on t5
7174 Index Cond: (id = 1)
7177 /*+ IndexScanRegexp(t5 t5_id[0-9].*)*/
7178 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7179 LOG: available indexes for IndexScanRegexp(t5): t5_id3 t5_id2 t5_id1
7182 IndexScanRegexp(t5 t5_id[0-9].*)
7188 -------------------------------
7189 Index Scan using t5_id3 on t5
7190 Index Cond: (id = 1)
7193 /*+ IndexScanRegexp(t5 t5[^_].*)*/
7194 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7195 LOG: available indexes for IndexScanRegexp(t5):
7198 IndexScanRegexp(t5 t5[^_].*)
7204 --------------------
7209 /*+ IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7210 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7211 LOG: available indexes for IndexScanRegexp(t5):
7214 IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7220 --------------------
7225 /*+ IndexScan(t5 t5_id[0-9].*)*/
7226 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7227 LOG: available indexes for IndexScan(t5):
7230 IndexScan(t5 t5_id[0-9].*)
7236 --------------------
7241 /*+ IndexOnlyScanRegexp(t5 t5_[^i].*)*/
7242 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7243 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_val t5_pkey
7246 IndexOnlyScanRegexp(t5 t5_[^i].*)
7252 -------------------------------------
7253 Index Only Scan using t5_pkey on t5
7254 Index Cond: (id = 1)
7257 /*+ IndexOnlyScanRegexp(t5 t5_id[0-9].*)*/
7258 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7259 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_id3 t5_id2 t5_id1
7262 IndexOnlyScanRegexp(t5 t5_id[0-9].*)
7268 ------------------------------------
7269 Index Only Scan using t5_id3 on t5
7270 Index Cond: (id = 1)
7273 /*+ IndexOnlyScanRegexp(t5 t5[^_].*)*/
7274 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7275 LOG: available indexes for IndexOnlyScanRegexp(t5):
7278 IndexOnlyScanRegexp(t5 t5[^_].*)
7284 --------------------
7289 /*+ IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7290 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7291 LOG: available indexes for IndexOnlyScanRegexp(t5):
7294 IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7300 --------------------
7305 /*+ IndexOnlyScan(t5 t5_id[0-9].*)*/
7306 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7307 LOG: available indexes for IndexOnlyScan(t5):
7310 IndexOnlyScan(t5 t5_id[0-9].*)
7316 --------------------
7321 /*+ BitmapScanRegexp(t5 t5_[^i].*)*/
7322 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7323 LOG: available indexes for BitmapScanRegexp(t5): t5_val t5_pkey
7326 BitmapScanRegexp(t5 t5_[^i].*)
7332 ------------------------------------
7333 Bitmap Heap Scan on t5
7334 Recheck Cond: (id = 1)
7335 -> Bitmap Index Scan on t5_pkey
7336 Index Cond: (id = 1)
7339 /*+ BitmapScanRegexp(t5 t5_id[0-9].*)*/
7340 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7341 LOG: available indexes for BitmapScanRegexp(t5): t5_id3 t5_id2 t5_id1
7344 BitmapScanRegexp(t5 t5_id[0-9].*)
7350 -----------------------------------
7351 Bitmap Heap Scan on t5
7352 Recheck Cond: (id = 1)
7353 -> Bitmap Index Scan on t5_id3
7354 Index Cond: (id = 1)
7357 /*+ BitmapScanRegexp(t5 t5[^_].*)*/
7358 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7359 LOG: available indexes for BitmapScanRegexp(t5):
7362 BitmapScanRegexp(t5 t5[^_].*)
7368 --------------------
7373 /*+ BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7374 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7375 LOG: available indexes for BitmapScanRegexp(t5):
7378 BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7384 --------------------
7389 /*+ BitmapScan(t5 t5_id[0-9].*)*/
7390 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7391 LOG: available indexes for BitmapScan(t5):
7394 BitmapScan(t5 t5_id[0-9].*)
7400 --------------------
7406 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7408 ---------------------------------
7410 -> Seq Scan on p1 p1_1
7412 -> Seq Scan on p1_c1 p1_2
7414 -> Seq Scan on p1_c2 p1_3
7416 -> Seq Scan on p1_c3 p1_4
7418 -> Seq Scan on p1_c4 p1_5
7420 -> Seq Scan on p1_c1_c1 p1_6
7422 -> Seq Scan on p1_c1_c2 p1_7
7424 -> Seq Scan on p1_c3_c1 p1_8
7426 -> Seq Scan on p1_c3_c2 p1_9
7430 /*+ IndexScanRegexp(p1 p1_.*[^0-9]$)*/
7431 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7432 LOG: available indexes for IndexScanRegexp(p1): p1_pkey
7433 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_pkey
7434 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_pkey
7435 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_pkey
7436 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_pkey
7437 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7438 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7439 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7440 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7443 IndexScanRegexp(p1 p1_.*[^0-9]$)
7449 ---------------------------------
7451 -> Seq Scan on p1 p1_1
7453 -> Seq Scan on p1_c1 p1_2
7455 -> Seq Scan on p1_c2 p1_3
7457 -> Seq Scan on p1_c3 p1_4
7459 -> Seq Scan on p1_c4 p1_5
7461 -> Seq Scan on p1_c1_c1 p1_6
7463 -> Seq Scan on p1_c1_c2 p1_7
7465 -> Seq Scan on p1_c3_c1 p1_8
7467 -> Seq Scan on p1_c3_c2 p1_9
7471 /*+ IndexScanRegexp(p1 p1_.*val2.*)*/
7472 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7473 LOG: available indexes for IndexScanRegexp(p1): p1_val2
7474 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_val2
7475 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_val2
7476 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_val2
7477 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_val2
7478 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_val2
7479 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_val2
7480 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_val2
7481 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_val2
7484 IndexScanRegexp(p1 p1_.*val2.*)
7490 -------------------------------------------------------
7492 -> Index Scan using p1_val2 on p1 p1_1
7493 Index Cond: (val = 1)
7494 -> Index Scan using p1_c1_val2 on p1_c1 p1_2
7495 Index Cond: (val = 1)
7496 -> Index Scan using p1_c2_val2 on p1_c2 p1_3
7497 Index Cond: (val = 1)
7498 -> Index Scan using p1_c3_val2 on p1_c3 p1_4
7499 Index Cond: (val = 1)
7500 -> Index Scan using p1_c4_val2 on p1_c4 p1_5
7501 Index Cond: (val = 1)
7502 -> Index Scan using p1_c1_c1_val2 on p1_c1_c1 p1_6
7503 Index Cond: (val = 1)
7504 -> Index Scan using p1_c1_c2_val2 on p1_c1_c2 p1_7
7505 Index Cond: (val = 1)
7506 -> Index Scan using p1_c3_c1_val2 on p1_c3_c1 p1_8
7507 Index Cond: (val = 1)
7508 -> Index Scan using p1_c3_c2_val2 on p1_c3_c2 p1_9
7509 Index Cond: (val = 1)
7512 /*+ IndexScanRegexp(p1 p1[^_].*)*/
7513 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7514 LOG: available indexes for IndexScanRegexp(p1):
7515 LOG: available indexes for IndexScanRegexp(p1_c1):
7516 LOG: available indexes for IndexScanRegexp(p1_c2):
7517 LOG: available indexes for IndexScanRegexp(p1_c3):
7518 LOG: available indexes for IndexScanRegexp(p1_c4):
7519 LOG: available indexes for IndexScanRegexp(p1_c1_c1):
7520 LOG: available indexes for IndexScanRegexp(p1_c1_c2):
7521 LOG: available indexes for IndexScanRegexp(p1_c3_c1):
7522 LOG: available indexes for IndexScanRegexp(p1_c3_c2):
7525 IndexScanRegexp(p1 p1[^_].*)
7531 ---------------------------------
7533 -> Seq Scan on p1 p1_1
7535 -> Seq Scan on p1_c1 p1_2
7537 -> Seq Scan on p1_c2 p1_3
7539 -> Seq Scan on p1_c3 p1_4
7541 -> Seq Scan on p1_c4 p1_5
7543 -> Seq Scan on p1_c1_c1 p1_6
7545 -> Seq Scan on p1_c1_c2 p1_7
7547 -> Seq Scan on p1_c3_c1 p1_8
7549 -> Seq Scan on p1_c3_c2 p1_9
7553 /*+ IndexScan(p1 p1_.*val2.*)*/
7554 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7555 LOG: available indexes for IndexScan(p1):
7556 LOG: available indexes for IndexScan(p1_c1):
7557 LOG: available indexes for IndexScan(p1_c2):
7558 LOG: available indexes for IndexScan(p1_c3):
7559 LOG: available indexes for IndexScan(p1_c4):
7560 LOG: available indexes for IndexScan(p1_c1_c1):
7561 LOG: available indexes for IndexScan(p1_c1_c2):
7562 LOG: available indexes for IndexScan(p1_c3_c1):
7563 LOG: available indexes for IndexScan(p1_c3_c2):
7566 IndexScan(p1 p1_.*val2.*)
7572 ---------------------------------
7574 -> Seq Scan on p1 p1_1
7576 -> Seq Scan on p1_c1 p1_2
7578 -> Seq Scan on p1_c2 p1_3
7580 -> Seq Scan on p1_c3 p1_4
7582 -> Seq Scan on p1_c4 p1_5
7584 -> Seq Scan on p1_c1_c1 p1_6
7586 -> Seq Scan on p1_c1_c2 p1_7
7588 -> Seq Scan on p1_c3_c1 p1_8
7590 -> Seq Scan on p1_c3_c2 p1_9
7594 /*+ IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)*/
7595 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7596 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_pkey
7597 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_pkey
7598 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_pkey
7599 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_pkey
7600 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_pkey
7601 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7602 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7603 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7604 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7607 IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)
7613 ---------------------------------
7615 -> Seq Scan on p1 p1_1
7617 -> Seq Scan on p1_c1 p1_2
7619 -> Seq Scan on p1_c2 p1_3
7621 -> Seq Scan on p1_c3 p1_4
7623 -> Seq Scan on p1_c4 p1_5
7625 -> Seq Scan on p1_c1_c1 p1_6
7627 -> Seq Scan on p1_c1_c2 p1_7
7629 -> Seq Scan on p1_c3_c1 p1_8
7631 -> Seq Scan on p1_c3_c2 p1_9
7635 /*+ IndexOnlyScanRegexp(p1 p1_.*val2.*)*/
7636 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7637 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_val2
7638 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_val2
7639 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_val2
7640 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_val2
7641 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_val2
7642 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_val2
7643 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_val2
7644 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_val2
7645 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_val2
7648 IndexOnlyScanRegexp(p1 p1_.*val2.*)
7654 ------------------------------------------------------------
7656 -> Index Only Scan using p1_val2 on p1 p1_1
7657 Index Cond: (val = 1)
7658 -> Index Only Scan using p1_c1_val2 on p1_c1 p1_2
7659 Index Cond: (val = 1)
7660 -> Index Only Scan using p1_c2_val2 on p1_c2 p1_3
7661 Index Cond: (val = 1)
7662 -> Index Only Scan using p1_c3_val2 on p1_c3 p1_4
7663 Index Cond: (val = 1)
7664 -> Index Only Scan using p1_c4_val2 on p1_c4 p1_5
7665 Index Cond: (val = 1)
7666 -> Index Only Scan using p1_c1_c1_val2 on p1_c1_c1 p1_6
7667 Index Cond: (val = 1)
7668 -> Index Only Scan using p1_c1_c2_val2 on p1_c1_c2 p1_7
7669 Index Cond: (val = 1)
7670 -> Index Only Scan using p1_c3_c1_val2 on p1_c3_c1 p1_8
7671 Index Cond: (val = 1)
7672 -> Index Only Scan using p1_c3_c2_val2 on p1_c3_c2 p1_9
7673 Index Cond: (val = 1)
7676 /*+ IndexOnlyScanRegexp(p1 p1[^_].*)*/
7677 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7678 LOG: available indexes for IndexOnlyScanRegexp(p1):
7679 LOG: available indexes for IndexOnlyScanRegexp(p1_c1):
7680 LOG: available indexes for IndexOnlyScanRegexp(p1_c2):
7681 LOG: available indexes for IndexOnlyScanRegexp(p1_c3):
7682 LOG: available indexes for IndexOnlyScanRegexp(p1_c4):
7683 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1):
7684 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2):
7685 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1):
7686 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2):
7689 IndexOnlyScanRegexp(p1 p1[^_].*)
7695 ---------------------------------
7697 -> Seq Scan on p1 p1_1
7699 -> Seq Scan on p1_c1 p1_2
7701 -> Seq Scan on p1_c2 p1_3
7703 -> Seq Scan on p1_c3 p1_4
7705 -> Seq Scan on p1_c4 p1_5
7707 -> Seq Scan on p1_c1_c1 p1_6
7709 -> Seq Scan on p1_c1_c2 p1_7
7711 -> Seq Scan on p1_c3_c1 p1_8
7713 -> Seq Scan on p1_c3_c2 p1_9
7717 /*+ IndexOnlyScan(p1 p1_.*val2.*)*/
7718 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7719 LOG: available indexes for IndexOnlyScan(p1):
7720 LOG: available indexes for IndexOnlyScan(p1_c1):
7721 LOG: available indexes for IndexOnlyScan(p1_c2):
7722 LOG: available indexes for IndexOnlyScan(p1_c3):
7723 LOG: available indexes for IndexOnlyScan(p1_c4):
7724 LOG: available indexes for IndexOnlyScan(p1_c1_c1):
7725 LOG: available indexes for IndexOnlyScan(p1_c1_c2):
7726 LOG: available indexes for IndexOnlyScan(p1_c3_c1):
7727 LOG: available indexes for IndexOnlyScan(p1_c3_c2):
7730 IndexOnlyScan(p1 p1_.*val2.*)
7736 ---------------------------------
7738 -> Seq Scan on p1 p1_1
7740 -> Seq Scan on p1_c1 p1_2
7742 -> Seq Scan on p1_c2 p1_3
7744 -> Seq Scan on p1_c3 p1_4
7746 -> Seq Scan on p1_c4 p1_5
7748 -> Seq Scan on p1_c1_c1 p1_6
7750 -> Seq Scan on p1_c1_c2 p1_7
7752 -> Seq Scan on p1_c3_c1 p1_8
7754 -> Seq Scan on p1_c3_c2 p1_9
7758 /*+ BitmapScanRegexp(p1 p1_.*[^0-9]$)*/
7759 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7760 LOG: available indexes for BitmapScanRegexp(p1): p1_pkey
7761 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_pkey
7762 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_pkey
7763 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_pkey
7764 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_pkey
7765 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7766 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7767 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7768 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7771 BitmapScanRegexp(p1 p1_.*[^0-9]$)
7777 ---------------------------------
7779 -> Seq Scan on p1 p1_1
7781 -> Seq Scan on p1_c1 p1_2
7783 -> Seq Scan on p1_c2 p1_3
7785 -> Seq Scan on p1_c3 p1_4
7787 -> Seq Scan on p1_c4 p1_5
7789 -> Seq Scan on p1_c1_c1 p1_6
7791 -> Seq Scan on p1_c1_c2 p1_7
7793 -> Seq Scan on p1_c3_c1 p1_8
7795 -> Seq Scan on p1_c3_c2 p1_9
7799 /*+ BitmapScanRegexp(p1 p1_.*val2.*)*/
7800 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7801 LOG: available indexes for BitmapScanRegexp(p1): p1_val2
7802 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_val2
7803 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_val2
7804 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_val2
7805 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_val2
7806 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_val2
7807 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_val2
7808 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_val2
7809 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_val2
7812 BitmapScanRegexp(p1 p1_.*val2.*)
7818 ------------------------------------------------
7820 -> Bitmap Heap Scan on p1 p1_1
7821 Recheck Cond: (val = 1)
7822 -> Bitmap Index Scan on p1_val2
7823 Index Cond: (val = 1)
7824 -> Bitmap Heap Scan on p1_c1 p1_2
7825 Recheck Cond: (val = 1)
7826 -> Bitmap Index Scan on p1_c1_val2
7827 Index Cond: (val = 1)
7828 -> Bitmap Heap Scan on p1_c2 p1_3
7829 Recheck Cond: (val = 1)
7830 -> Bitmap Index Scan on p1_c2_val2
7831 Index Cond: (val = 1)
7832 -> Bitmap Heap Scan on p1_c3 p1_4
7833 Recheck Cond: (val = 1)
7834 -> Bitmap Index Scan on p1_c3_val2
7835 Index Cond: (val = 1)
7836 -> Bitmap Heap Scan on p1_c4 p1_5
7837 Recheck Cond: (val = 1)
7838 -> Bitmap Index Scan on p1_c4_val2
7839 Index Cond: (val = 1)
7840 -> Bitmap Heap Scan on p1_c1_c1 p1_6
7841 Recheck Cond: (val = 1)
7842 -> Bitmap Index Scan on p1_c1_c1_val2
7843 Index Cond: (val = 1)
7844 -> Bitmap Heap Scan on p1_c1_c2 p1_7
7845 Recheck Cond: (val = 1)
7846 -> Bitmap Index Scan on p1_c1_c2_val2
7847 Index Cond: (val = 1)
7848 -> Bitmap Heap Scan on p1_c3_c1 p1_8
7849 Recheck Cond: (val = 1)
7850 -> Bitmap Index Scan on p1_c3_c1_val2
7851 Index Cond: (val = 1)
7852 -> Bitmap Heap Scan on p1_c3_c2 p1_9
7853 Recheck Cond: (val = 1)
7854 -> Bitmap Index Scan on p1_c3_c2_val2
7855 Index Cond: (val = 1)
7858 /*+ BitmapScanRegexp(p1 p1[^_].*)*/
7859 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7860 LOG: available indexes for BitmapScanRegexp(p1):
7861 LOG: available indexes for BitmapScanRegexp(p1_c1):
7862 LOG: available indexes for BitmapScanRegexp(p1_c2):
7863 LOG: available indexes for BitmapScanRegexp(p1_c3):
7864 LOG: available indexes for BitmapScanRegexp(p1_c4):
7865 LOG: available indexes for BitmapScanRegexp(p1_c1_c1):
7866 LOG: available indexes for BitmapScanRegexp(p1_c1_c2):
7867 LOG: available indexes for BitmapScanRegexp(p1_c3_c1):
7868 LOG: available indexes for BitmapScanRegexp(p1_c3_c2):
7871 BitmapScanRegexp(p1 p1[^_].*)
7877 ---------------------------------
7879 -> Seq Scan on p1 p1_1
7881 -> Seq Scan on p1_c1 p1_2
7883 -> Seq Scan on p1_c2 p1_3
7885 -> Seq Scan on p1_c3 p1_4
7887 -> Seq Scan on p1_c4 p1_5
7889 -> Seq Scan on p1_c1_c1 p1_6
7891 -> Seq Scan on p1_c1_c2 p1_7
7893 -> Seq Scan on p1_c3_c1 p1_8
7895 -> Seq Scan on p1_c3_c2 p1_9
7899 /*+ BitmapScan(p1 p1_.*val2.*)*/
7900 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7901 LOG: available indexes for BitmapScan(p1):
7902 LOG: available indexes for BitmapScan(p1_c1):
7903 LOG: available indexes for BitmapScan(p1_c2):
7904 LOG: available indexes for BitmapScan(p1_c3):
7905 LOG: available indexes for BitmapScan(p1_c4):
7906 LOG: available indexes for BitmapScan(p1_c1_c1):
7907 LOG: available indexes for BitmapScan(p1_c1_c2):
7908 LOG: available indexes for BitmapScan(p1_c3_c1):
7909 LOG: available indexes for BitmapScan(p1_c3_c2):
7912 BitmapScan(p1 p1_.*val2.*)
7918 ---------------------------------
7920 -> Seq Scan on p1 p1_1
7922 -> Seq Scan on p1_c1 p1_2
7924 -> Seq Scan on p1_c2 p1_3
7926 -> Seq Scan on p1_c3 p1_4
7928 -> Seq Scan on p1_c4 p1_5
7930 -> Seq Scan on p1_c1_c1 p1_6
7932 -> Seq Scan on p1_c1_c2 p1_7
7934 -> Seq Scan on p1_c3_c1 p1_8
7936 -> Seq Scan on p1_c3_c2 p1_9
7940 -- search from hint table
7941 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?;', '', 'SeqScan(t1)');
7942 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?;', '', 'IndexScan(t1)');
7943 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN SELECT * FROM t1 WHERE t1.id = ?;', '', 'BitmapScan(t1)');
7944 SELECT * FROM hint_plan.hints ORDER BY id;
7945 id | norm_query_string | application_name | hints
7946 ----+----------------------------------------------------------+------------------+----------------
7947 1 | EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?; | | SeqScan(t1)
7948 2 | EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?; | | IndexScan(t1)
7949 3 | EXPLAIN SELECT * FROM t1 WHERE t1.id = ?; | | BitmapScan(t1)
7952 SET pg_hint_plan.enable_hint_table = on;
7953 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7962 --------------------
7967 SET pg_hint_plan.enable_hint_table = off;
7968 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7970 --------------------------------
7971 Index Scan using t1_pkey on t1
7972 Index Cond: (id = 1)
7975 TRUNCATE hint_plan.hints;
7976 VACUUM ANALYZE hint_plan.hints;
7978 EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = 1;
7980 -------------------------------------
7981 Index Only Scan using t1_pkey on t1
7982 Index Cond: (id = 1)
7986 CREATE FUNCTION testfunc() RETURNS RECORD AS $$
7990 SELECT /*+ SeqScan(t1) */ * INTO ret FROM t1 LIMIT 1;
7993 $$ LANGUAGE plpgsql;
8002 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 LIMIT 1"
8003 PL/pgSQL function testfunc() line 5 at SQL statement
8010 DROP FUNCTION testfunc();
8011 CREATE FUNCTION testfunc() RETURNS void AS $$
8013 EXECUTE format('/*+ SeqScan(t1) */ SELECT * FROM t1');
8015 $$ LANGUAGE plpgsql;
8024 CONTEXT: SQL statement "/*+ SeqScan(t1) */ SELECT * FROM t1"
8025 PL/pgSQL function testfunc() line 3 at EXECUTE
8031 -- This should not use SeqScan(t1)
8032 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8046 DROP FUNCTION testfunc();
8047 CREATE FUNCTION testfunc() RETURNS void AS $$
8049 PERFORM 1, /*+ SeqScan(t1) */ * from t1;
8051 $$ LANGUAGE plpgsql;
8060 CONTEXT: SQL statement "SELECT 1, /*+ SeqScan(t1) */ * from t1"
8061 PL/pgSQL function testfunc() line 3 at PERFORM
8068 DROP FUNCTION testfunc();
8069 CREATE FUNCTION testfunc() RETURNS int AS $$
8075 FOR v IN SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id LOOP
8080 $$ LANGUAGE plpgsql;
8089 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id"
8090 PL/pgSQL function testfunc() line 7 at FOR over SELECT rows
8097 DROP FUNCTION testfunc();
8098 CREATE FUNCTION testfunc() RETURNS int AS $$
8105 FOR v IN EXECUTE 'SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id' LOOP
8110 $$ LANGUAGE plpgsql;
8119 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id"
8120 PL/pgSQL function testfunc() line 8 at FOR over EXECUTE statement
8127 DROP FUNCTION testfunc();
8128 CREATE FUNCTION testfunc() RETURNS int AS $$
8130 ref CURSOR FOR SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8135 sum := sum + rec.val;
8139 $$ LANGUAGE plpgsql;
8148 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8149 PL/pgSQL function testfunc() line 7 at FOR over cursor
8156 DROP FUNCTION testfunc();
8157 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8159 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8161 $$ LANGUAGE plpgsql;
8162 SELECT * FROM testfunc() LIMIT 1;
8170 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8171 PL/pgSQL function testfunc() line 3 at RETURN QUERY
8177 -- Test for error exit from inner SQL statement.
8178 DROP FUNCTION testfunc();
8179 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8181 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id;
8183 $$ LANGUAGE plpgsql;
8184 SELECT * FROM testfunc() LIMIT 1;
8185 ERROR: relation "ttx" does not exist
8186 LINE 1: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8188 QUERY: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8189 CONTEXT: PL/pgSQL function testfunc() line 3 at RETURN QUERY
8190 -- this should not use SeqScan(t1) hint.
8191 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8204 DROP FUNCTION testfunc();
8205 DROP EXTENSION pg_hint_plan;
8206 CREATE FUNCTION reset_stats_and_wait() RETURNS void AS $$
8212 PERFORM pg_stat_reset();
8213 PERFORM pg_sleep(0.5);
8214 SELECT sum(seq_scan + idx_scan) from pg_stat_user_tables into rows;
8217 $$ LANGUAGE plpgsql;
8218 -- Dynamic query in pl/pgsql
8219 CREATE OR REPLACE FUNCTION dynsql1(x int) RETURNS int AS $$
8222 EXECUTE '/*+ IndexScan(t1) */ SELECT count(*) FROM t1 WHERE id < $1'
8226 $$ VOLATILE LANGUAGE plpgsql;
8228 SET pg_hint_plan.enable_hint = false;
8235 SELECT reset_stats_and_wait();
8236 reset_stats_and_wait
8237 ----------------------
8241 SELECT dynsql1(9000);
8253 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';
8254 relname | seq_scan | idx_scan
8255 ---------+----------+----------
8259 SET pg_hint_plan.enable_hint = true;
8260 SELECT reset_stats_and_wait();
8261 reset_stats_and_wait
8262 ----------------------
8266 SELECT dynsql1(9000);
8274 CONTEXT: SQL statement "/*+ IndexScan(t1) */ SELECT count(*) FROM t1 WHERE id < $1"
8275 PL/pgSQL function dynsql1(integer) line 4 at EXECUTE
8287 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';
8288 relname | seq_scan | idx_scan
8289 ---------+----------+----------
8293 -- Looped dynamic query in pl/pgsql
8294 CREATE OR REPLACE FUNCTION dynsql2(x int, OUT r int) AS $$
8300 FOR c IN SELECT f.f FROM (VALUES ('p1_c1'), ('p1_c2')) f(f) LOOP
8301 FOR s IN EXECUTE '/*+ IndexScan(' || c || ' ' || c || '_pkey) */ SELECT sum(val) FROM ' || c || ' WHERE id < ' || x LOOP
8306 $$ VOLATILE LANGUAGE plpgsql;
8307 SET pg_hint_plan.enable_hint = false;
8308 SELECT reset_stats_and_wait();
8309 reset_stats_and_wait
8310 ----------------------
8314 SELECT dynsql2(9000);
8326 -- one of the index scans happened while planning.
8327 SELECT relname, seq_scan, idx_scan FROM pg_stat_user_tables WHERE schemaname = 'public' AND (relname = 'p1_c1' OR relname = 'p1_c2');
8328 relname | seq_scan | idx_scan
8329 ---------+----------+----------
8334 SET pg_hint_plan.enable_hint = true;
8335 SELECT reset_stats_and_wait();
8336 reset_stats_and_wait
8337 ----------------------
8341 SELECT dynsql2(9000);
8342 LOG: available indexes for IndexScan(p1_c1): p1_c1_pkey
8343 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8344 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8345 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_pkey
8346 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8347 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8348 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_pkey
8349 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8350 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8353 IndexScan(p1_c1 p1_c1_pkey)
8358 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8359 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8360 LOG: available indexes for IndexScan(p1_c2): p1_c2_pkey
8361 CONTEXT: SQL statement "/*+ IndexScan(p1_c2 p1_c2_pkey) */ SELECT sum(val) FROM p1_c2 WHERE id < 9000"
8362 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8365 IndexScan(p1_c2 p1_c2_pkey)
8370 CONTEXT: SQL statement "/*+ IndexScan(p1_c2 p1_c2_pkey) */ SELECT sum(val) FROM p1_c2 WHERE id < 9000"
8371 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8383 -- the index scan happened while planning.
8384 SELECT relname, seq_scan, idx_scan FROM pg_stat_user_tables WHERE schemaname = 'public' AND (relname = 'p1_c1' OR relname = 'p1_c2');
8385 relname | seq_scan | idx_scan
8386 ---------+----------+----------
8391 -- Subqueries on inheritance tables under UNION
8392 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8394 SELECT val::int FROM p2 WHERE id < 1000;
8396 ---------------------------------------------
8399 -> Seq Scan on p1 p1_1
8400 Filter: (val < 1000)
8401 -> Seq Scan on p1_c1 p1_2
8402 Filter: (val < 1000)
8403 -> Seq Scan on p1_c2 p1_3
8404 Filter: (val < 1000)
8405 -> Seq Scan on p1_c3 p1_4
8406 Filter: (val < 1000)
8407 -> Seq Scan on p1_c4 p1_5
8408 Filter: (val < 1000)
8409 -> Seq Scan on p1_c1_c1 p1_6
8410 Filter: (val < 1000)
8411 -> Seq Scan on p1_c1_c2 p1_7
8412 Filter: (val < 1000)
8413 -> Seq Scan on p1_c3_c1 p1_8
8414 Filter: (val < 1000)
8415 -> Seq Scan on p1_c3_c2 p1_9
8416 Filter: (val < 1000)
8419 -> Seq Scan on p2 p2_1
8421 -> Seq Scan on p2_c1 p2_2
8423 -> Seq Scan on p2_c2 p2_3
8425 -> Seq Scan on p2_c3 p2_4
8427 -> Seq Scan on p2_c4 p2_5
8429 -> Seq Scan on p2_c1_c1 p2_6
8431 -> Seq Scan on p2_c1_c2 p2_7
8433 -> Seq Scan on p2_c3_c1 p2_8
8435 -> Seq Scan on p2_c3_c2 p2_9
8439 /*+ IndexScan(p1 p1_val2) */
8440 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8442 SELECT val::int FROM p2 WHERE id < 1000;
8443 LOG: available indexes for IndexScan(p1): p1_val3 p1_val2 p1_val1
8444 LOG: available indexes for IndexScan(p1_c1): p1_c1_val3 p1_c1_val2 p1_c1_val1
8445 LOG: available indexes for IndexScan(p1_c2): p1_c2_val3 p1_c2_val2 p1_c2_val1
8446 LOG: available indexes for IndexScan(p1_c3): p1_c3_val3 p1_c3_val2 p1_c3_val1
8447 LOG: available indexes for IndexScan(p1_c4): p1_c4_val3 p1_c4_val2 p1_c4_val1
8448 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_val3 p1_c1_c1_val2 p1_c1_c1_val1
8449 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_val3 p1_c1_c2_val2 p1_c1_c2_val1
8450 LOG: available indexes for IndexScan(p1_c3_c1): p1_c3_c1_val3 p1_c3_c1_val2 p1_c3_c1_val1
8451 LOG: available indexes for IndexScan(p1_c3_c2): p1_c3_c2_val3 p1_c3_c2_val2 p1_c3_c2_val1
8454 IndexScan(p1 p1_val2)
8460 -------------------------------------------------------------
8463 -> Index Scan using p1_val3 on p1 p1_1
8464 Index Cond: (val < 1000)
8465 -> Index Scan using p1_c1_val3 on p1_c1 p1_2
8466 Index Cond: (val < 1000)
8467 -> Index Scan using p1_c2_val3 on p1_c2 p1_3
8468 Index Cond: (val < 1000)
8469 -> Index Scan using p1_c3_val3 on p1_c3 p1_4
8470 Index Cond: (val < 1000)
8471 -> Index Scan using p1_c4_val3 on p1_c4 p1_5
8472 Index Cond: (val < 1000)
8473 -> Index Scan using p1_c1_c1_val3 on p1_c1_c1 p1_6
8474 Index Cond: (val < 1000)
8475 -> Index Scan using p1_c1_c2_val3 on p1_c1_c2 p1_7
8476 Index Cond: (val < 1000)
8477 -> Index Scan using p1_c3_c1_val3 on p1_c3_c1 p1_8
8478 Index Cond: (val < 1000)
8479 -> Index Scan using p1_c3_c2_val3 on p1_c3_c2 p1_9
8480 Index Cond: (val < 1000)
8483 -> Seq Scan on p2 p2_1
8485 -> Seq Scan on p2_c1 p2_2
8487 -> Seq Scan on p2_c2 p2_3
8489 -> Seq Scan on p2_c3 p2_4
8491 -> Seq Scan on p2_c4 p2_5
8493 -> Seq Scan on p2_c1_c1 p2_6
8495 -> Seq Scan on p2_c1_c2 p2_7
8497 -> Seq Scan on p2_c3_c1 p2_8
8499 -> Seq Scan on p2_c3_c2 p2_9
8503 /*+ IndexScan(p1 p1_val2) IndexScan(p2 p2_id_val_idx) */
8504 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8506 SELECT val::int FROM p2 WHERE id < 1000;
8507 LOG: available indexes for IndexScan(p1): p1_val3 p1_val2 p1_val1
8508 LOG: available indexes for IndexScan(p1_c1): p1_c1_val3 p1_c1_val2 p1_c1_val1
8509 LOG: available indexes for IndexScan(p1_c2): p1_c2_val3 p1_c2_val2 p1_c2_val1
8510 LOG: available indexes for IndexScan(p1_c3): p1_c3_val3 p1_c3_val2 p1_c3_val1
8511 LOG: available indexes for IndexScan(p1_c4): p1_c4_val3 p1_c4_val2 p1_c4_val1
8512 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_val3 p1_c1_c1_val2 p1_c1_c1_val1
8513 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_val3 p1_c1_c2_val2 p1_c1_c2_val1
8514 LOG: available indexes for IndexScan(p1_c3_c1): p1_c3_c1_val3 p1_c3_c1_val2 p1_c3_c1_val1
8515 LOG: available indexes for IndexScan(p1_c3_c2): p1_c3_c2_val3 p1_c3_c2_val2 p1_c3_c2_val1
8516 LOG: available indexes for IndexScan(p2): p2_id_val_idx
8517 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
8518 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
8519 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
8520 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
8521 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
8522 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
8523 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
8524 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
8527 IndexScan(p1 p1_val2)
8528 IndexScan(p2 p2_id_val_idx)
8534 -------------------------------------------------------------------------
8537 -> Index Scan using p1_val3 on p1 p1_1
8538 Index Cond: (val < 1000)
8539 -> Index Scan using p1_c1_val3 on p1_c1 p1_2
8540 Index Cond: (val < 1000)
8541 -> Index Scan using p1_c2_val3 on p1_c2 p1_3
8542 Index Cond: (val < 1000)
8543 -> Index Scan using p1_c3_val3 on p1_c3 p1_4
8544 Index Cond: (val < 1000)
8545 -> Index Scan using p1_c4_val3 on p1_c4 p1_5
8546 Index Cond: (val < 1000)
8547 -> Index Scan using p1_c1_c1_val3 on p1_c1_c1 p1_6
8548 Index Cond: (val < 1000)
8549 -> Index Scan using p1_c1_c2_val3 on p1_c1_c2 p1_7
8550 Index Cond: (val < 1000)
8551 -> Index Scan using p1_c3_c1_val3 on p1_c3_c1 p1_8
8552 Index Cond: (val < 1000)
8553 -> Index Scan using p1_c3_c2_val3 on p1_c3_c2 p1_9
8554 Index Cond: (val < 1000)
8557 -> Index Scan using p2_id_val_idx on p2 p2_1
8558 Index Cond: (id < 1000)
8559 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
8560 Index Cond: (id < 1000)
8561 -> Index Scan using p2_c2_id_val_idx on p2_c2 p2_3
8562 Index Cond: (id < 1000)
8563 -> Index Scan using p2_c3_id_val_idx on p2_c3 p2_4
8564 Index Cond: (id < 1000)
8565 -> Index Scan using p2_c4_id_val_idx on p2_c4 p2_5
8566 Index Cond: (id < 1000)
8567 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_6
8568 Index Cond: (id < 1000)
8569 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_7
8570 Index Cond: (id < 1000)
8571 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1 p2_8
8572 Index Cond: (id < 1000)
8573 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2 p2_9
8574 Index Cond: (id < 1000)
8578 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8580 SELECT val::int FROM p2 WHERE id < 1000;
8582 ---------------------------------------------------
8587 -> Seq Scan on p1 p1_1
8588 Filter: (val < 1000)
8589 -> Seq Scan on p1_c1 p1_2
8590 Filter: (val < 1000)
8591 -> Seq Scan on p1_c2 p1_3
8592 Filter: (val < 1000)
8593 -> Seq Scan on p1_c3 p1_4
8594 Filter: (val < 1000)
8595 -> Seq Scan on p1_c4 p1_5
8596 Filter: (val < 1000)
8597 -> Seq Scan on p1_c1_c1 p1_6
8598 Filter: (val < 1000)
8599 -> Seq Scan on p1_c1_c2 p1_7
8600 Filter: (val < 1000)
8601 -> Seq Scan on p1_c3_c1 p1_8
8602 Filter: (val < 1000)
8603 -> Seq Scan on p1_c3_c2 p1_9
8604 Filter: (val < 1000)
8607 -> Seq Scan on p2 p2_1
8609 -> Seq Scan on p2_c1 p2_2
8611 -> Seq Scan on p2_c2 p2_3
8613 -> Seq Scan on p2_c3 p2_4
8615 -> Seq Scan on p2_c4 p2_5
8617 -> Seq Scan on p2_c1_c1 p2_6
8619 -> Seq Scan on p2_c1_c2 p2_7
8621 -> Seq Scan on p2_c3_c1 p2_8
8623 -> Seq Scan on p2_c3_c2 p2_9
8627 /*+ IndexScan(p2 p2_id_val_idx) */
8628 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8630 SELECT val::int FROM p2 WHERE id < 1000;
8631 LOG: available indexes for IndexScan(p2): p2_id_val_idx
8632 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
8633 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
8634 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
8635 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
8636 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
8637 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
8638 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
8639 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
8642 IndexScan(p2 p2_id_val_idx)
8648 -------------------------------------------------------------------------------
8653 -> Seq Scan on p1 p1_1
8654 Filter: (val < 1000)
8655 -> Seq Scan on p1_c1 p1_2
8656 Filter: (val < 1000)
8657 -> Seq Scan on p1_c2 p1_3
8658 Filter: (val < 1000)
8659 -> Seq Scan on p1_c3 p1_4
8660 Filter: (val < 1000)
8661 -> Seq Scan on p1_c4 p1_5
8662 Filter: (val < 1000)
8663 -> Seq Scan on p1_c1_c1 p1_6
8664 Filter: (val < 1000)
8665 -> Seq Scan on p1_c1_c2 p1_7
8666 Filter: (val < 1000)
8667 -> Seq Scan on p1_c3_c1 p1_8
8668 Filter: (val < 1000)
8669 -> Seq Scan on p1_c3_c2 p1_9
8670 Filter: (val < 1000)
8673 -> Index Scan using p2_id_val_idx on p2 p2_1
8674 Index Cond: (id < 1000)
8675 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
8676 Index Cond: (id < 1000)
8677 -> Index Scan using p2_c2_id_val_idx on p2_c2 p2_3
8678 Index Cond: (id < 1000)
8679 -> Index Scan using p2_c3_id_val_idx on p2_c3 p2_4
8680 Index Cond: (id < 1000)
8681 -> Index Scan using p2_c4_id_val_idx on p2_c4 p2_5
8682 Index Cond: (id < 1000)
8683 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_6
8684 Index Cond: (id < 1000)
8685 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_7
8686 Index Cond: (id < 1000)
8687 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1 p2_8
8688 Index Cond: (id < 1000)
8689 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2 p2_9
8690 Index Cond: (id < 1000)
8693 /*+ IndexScan(p1 p1_val2) IndexScan(p2 p2_id_val_idx) */
8694 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8696 SELECT val::int FROM p2 WHERE id < 1000;
8697 LOG: available indexes for IndexScan(p1): p1_val3 p1_val2 p1_val1
8698 LOG: available indexes for IndexScan(p1_c1): p1_c1_val3 p1_c1_val2 p1_c1_val1
8699 LOG: available indexes for IndexScan(p1_c2): p1_c2_val3 p1_c2_val2 p1_c2_val1
8700 LOG: available indexes for IndexScan(p1_c3): p1_c3_val3 p1_c3_val2 p1_c3_val1
8701 LOG: available indexes for IndexScan(p1_c4): p1_c4_val3 p1_c4_val2 p1_c4_val1
8702 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_val3 p1_c1_c1_val2 p1_c1_c1_val1
8703 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_val3 p1_c1_c2_val2 p1_c1_c2_val1
8704 LOG: available indexes for IndexScan(p1_c3_c1): p1_c3_c1_val3 p1_c3_c1_val2 p1_c3_c1_val1
8705 LOG: available indexes for IndexScan(p1_c3_c2): p1_c3_c2_val3 p1_c3_c2_val2 p1_c3_c2_val1
8706 LOG: available indexes for IndexScan(p2): p2_id_val_idx
8707 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
8708 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
8709 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
8710 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
8711 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
8712 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
8713 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
8714 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
8717 IndexScan(p1 p1_val2)
8718 IndexScan(p2 p2_id_val_idx)
8724 -------------------------------------------------------------------------------
8729 -> Index Scan using p1_val3 on p1 p1_1
8730 Index Cond: (val < 1000)
8731 -> Index Scan using p1_c1_val3 on p1_c1 p1_2
8732 Index Cond: (val < 1000)
8733 -> Index Scan using p1_c2_val3 on p1_c2 p1_3
8734 Index Cond: (val < 1000)
8735 -> Index Scan using p1_c3_val3 on p1_c3 p1_4
8736 Index Cond: (val < 1000)
8737 -> Index Scan using p1_c4_val3 on p1_c4 p1_5
8738 Index Cond: (val < 1000)
8739 -> Index Scan using p1_c1_c1_val3 on p1_c1_c1 p1_6
8740 Index Cond: (val < 1000)
8741 -> Index Scan using p1_c1_c2_val3 on p1_c1_c2 p1_7
8742 Index Cond: (val < 1000)
8743 -> Index Scan using p1_c3_c1_val3 on p1_c3_c1 p1_8
8744 Index Cond: (val < 1000)
8745 -> Index Scan using p1_c3_c2_val3 on p1_c3_c2 p1_9
8746 Index Cond: (val < 1000)
8749 -> Index Scan using p2_id_val_idx on p2 p2_1
8750 Index Cond: (id < 1000)
8751 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
8752 Index Cond: (id < 1000)
8753 -> Index Scan using p2_c2_id_val_idx on p2_c2 p2_3
8754 Index Cond: (id < 1000)
8755 -> Index Scan using p2_c3_id_val_idx on p2_c3 p2_4
8756 Index Cond: (id < 1000)
8757 -> Index Scan using p2_c4_id_val_idx on p2_c4 p2_5
8758 Index Cond: (id < 1000)
8759 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_6
8760 Index Cond: (id < 1000)
8761 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_7
8762 Index Cond: (id < 1000)
8763 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1 p2_8
8764 Index Cond: (id < 1000)
8765 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2 p2_9
8766 Index Cond: (id < 1000)
8772 -- Explain result includes "Planning time" if COSTS is enabled, but
8773 -- this test needs it enabled for get rows count. So do tests via psql
8774 -- and grep -v the mutable line.
8775 -- Parse error check
8776 /*+ Rows() */ SELECT 1;
8777 INFO: pg_hint_plan: hint syntax error at or near " "
8778 DETAIL: Rows hint needs at least one relation followed by one correction term.
8791 /*+ Rows(x) */ SELECT 1;
8792 INFO: pg_hint_plan: hint syntax error at or near " "
8793 DETAIL: Rows hint needs at least one relation followed by one correction term.
8807 \o results/pg_hint_plan.tmpout
8808 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8810 \! sql/maskout.sh results/pg_hint_plan.tmpout
8813 Merge Join (cost=xxx..xxx rows=1000 width=xxx)
8814 Merge Cond: (t1.id = t2.id)
8815 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8816 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8818 \o results/pg_hint_plan.tmpout
8819 /*+ Rows(t1 t2 #99) */
8820 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8829 \! sql/maskout.sh results/pg_hint_plan.tmpout
8832 Merge Join (cost=xxx..xxx rows=99 width=xxx)
8833 Merge Cond: (t1.id = t2.id)
8834 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8835 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8837 \o results/pg_hint_plan.tmpout
8838 /*+ Rows(t1 t2 +99) */
8839 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8848 \! sql/maskout.sh results/pg_hint_plan.tmpout
8851 Merge Join (cost=xxx..xxx rows=1099 width=xxx)
8852 Merge Cond: (t1.id = t2.id)
8853 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8854 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8856 \o results/pg_hint_plan.tmpout
8857 /*+ Rows(t1 t2 -99) */
8858 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8867 \! sql/maskout.sh results/pg_hint_plan.tmpout
8870 Merge Join (cost=xxx..xxx rows=901 width=xxx)
8871 Merge Cond: (t1.id = t2.id)
8872 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8873 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8875 \o results/pg_hint_plan.tmpout
8876 /*+ Rows(t1 t2 *99) */
8877 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8886 \! sql/maskout.sh results/pg_hint_plan.tmpout
8889 Merge Join (cost=xxx..xxx rows=99000 width=xxx)
8890 Merge Cond: (t1.id = t2.id)
8891 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8892 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8894 \o results/pg_hint_plan.tmpout
8895 /*+ Rows(t1 t2 *0.01) */
8896 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8905 \! sql/maskout.sh results/pg_hint_plan.tmpout
8908 Merge Join (cost=xxx..xxx rows=10 width=xxx)
8909 Merge Cond: (t1.id = t2.id)
8910 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8911 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8913 \o results/pg_hint_plan.tmpout
8914 /*+ Rows(t1 t2 #aa) */
8915 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8916 INFO: pg_hint_plan: hint syntax error at or near "aa"
8917 DETAIL: Rows hint requires valid number as rows estimation.
8926 \! sql/maskout.sh results/pg_hint_plan.tmpout
8929 Merge Join (cost=xxx..xxx rows=1000 width=xxx)
8930 Merge Cond: (t1.id = t2.id)
8931 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8932 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8934 \o results/pg_hint_plan.tmpout
8935 /*+ Rows(t1 t2 /99) */
8936 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8937 INFO: pg_hint_plan: hint syntax error at or near "/99"
8938 DETAIL: Unrecognized rows value type notation.
8947 \! sql/maskout.sh results/pg_hint_plan.tmpout
8950 Merge Join (cost=xxx..xxx rows=1000 width=xxx)
8951 Merge Cond: (t1.id = t2.id)
8952 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8953 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8956 \o results/pg_hint_plan.tmpout
8957 /*+ Rows(t1 t2 -99999) */
8958 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8959 WARNING: Force estimate to be at least one row, to avoid possible divide-by-zero when interpolating costs : Rows(t1 t2 -99999)
8968 \! sql/maskout.sh results/pg_hint_plan.tmpout
8971 Merge Join (cost=xxx..xxx rows=1 width=xxx)
8972 Merge Cond: (t1.id = t2.id)
8973 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8974 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8976 -- complex join tree
8977 \o results/pg_hint_plan.tmpout
8978 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8980 \! sql/maskout.sh results/pg_hint_plan.tmpout
8983 Merge Join (cost=xxx..xxx rows=10 width=xxx)
8984 Merge Cond: (t1.id = t3.id)
8985 -> Merge Join (cost=xxx..xxx rows=1000 width=xxx)
8986 Merge Cond: (t1.id = t2.id)
8987 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8988 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8989 -> Sort (cost=xxx..xxx rows=100 width=xxx)
8991 -> Seq Scan on t3 (cost=xxx..xxx rows=100 width=xxx)
8993 \o results/pg_hint_plan.tmpout
8994 /*+ Rows(t1 t2 #22) */
8995 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
9004 \! sql/maskout.sh results/pg_hint_plan.tmpout
9007 Merge Join (cost=xxx..xxx rows=1 width=xxx)
9008 Merge Cond: (t1.id = t3.id)
9009 -> Merge Join (cost=xxx..xxx rows=22 width=xxx)
9010 Merge Cond: (t1.id = t2.id)
9011 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
9012 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
9013 -> Sort (cost=xxx..xxx rows=100 width=xxx)
9015 -> Seq Scan on t3 (cost=xxx..xxx rows=100 width=xxx)
9017 \o results/pg_hint_plan.tmpout
9018 /*+ Rows(t1 t3 *10) */
9019 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
9028 set max_parallel_workers_per_gather to DEFAULT;
9029 \! sql/maskout.sh results/pg_hint_plan.tmpout
9032 Merge Join (cost=xxx..xxx rows=100 width=xxx)
9033 Merge Cond: (t1.id = t3.id)
9034 -> Merge Join (cost=xxx..xxx rows=1000 width=xxx)
9035 Merge Cond: (t1.id = t2.id)
9036 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
9037 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
9038 -> Sort (cost=xxx..xxx rows=100 width=xxx)
9040 -> Seq Scan on t3 (cost=xxx..xxx rows=100 width=xxx)
9042 \! rm results/pg_hint_plan.tmpout
9044 set client_min_messages to 'DEBUG1';
9045 set pg_hint_plan.debug_level to 'verbose';
9046 /*+ SeqScan( */ SELECT 1;
9047 INFO: pg_hint_plan: hint syntax error at or near ""
9048 DETAIL: Closing parenthesis is necessary.
9054 /*+ SeqScan(t1) */ SELECT * FROM t1 LIMIT 0;
9066 set pg_hint_plan.message_level to 'DEBUG1';
9067 set pg_hint_plan.parse_messages to 'NOTICE';
9068 /*+ SeqScan( */ SELECT 1;
9069 NOTICE: pg_hint_plan: hint syntax error at or near ""
9070 DETAIL: Closing parenthesis is necessary.
9076 /*+ SeqScan(t1) */ SELECT * FROM t1 LIMIT 0;
9077 DEBUG: pg_hint_plan:
9088 -- all hint types together
9089 /*+ SeqScan(t1) MergeJoin(t1 t2) Leading(t1 t2) Rows(t1 t2 +10) Parallel(t1 8 hard) Set(random_page_cost 2.0)*/
9090 EXPLAIN (costs off) SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
9091 DEBUG: adjusted rows 1000 to 1010
9092 DEBUG: pg_hint_plan:
9097 Set(random_page_cost 2.0)
9105 -------------------------------------------------
9108 Merge Cond: (t2.id = t1.id)
9109 -> Index Scan using t2_pkey on t2
9114 -> Parallel Seq Scan on t1
9115 -> Index Scan using t3_pkey on t3
9116 Index Cond: (id = t1.id)