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 -----------------------------------------------------------------------
3073 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3074 -> Seq Scan on p1_c1
3075 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3076 -> Seq Scan on p1_c2
3077 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3078 -> Seq Scan on p1_c3
3079 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3080 -> Seq Scan on p1_c4
3081 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3082 -> Seq Scan on p1_c1_c1
3083 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3084 -> Seq Scan on p1_c1_c2
3085 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3086 -> Seq Scan on p1_c3_c1
3087 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3088 -> Seq Scan on p1_c3_c2
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 -----------------------------------------------------------------------
3098 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3099 -> Seq Scan on p1_c1
3100 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3101 -> Seq Scan on p1_c1_c1
3102 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3103 -> Seq Scan on p1_c1_c2
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 -----------------------------------------------------------------------
3121 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3122 -> Seq Scan on p1_c1
3123 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3124 -> Seq Scan on p1_c2
3125 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3126 -> Seq Scan on p1_c3
3127 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3128 -> Seq Scan on p1_c4
3129 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3130 -> Seq Scan on p1_c1_c1
3131 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3132 -> Seq Scan on p1_c1_c2
3133 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3134 -> Seq Scan on p1_c3_c1
3135 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3136 -> Seq Scan on p1_c3_c2
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
3153 Index Cond: ((id >= 50) AND (id <= 51))
3154 Filter: (ctid = '(1,1)'::tid)
3155 -> Index Scan using p1_c1_pkey on p1_c1
3156 Index Cond: ((id >= 50) AND (id <= 51))
3157 Filter: (ctid = '(1,1)'::tid)
3158 -> Index Scan using p1_c2_pkey on p1_c2
3159 Index Cond: ((id >= 50) AND (id <= 51))
3160 Filter: (ctid = '(1,1)'::tid)
3161 -> Index Scan using p1_c3_pkey on p1_c3
3162 Index Cond: ((id >= 50) AND (id <= 51))
3163 Filter: (ctid = '(1,1)'::tid)
3164 -> Index Scan using p1_c4_pkey on p1_c4
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
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
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
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
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
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
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
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
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
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
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
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
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
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 ---------------------------------------------
3253 TID Cond: (ctid = '(1,1)'::tid)
3254 Filter: ((id >= 50) AND (id <= 51))
3255 -> Tid Scan on p1_c1
3256 TID Cond: (ctid = '(1,1)'::tid)
3257 Filter: ((id >= 50) AND (id <= 51))
3258 -> Tid Scan on p1_c2
3259 TID Cond: (ctid = '(1,1)'::tid)
3260 Filter: ((id >= 50) AND (id <= 51))
3261 -> Tid Scan on p1_c3
3262 TID Cond: (ctid = '(1,1)'::tid)
3263 Filter: ((id >= 50) AND (id <= 51))
3264 -> Tid Scan on p1_c4
3265 TID Cond: (ctid = '(1,1)'::tid)
3266 Filter: ((id >= 50) AND (id <= 51))
3267 -> Tid Scan on p1_c1_c1
3268 TID Cond: (ctid = '(1,1)'::tid)
3269 Filter: ((id >= 50) AND (id <= 51))
3270 -> Tid Scan on p1_c1_c2
3271 TID Cond: (ctid = '(1,1)'::tid)
3272 Filter: ((id >= 50) AND (id <= 51))
3273 -> Tid Scan on p1_c3_c1
3274 TID Cond: (ctid = '(1,1)'::tid)
3275 Filter: ((id >= 50) AND (id <= 51))
3276 -> Tid Scan on p1_c3_c2
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 -----------------------------------------------------------------------
3295 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3296 -> Seq Scan on p1_c1
3297 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3298 -> Seq Scan on p1_c1_c1
3299 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3300 -> Seq Scan on p1_c1_c2
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
3317 Index Cond: ((id >= 50) AND (id <= 51))
3318 Filter: (ctid = '(1,1)'::tid)
3319 -> Index Scan using p1_c1_pkey on p1_c1
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
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
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
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
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
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
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 ---------------------------------------------
3377 TID Cond: (ctid = '(1,1)'::tid)
3378 Filter: ((id >= 50) AND (id <= 51))
3379 -> Tid Scan on p1_c1
3380 TID Cond: (ctid = '(1,1)'::tid)
3381 Filter: ((id >= 50) AND (id <= 51))
3382 -> Tid Scan on p1_c1_c1
3383 TID Cond: (ctid = '(1,1)'::tid)
3384 Filter: ((id >= 50) AND (id <= 51))
3385 -> Tid Scan on p1_c1_c2
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)
3400 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3401 -> Seq Scan on p1_c1
3402 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3403 -> Seq Scan on p1_c2
3404 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3405 -> Seq Scan on p1_c3
3406 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3407 -> Seq Scan on p1_c4
3408 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3409 -> Seq Scan on p1_c1_c1
3410 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3411 -> Seq Scan on p1_c1_c2
3412 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3413 -> Seq Scan on p1_c3_c1
3414 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3415 -> Seq Scan on p1_c3_c2
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)
3431 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3432 -> Seq Scan on p1_c1
3433 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3434 -> Seq Scan on p1_c1_c1
3435 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3436 -> Seq Scan on p1_c1_c2
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)
3460 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3461 -> Seq Scan on p1_c1
3462 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3463 -> Seq Scan on p1_c2
3464 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3465 -> Seq Scan on p1_c3
3466 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3467 -> Seq Scan on p1_c4
3468 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3469 -> Seq Scan on p1_c1_c1
3470 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3471 -> Seq Scan on p1_c1_c2
3472 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3473 -> Seq Scan on p1_c3_c1
3474 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3475 -> Seq Scan on p1_c3_c2
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
3497 Index Cond: ((id >= 50) AND (id <= 51))
3498 Filter: (ctid = '(1,1)'::tid)
3499 -> Index Scan using p1_c1_pkey on p1_c1
3500 Index Cond: ((id >= 50) AND (id <= 51))
3501 Filter: (ctid = '(1,1)'::tid)
3502 -> Index Scan using p1_c2_pkey on p1_c2
3503 Index Cond: ((id >= 50) AND (id <= 51))
3504 Filter: (ctid = '(1,1)'::tid)
3505 -> Index Scan using p1_c3_pkey on p1_c3
3506 Index Cond: ((id >= 50) AND (id <= 51))
3507 Filter: (ctid = '(1,1)'::tid)
3508 -> Index Scan using p1_c4_pkey on p1_c4
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
3609 TID Cond: (ctid = '(1,1)'::tid)
3610 Filter: ((id >= 50) AND (id <= 51))
3611 -> Tid Scan on p1_c1
3612 TID Cond: (ctid = '(1,1)'::tid)
3613 Filter: ((id >= 50) AND (id <= 51))
3614 -> Tid Scan on p1_c2
3615 TID Cond: (ctid = '(1,1)'::tid)
3616 Filter: ((id >= 50) AND (id <= 51))
3617 -> Tid Scan on p1_c3
3618 TID Cond: (ctid = '(1,1)'::tid)
3619 Filter: ((id >= 50) AND (id <= 51))
3620 -> Tid Scan on p1_c4
3621 TID Cond: (ctid = '(1,1)'::tid)
3622 Filter: ((id >= 50) AND (id <= 51))
3623 -> Tid Scan on p1_c1_c1
3624 TID Cond: (ctid = '(1,1)'::tid)
3625 Filter: ((id >= 50) AND (id <= 51))
3626 -> Tid Scan on p1_c1_c2
3627 TID Cond: (ctid = '(1,1)'::tid)
3628 Filter: ((id >= 50) AND (id <= 51))
3629 -> Tid Scan on p1_c3_c1
3630 TID Cond: (ctid = '(1,1)'::tid)
3631 Filter: ((id >= 50) AND (id <= 51))
3632 -> Tid Scan on p1_c3_c2
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)
3654 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3655 -> Seq Scan on p1_c1
3656 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3657 -> Seq Scan on p1_c2
3658 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3659 -> Seq Scan on p1_c3
3660 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3661 -> Seq Scan on p1_c4
3662 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3663 -> Seq Scan on p1_c1_c1
3664 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3665 -> Seq Scan on p1_c1_c2
3666 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3667 -> Seq Scan on p1_c3_c1
3668 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3669 -> Seq Scan on p1_c3_c2
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)
3693 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3694 -> Seq Scan on p1_c1
3695 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3696 -> Seq Scan on p1_c2
3697 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3698 -> Seq Scan on p1_c3
3699 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3700 -> Seq Scan on p1_c4
3701 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3702 -> Seq Scan on p1_c1_c1
3703 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3704 -> Seq Scan on p1_c1_c2
3705 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3706 -> Seq Scan on p1_c3_c1
3707 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3708 -> Seq Scan on p1_c3_c2
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)
3729 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3730 -> Seq Scan on p1_c1
3731 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3732 -> Seq Scan on p1_c2
3733 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3734 -> Seq Scan on p1_c3
3735 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3736 -> Seq Scan on p1_c4
3737 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3738 -> Seq Scan on p1_c1_c1
3739 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3740 -> Seq Scan on p1_c1_c2
3741 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3742 -> Seq Scan on p1_c3_c1
3743 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3744 -> Seq Scan on p1_c3_c2
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)
3769 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3770 -> Seq Scan on p1_c1
3771 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3772 -> Seq Scan on p1_c1_c1
3773 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3774 -> Seq Scan on p1_c1_c2
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
3796 Index Cond: ((id >= 50) AND (id <= 51))
3797 Filter: (ctid = '(1,1)'::tid)
3798 -> Index Scan using p1_c1_pkey on p1_c1
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
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
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
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
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
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
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)
3868 TID Cond: (ctid = '(1,1)'::tid)
3869 Filter: ((id >= 50) AND (id <= 51))
3870 -> Tid Scan on p1_c1
3871 TID Cond: (ctid = '(1,1)'::tid)
3872 Filter: ((id >= 50) AND (id <= 51))
3873 -> Tid Scan on p1_c1_c1
3874 TID Cond: (ctid = '(1,1)'::tid)
3875 Filter: ((id >= 50) AND (id <= 51))
3876 -> Tid Scan on p1_c1_c2
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)
3901 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3902 -> Seq Scan on p1_c1
3903 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3904 -> Seq Scan on p1_c1_c1
3905 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3906 -> Seq Scan on p1_c1_c2
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)
3927 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3928 -> Seq Scan on p1_c1
3929 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3930 -> Seq Scan on p1_c1_c1
3931 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3932 -> Seq Scan on p1_c1_c2
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)
3956 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3957 -> Seq Scan on p1_c1
3958 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3959 -> Seq Scan on p1_c1_c1
3960 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3961 -> Seq Scan on p1_c1_c2
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 ------------------------------------------------------------------------------
4527 Merge Cond: (t1_5.id = t3_5.id)
4529 Merge Cond: (t1_5.id = t2_5.id)
4530 -> Index Only Scan using t1_pkey on t1 t1_5
4531 -> Index Only Scan using t2_pkey on t2 t2_5
4534 -> Seq Scan on t3 t3_5
4535 InitPlan 2 (returns $1)
4538 Merge Cond: (t1_2.id = t3_2.id)
4540 Merge Cond: (t1_2.id = t2_2.id)
4541 -> Index Only Scan using t1_pkey on t1 t1_2
4542 -> Index Only Scan using t2_pkey on t2 t2_2
4545 -> Seq Scan on t3 t3_2
4546 InitPlan 3 (returns $2)
4549 Merge Cond: (t1_4.id = t3_4.id)
4551 Merge Cond: (t1_4.id = t2_4.id)
4552 -> Index Only Scan using t1_pkey on t1 t1_4
4553 -> Index Only Scan using t2_pkey on t2 t2_4
4556 -> Seq Scan on t3 t3_4
4562 -> Index Only Scan using t1_pkey on t1 t1_1
4563 Index Cond: (id = $2)
4564 -> Index Only Scan using t2_pkey on t2 t2_1
4565 Index Cond: (id = $2)
4566 -> Seq Scan on t3 t3_1
4568 -> Index Only Scan using t1_pkey on t1 t1_3
4569 Index Cond: (id = $2)
4570 -> Index Only Scan using t2_pkey on t2 t2_3
4571 Index Cond: (id = $2)
4572 -> Seq Scan on t3 t3_3
4578 /*+HashJoin(t1_1 t3_1)MergeJoin(t1_3 t3_3)NestLoop(t1_2 t2_2)NestLoop(t1_4 t2_4)NestLoop(t1_5 t2_5)*/
4579 EXPLAIN (COSTS false)
4581 SELECT max(t1_5.id) FROM t1 t1_5, t2 t2_5, t3 t3_5 WHERE t1_5.id = t2_5.id AND t2_5.id = t3_5.id
4584 SELECT max(t1_2.id) FROM t1 t1_2, t2 t2_2, t3 t3_2 WHERE t1_2.id = t2_2.id AND t2_2.id = t3_2.id
4585 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4586 SELECT t1_3.id FROM t1 t1_3, t2 t2_3, t3 t3_3 WHERE t1_3.id = t2_3.id AND t2_3.id = t3_3.id
4587 ) v1_1(id), c1_1 WHERE t1_1.id = t2_1.id AND t2_1.id = t3_1.id AND t2_1.id = v1_1.id AND v1_1.id = c1_1.id AND t1_1.id = (
4588 SELECT max(t1_4.id) FROM t1 t1_4, t2 t2_4, t3 t3_4 WHERE t1_4.id = t2_4.id AND t2_4.id = t3_4.id
4594 MergeJoin(t1_3 t3_3)
4602 ------------------------------------------------------------------------------
4607 Merge Cond: (t1_5.id = t3_5.id)
4609 -> Index Only Scan using t2_pkey on t2 t2_5
4610 -> Index Only Scan using t1_pkey on t1 t1_5
4611 Index Cond: (id = t2_5.id)
4614 -> Seq Scan on t3 t3_5
4615 InitPlan 2 (returns $3)
4618 Merge Cond: (t1_2.id = t3_2.id)
4620 -> Index Only Scan using t2_pkey on t2 t2_2
4621 -> Index Only Scan using t1_pkey on t1 t1_2
4622 Index Cond: (id = t2_2.id)
4625 -> Seq Scan on t3 t3_2
4626 InitPlan 3 (returns $5)
4629 Merge Cond: (t1_4.id = t3_4.id)
4631 -> Index Only Scan using t2_pkey on t2 t2_4
4632 -> Index Only Scan using t1_pkey on t1 t1_4
4633 Index Cond: (id = t2_4.id)
4636 -> Seq Scan on t3 t3_4
4642 -> Index Only Scan using t1_pkey on t1 t1_1
4643 Index Cond: (id = $5)
4644 -> Index Only Scan using t2_pkey on t2 t2_1
4645 Index Cond: (id = $5)
4646 -> Seq Scan on t3 t3_1
4648 -> Index Only Scan using t1_pkey on t1 t1_3
4649 Index Cond: (id = $5)
4650 -> Index Only Scan using t2_pkey on t2 t2_3
4651 Index Cond: (id = $5)
4652 -> Seq Scan on t3 t3_3
4658 /*+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)*/
4659 EXPLAIN (COSTS false)
4661 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
4664 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
4665 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4666 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
4667 ) 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 = (
4668 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
4674 MergeJoin(t1_3 t3_3)
4678 Leading(a t1_1 t1_2 t1_4 t1_5)
4683 ------------------------------------------------------------------------------
4688 Merge Cond: (t1_5.id = t3_5.id)
4690 -> Index Only Scan using t2_pkey on t2 t2_5
4691 -> Index Only Scan using t1_pkey on t1 t1_5
4692 Index Cond: (id = t2_5.id)
4695 -> Seq Scan on t3 t3_5
4696 InitPlan 2 (returns $3)
4699 Merge Cond: (t1_2.id = t3_2.id)
4701 -> Index Only Scan using t2_pkey on t2 t2_2
4702 -> Index Only Scan using t1_pkey on t1 t1_2
4703 Index Cond: (id = t2_2.id)
4706 -> Seq Scan on t3 t3_2
4707 InitPlan 3 (returns $5)
4710 Merge Cond: (t1_4.id = t3_4.id)
4712 -> Index Only Scan using t2_pkey on t2 t2_4
4713 -> Index Only Scan using t1_pkey on t1 t1_4
4714 Index Cond: (id = t2_4.id)
4717 -> Seq Scan on t3 t3_4
4723 -> Index Only Scan using t1_pkey on t1 t1_1
4724 Index Cond: (id = $5)
4725 -> Index Only Scan using t2_pkey on t2 t2_1
4726 Index Cond: (id = $5)
4727 -> Seq Scan on t3 t3_1
4729 -> Index Only Scan using t1_pkey on t1 t1_3
4730 Index Cond: (id = $5)
4731 -> Index Only Scan using t2_pkey on t2 t2_3
4732 Index Cond: (id = $5)
4733 -> Seq Scan on t3 t3_3
4739 /*+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)*/
4740 EXPLAIN (COSTS false)
4742 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
4745 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
4746 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4747 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
4748 ) 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 = (
4749 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
4755 MergeJoin(t1_3 t3_3)
4759 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)
4764 ------------------------------------------------------------------------------
4769 Merge Cond: (t1_5.id = t3_5.id)
4771 -> Index Only Scan using t2_pkey on t2 t2_5
4772 -> Index Only Scan using t1_pkey on t1 t1_5
4773 Index Cond: (id = t2_5.id)
4776 -> Seq Scan on t3 t3_5
4777 InitPlan 2 (returns $3)
4780 Merge Cond: (t1_2.id = t3_2.id)
4782 -> Index Only Scan using t2_pkey on t2 t2_2
4783 -> Index Only Scan using t1_pkey on t1 t1_2
4784 Index Cond: (id = t2_2.id)
4787 -> Seq Scan on t3 t3_2
4788 InitPlan 3 (returns $5)
4791 Merge Cond: (t1_4.id = t3_4.id)
4793 -> Index Only Scan using t2_pkey on t2 t2_4
4794 -> Index Only Scan using t1_pkey on t1 t1_4
4795 Index Cond: (id = t2_4.id)
4798 -> Seq Scan on t3 t3_4
4804 -> Index Only Scan using t1_pkey on t1 t1_1
4805 Index Cond: (id = $5)
4806 -> Index Only Scan using t2_pkey on t2 t2_1
4807 Index Cond: (id = $5)
4808 -> Seq Scan on t3 t3_1
4810 -> Index Only Scan using t1_pkey on t1 t1_3
4811 Index Cond: (id = $5)
4812 -> Index Only Scan using t2_pkey on t2 t2_3
4813 Index Cond: (id = $5)
4814 -> Seq Scan on t3 t3_3
4820 /*+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)*/
4821 EXPLAIN (COSTS false)
4823 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
4826 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
4827 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4828 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
4829 ) 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 = (
4830 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
4834 Leading(t3_5 t2_5 t1_5)
4835 Leading(t3_2 t2_2 t1_2)
4836 Leading(t3_4 t2_4 t1_4)
4837 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
4841 MergeJoin(t1_3 t3_3)
4848 ------------------------------------------------------------------------
4853 Merge Cond: (t2_5.id = t1_5.id)
4855 Merge Cond: (t2_5.id = t3_5.id)
4856 -> Index Only Scan using t2_pkey on t2 t2_5
4859 -> Seq Scan on t3 t3_5
4860 -> Index Only Scan using t1_pkey on t1 t1_5
4861 InitPlan 2 (returns $1)
4864 Merge Cond: (t2_2.id = t1_2.id)
4866 Merge Cond: (t2_2.id = t3_2.id)
4867 -> Index Only Scan using t2_pkey on t2 t2_2
4870 -> Seq Scan on t3 t3_2
4871 -> Index Only Scan using t1_pkey on t1 t1_2
4872 InitPlan 3 (returns $2)
4875 Merge Cond: (t2_4.id = t1_4.id)
4877 Merge Cond: (t2_4.id = t3_4.id)
4878 -> Index Only Scan using t2_pkey on t2 t2_4
4881 -> Seq Scan on t3 t3_4
4882 -> Index Only Scan using t1_pkey on t1 t1_4
4888 -> Seq Scan on t3 t3_3
4892 -> Index Only Scan using t2_pkey on t2 t2_3
4893 Index Cond: (id = $2)
4894 -> Index Only Scan using t1_pkey on t1 t1_3
4895 Index Cond: (id = $2)
4896 -> Seq Scan on t3 t3_1
4898 -> Index Only Scan using t2_pkey on t2 t2_1
4899 Index Cond: (id = $2)
4900 -> Index Only Scan using t1_pkey on t1 t1_1
4901 Index Cond: (id = $2)
4904 SET from_collapse_limit TO 1;
4905 EXPLAIN (COSTS false)
4907 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
4910 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
4911 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4912 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
4913 ) 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 = (
4914 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
4917 --------------------------------------------------------------------
4922 Merge Cond: (t1_5.id = t3_5.id)
4924 Merge Cond: (t1_5.id = t2_5.id)
4925 -> Index Only Scan using t1_pkey on t1 t1_5
4926 -> Index Only Scan using t2_pkey on t2 t2_5
4929 -> Seq Scan on t3 t3_5
4930 InitPlan 2 (returns $1)
4933 Merge Cond: (t1_2.id = t3_2.id)
4935 Merge Cond: (t1_2.id = t2_2.id)
4936 -> Index Only Scan using t1_pkey on t1 t1_2
4937 -> Index Only Scan using t2_pkey on t2 t2_2
4940 -> Seq Scan on t3 t3_2
4941 InitPlan 3 (returns $2)
4944 Merge Cond: (t1_4.id = t3_4.id)
4946 Merge Cond: (t1_4.id = t2_4.id)
4947 -> Index Only Scan using t1_pkey on t1 t1_4
4948 -> Index Only Scan using t2_pkey on t2 t2_4
4951 -> Seq Scan on t3 t3_4
4955 -> Index Only Scan using t1_pkey on t1 t1_1
4956 Index Cond: (id = $2)
4957 -> Index Only Scan using t2_pkey on t2 t2_1
4958 Index Cond: (id = $2)
4959 -> Seq Scan on t3 t3_1
4963 -> Index Only Scan using t1_pkey on t1 t1_3
4964 Index Cond: (id = $2)
4965 -> Index Only Scan using t2_pkey on t2 t2_3
4966 Index Cond: (id = $2)
4967 -> Seq Scan on t3 t3_3
4973 /*+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)*/
4974 EXPLAIN (COSTS false)
4976 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
4979 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
4980 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4981 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
4982 ) 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 = (
4983 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
4989 MergeJoin(t1_3 t3_3)
4997 --------------------------------------------------------------------
5002 Merge Cond: (t1_5.id = t3_5.id)
5004 -> Index Only Scan using t2_pkey on t2 t2_5
5005 -> Index Only Scan using t1_pkey on t1 t1_5
5006 Index Cond: (id = t2_5.id)
5009 -> Seq Scan on t3 t3_5
5010 InitPlan 2 (returns $3)
5013 Merge Cond: (t1_2.id = t3_2.id)
5015 -> Index Only Scan using t2_pkey on t2 t2_2
5016 -> Index Only Scan using t1_pkey on t1 t1_2
5017 Index Cond: (id = t2_2.id)
5020 -> Seq Scan on t3 t3_2
5021 InitPlan 3 (returns $5)
5024 Merge Cond: (t1_4.id = t3_4.id)
5026 -> Index Only Scan using t2_pkey on t2 t2_4
5027 -> Index Only Scan using t1_pkey on t1 t1_4
5028 Index Cond: (id = t2_4.id)
5031 -> Seq Scan on t3 t3_4
5035 -> Index Only Scan using t1_pkey on t1 t1_1
5036 Index Cond: (id = $5)
5037 -> Index Only Scan using t2_pkey on t2 t2_1
5038 Index Cond: (id = $5)
5039 -> Seq Scan on t3 t3_1
5043 -> Index Only Scan using t1_pkey on t1 t1_3
5044 Index Cond: (id = $5)
5045 -> Index Only Scan using t2_pkey on t2 t2_3
5046 Index Cond: (id = $5)
5047 -> Seq Scan on t3 t3_3
5053 /*+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)*/
5054 EXPLAIN (COSTS false)
5056 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
5059 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
5060 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5061 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
5062 ) 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 = (
5063 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
5069 MergeJoin(t1_3 t3_3)
5073 Leading(a t1_1 t1_2 t1_4 t1_5)
5078 --------------------------------------------------------------------
5083 Merge Cond: (t1_5.id = t3_5.id)
5085 -> Index Only Scan using t2_pkey on t2 t2_5
5086 -> Index Only Scan using t1_pkey on t1 t1_5
5087 Index Cond: (id = t2_5.id)
5090 -> Seq Scan on t3 t3_5
5091 InitPlan 2 (returns $3)
5094 Merge Cond: (t1_2.id = t3_2.id)
5096 -> Index Only Scan using t2_pkey on t2 t2_2
5097 -> Index Only Scan using t1_pkey on t1 t1_2
5098 Index Cond: (id = t2_2.id)
5101 -> Seq Scan on t3 t3_2
5102 InitPlan 3 (returns $5)
5105 Merge Cond: (t1_4.id = t3_4.id)
5107 -> Index Only Scan using t2_pkey on t2 t2_4
5108 -> Index Only Scan using t1_pkey on t1 t1_4
5109 Index Cond: (id = t2_4.id)
5112 -> Seq Scan on t3 t3_4
5116 -> Index Only Scan using t1_pkey on t1 t1_1
5117 Index Cond: (id = $5)
5118 -> Index Only Scan using t2_pkey on t2 t2_1
5119 Index Cond: (id = $5)
5120 -> Seq Scan on t3 t3_1
5124 -> Index Only Scan using t1_pkey on t1 t1_3
5125 Index Cond: (id = $5)
5126 -> Index Only Scan using t2_pkey on t2 t2_3
5127 Index Cond: (id = $5)
5128 -> Seq Scan on t3 t3_3
5134 /*+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)*/
5135 EXPLAIN (COSTS false)
5137 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
5140 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
5141 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5142 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
5143 ) 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 = (
5144 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
5150 MergeJoin(t1_3 t3_3)
5154 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)
5159 --------------------------------------------------------------------
5164 Merge Cond: (t1_5.id = t3_5.id)
5166 -> Index Only Scan using t2_pkey on t2 t2_5
5167 -> Index Only Scan using t1_pkey on t1 t1_5
5168 Index Cond: (id = t2_5.id)
5171 -> Seq Scan on t3 t3_5
5172 InitPlan 2 (returns $3)
5175 Merge Cond: (t1_2.id = t3_2.id)
5177 -> Index Only Scan using t2_pkey on t2 t2_2
5178 -> Index Only Scan using t1_pkey on t1 t1_2
5179 Index Cond: (id = t2_2.id)
5182 -> Seq Scan on t3 t3_2
5183 InitPlan 3 (returns $5)
5186 Merge Cond: (t1_4.id = t3_4.id)
5188 -> Index Only Scan using t2_pkey on t2 t2_4
5189 -> Index Only Scan using t1_pkey on t1 t1_4
5190 Index Cond: (id = t2_4.id)
5193 -> Seq Scan on t3 t3_4
5197 -> Index Only Scan using t1_pkey on t1 t1_1
5198 Index Cond: (id = $5)
5199 -> Index Only Scan using t2_pkey on t2 t2_1
5200 Index Cond: (id = $5)
5201 -> Seq Scan on t3 t3_1
5205 -> Index Only Scan using t1_pkey on t1 t1_3
5206 Index Cond: (id = $5)
5207 -> Index Only Scan using t2_pkey on t2 t2_3
5208 Index Cond: (id = $5)
5209 -> Seq Scan on t3 t3_3
5215 /*+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)*/
5216 EXPLAIN (COSTS false)
5218 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
5221 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
5222 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5223 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
5224 ) 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 = (
5225 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
5229 MergeJoin(t1_3 t3_3)
5230 Leading(t3_5 t2_5 t1_5)
5231 Leading(t3_2 t2_2 t1_2)
5232 Leading(t3_4 t2_4 t1_4)
5233 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
5243 ------------------------------------------------------------------------------
5248 Merge Cond: (t2_5.id = t1_5.id)
5250 Merge Cond: (t2_5.id = t3_5.id)
5251 -> Index Only Scan using t2_pkey on t2 t2_5
5254 -> Seq Scan on t3 t3_5
5255 -> Index Only Scan using t1_pkey on t1 t1_5
5256 InitPlan 2 (returns $1)
5259 Merge Cond: (t2_2.id = t1_2.id)
5261 Merge Cond: (t2_2.id = t3_2.id)
5262 -> Index Only Scan using t2_pkey on t2 t2_2
5265 -> Seq Scan on t3 t3_2
5266 -> Index Only Scan using t1_pkey on t1 t1_2
5267 InitPlan 3 (returns $2)
5270 Merge Cond: (t2_4.id = t1_4.id)
5272 Merge Cond: (t2_4.id = t3_4.id)
5273 -> Index Only Scan using t2_pkey on t2 t2_4
5276 -> Seq Scan on t3 t3_4
5277 -> Index Only Scan using t1_pkey on t1 t1_4
5283 -> Index Only Scan using t1_pkey on t1 t1_3
5284 Index Cond: (id = $2)
5285 -> Index Only Scan using t2_pkey on t2 t2_3
5286 Index Cond: (id = $2)
5287 -> Seq Scan on t3 t3_3
5291 -> Seq Scan on t3 t3_1
5293 -> Index Only Scan using t2_pkey on t2 t2_1
5294 Index Cond: (id = $2)
5295 -> Index Only Scan using t1_pkey on t1 t1_1
5296 Index Cond: (id = $2)
5300 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5302 -------------------------------------------------
5304 Merge Cond: (t1.id = t2.id)
5306 Merge Cond: (t1.id = t1_1.id)
5307 -> Index Scan using t1_pkey on t1
5308 -> Index Scan using t1_pkey on t1 t1_1
5309 -> Index Scan using t2_pkey on t2
5312 /*+NestLoop(t1 t2)*/
5313 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5314 INFO: pg_hint_plan: hint syntax error at or near "NestLoop(t1 t2)"
5315 DETAIL: Relation name "t1" is ambiguous.
5324 -------------------------------------------------
5326 Merge Cond: (t1.id = t2.id)
5328 Merge Cond: (t1.id = t1_1.id)
5329 -> Index Scan using t1_pkey on t1
5330 -> Index Scan using t1_pkey on t1 t1_1
5331 -> Index Scan using t2_pkey on t2
5334 /*+Leading(t1 t2 t1)*/
5335 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5336 INFO: pg_hint_plan: hint syntax error at or near "Leading(t1 t2 t1)"
5337 DETAIL: Relation name "t1" is ambiguous.
5346 -------------------------------------------------
5348 Merge Cond: (t1.id = t2.id)
5350 Merge Cond: (t1.id = t1_1.id)
5351 -> Index Scan using t1_pkey on t1
5352 -> Index Scan using t1_pkey on t1 t1_1
5353 -> Index Scan using t2_pkey on t2
5356 -- identifier length test
5357 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5359 --------------------------------------------------------------------------------------------------------------
5361 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5363 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id)
5364 -> Index Scan using t1_pkey on t1 "123456789012345678901234567890123456789012345678901234567890123"
5365 -> Index Scan using t2_pkey on t2
5372 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5373 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5374 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5375 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5377 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5378 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5381 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5382 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5383 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5387 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5390 ----------------------------------------------------------------------------------------------------
5392 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5394 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5395 -> Index Scan using t2_pkey on t2
5397 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5398 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5405 Leading(1234567890123456789012345678901234567890123456789012345678901234 t2 t3)
5406 SeqScan(1234567890123456789012345678901234567890123456789012345678901234)
5407 MergeJoin(1234567890123456789012345678901234567890123456789012345678901234 t2)
5408 Set(1234567890123456789012345678901234567890123456789012345678901234 1)
5409 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5411 EXPLAIN (COSTS false) SELECT * FROM t1 "1234567890123456789012345678901234567890123456789012345678901234" JOIN t2 ON ("1234567890123456789012345678901234567890123456789012345678901234".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5412 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5413 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5414 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5415 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5416 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5417 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5418 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5421 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5422 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5423 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5424 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5428 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5431 ----------------------------------------------------------------------------------------------------
5433 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5435 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5436 -> Index Scan using t2_pkey on t2
5438 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5439 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5445 SET "123456789012345678901234567890123456789012345678901234567890123" TO 1;
5446 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5447 SET "1234567890123456789012345678901234567890123456789012345678901234" TO 1;
5448 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5449 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5450 SET cursor_tuple_fraction TO 1234567890123456789012345678901234567890123456789012345678901234;
5451 ERROR: 1.23457e+63 is outside the valid range for parameter "cursor_tuple_fraction" (0 .. 1)
5453 /*+ Set(enable_seqscan 100)Set(seq_page_cost on)*/
5454 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
5455 INFO: parameter "enable_seqscan" requires a Boolean value
5456 INFO: parameter "seq_page_cost" requires a numeric value
5462 Set(enable_seqscan 100)
5463 Set(seq_page_cost on)
5466 --------------------------------------
5468 Merge Cond: (t1.id = t2.id)
5469 -> Index Scan using t1_pkey on t1
5470 -> Index Scan using t2_pkey on t2
5473 -- debug log of candidate index to use IndexScan
5474 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5476 ----------------------------------------------------------------------------------------
5477 Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
5478 Index Cond: (id = 1)
5481 /*+IndexScan(t5 t5_id2)*/
5482 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5483 LOG: available indexes for IndexScan(t5): t5_id2
5486 IndexScan(t5 t5_id2)
5492 -------------------------------
5493 Index Scan using t5_id2 on t5
5494 Index Cond: (id = 1)
5497 /*+IndexScan(t5 no_exist)*/
5498 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5499 LOG: available indexes for IndexScan(t5):
5502 IndexScan(t5 no_exist)
5508 --------------------
5513 /*+IndexScan(t5 t5_id1 t5_id2)*/
5514 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5515 LOG: available indexes for IndexScan(t5): t5_id2 t5_id1
5518 IndexScan(t5 t5_id1 t5_id2)
5524 -------------------------------
5525 Index Scan using t5_id2 on t5
5526 Index Cond: (id = 1)
5529 /*+IndexScan(t5 no_exist t5_id2)*/
5530 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5531 LOG: available indexes for IndexScan(t5): t5_id2
5534 IndexScan(t5 no_exist t5_id2)
5540 -------------------------------
5541 Index Scan using t5_id2 on t5
5542 Index Cond: (id = 1)
5545 /*+IndexScan(t5 no_exist5 no_exist2)*/
5546 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5547 LOG: available indexes for IndexScan(t5):
5550 IndexScan(t5 no_exist5 no_exist2)
5556 --------------------
5562 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5564 --------------------------------------------------------
5566 Hash Cond: (t3.val = t2.val)
5570 Hash Cond: (t2.id = t1.id)
5573 -> Index Scan using t1_pkey on t1
5574 Index Cond: (id < 10)
5578 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5579 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1))"
5580 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5589 --------------------------------------------------------
5591 Hash Cond: (t3.val = t2.val)
5595 Hash Cond: (t2.id = t1.id)
5598 -> Index Scan using t1_pkey on t1
5599 Index Cond: (id < 10)
5602 /*+Leading((t1 t2))*/
5603 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5612 --------------------------------------------
5614 Join Filter: (t2.val = t3.val)
5616 Hash Cond: (t1.id = t2.id)
5617 -> Index Scan using t1_pkey on t1
5618 Index Cond: (id < 10)
5624 /*+Leading((t1 t2 t3))*/
5625 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5626 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1 t2 t3))"
5627 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5636 --------------------------------------------------------
5638 Hash Cond: (t3.val = t2.val)
5642 Hash Cond: (t2.id = t1.id)
5645 -> Index Scan using t1_pkey on t1
5646 Index Cond: (id < 10)
5649 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5651 --------------------------------------------
5653 Hash Cond: (t2.id = t1.id)
5656 -> Index Scan using t1_pkey on t1
5657 Index Cond: (id < 10)
5660 /*+Leading((t1 t2))*/
5661 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5670 --------------------------------------
5672 Hash Cond: (t1.id = t2.id)
5673 -> Index Scan using t1_pkey on t1
5674 Index Cond: (id < 10)
5679 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5681 --------------------------------------------------------
5683 Hash Cond: (t3.val = t2.val)
5687 Hash Cond: (t2.id = t1.id)
5690 -> Index Scan using t1_pkey on t1
5691 Index Cond: (id < 10)
5694 /*+Leading(((t1 t2) t3))*/
5695 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5698 Leading(((t1 t2) t3))
5704 --------------------------------------------
5706 Join Filter: (t2.val = t3.val)
5708 Hash Cond: (t1.id = t2.id)
5709 -> Index Scan using t1_pkey on t1
5710 Index Cond: (id < 10)
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;
5718 --------------------------------------------------------
5721 Merge Cond: (t3.id = t4.id)
5723 Join Filter: (t1.val = t3.val)
5724 -> Index Scan using t3_pkey on t3
5726 -> Index Scan using t1_pkey on t1
5727 Index Cond: (id < 10)
5731 -> Index Scan using t2_pkey on t2
5732 Index Cond: (id = t1.id)
5735 /*+Leading((((t1 t2) t3) t4))*/
5736 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;
5739 Leading((((t1 t2) t3) t4))
5745 --------------------------------------------------
5748 Join Filter: (t1.val = t3.val)
5750 Hash Cond: (t1.id = t2.id)
5751 -> Index Scan using t1_pkey on t1
5752 Index Cond: (id < 10)
5756 -> Index Scan using t4_pkey on t4
5757 Index Cond: (id = t3.id)
5760 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5762 --------------------------------------------------------
5764 Hash Cond: (t3.val = t2.val)
5768 Hash Cond: (t2.id = t1.id)
5771 -> Index Scan using t1_pkey on t1
5772 Index Cond: (id < 10)
5775 /*+Leading(((t1 t2) t3))*/
5776 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5779 Leading(((t1 t2) t3))
5785 --------------------------------------------
5787 Join Filter: (t2.val = t3.val)
5789 Hash Cond: (t1.id = t2.id)
5790 -> Index Scan using t1_pkey on t1
5791 Index Cond: (id < 10)
5797 /*+Leading((t1 (t2 t3)))*/
5798 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5801 Leading((t1 (t2 t3)))
5807 --------------------------------------------
5809 Hash Cond: (t1.id = t2.id)
5810 -> Index Scan using t1_pkey on t1
5811 Index Cond: (id < 10)
5814 Hash Cond: (t2.val = t3.val)
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;
5822 --------------------------------------------------------
5825 Merge Cond: (t3.id = t4.id)
5827 Join Filter: (t1.val = t3.val)
5828 -> Index Scan using t3_pkey on t3
5830 -> Index Scan using t1_pkey on t1
5831 Index Cond: (id < 10)
5835 -> Index Scan using t2_pkey on t2
5836 Index Cond: (id = t1.id)
5839 /*+Leading(((t1 t2) (t3 t4)))*/
5840 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;
5843 Leading(((t1 t2) (t3 t4)))
5849 --------------------------------------------
5851 Join Filter: (t1.val = t3.val)
5853 Hash Cond: (t1.id = t2.id)
5854 -> Index Scan using t1_pkey on t1
5855 Index Cond: (id < 10)
5859 Merge Cond: (t3.id = t4.id)
5860 -> Index Scan using t3_pkey on t3
5866 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);
5868 --------------------------------------------------------------------
5870 Hash Cond: (t2.val = t3.val)
5871 InitPlan 1 (returns $1)
5876 -> Index Scan using t2_val on t2 t2_2
5877 Index Cond: (val > 100)
5878 -> Index Only Scan using t1_pkey on t1 t1_2
5879 Index Cond: (id = t2_2.id)
5881 Merge Cond: (t1.id = t2.id)
5882 -> Index Scan using t1_pkey on t1
5883 Index Cond: (id < $1)
5884 -> Index Scan using t2_pkey on t2
5889 /*+Leading(((t1 t2) t3)) Leading(((t3 t1) t2))*/
5890 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);
5891 INFO: pg_hint_plan: hint syntax error at or near "Leading(((t1 t2) t3)) Leading(((t3 t1) t2))"
5892 DETAIL: Conflict leading hint.
5895 Leading(((t3 t1) t2))
5898 Leading(((t1 t2) t3))
5902 --------------------------------------------------------------------
5904 Hash Cond: (t1.id = t2.id)
5905 InitPlan 1 (returns $1)
5910 -> Index Scan using t2_val on t2 t2_2
5911 Index Cond: (val > 100)
5912 -> Index Only Scan using t1_pkey on t1 t1_2
5913 Index Cond: (id = t2_2.id)
5915 Hash Cond: (t3.val = t1.val)
5918 -> Index Scan using t1_pkey on t1
5919 Index Cond: (id < $1)
5924 /*+Leading(((t1 t2) t3)) Leading((t1_2 t2_2))*/
5925 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);
5928 Leading(((t1 t2) t3))
5929 Leading((t1_2 t2_2))
5935 --------------------------------------------------------------
5937 Hash Cond: (t2.val = t3.val)
5938 InitPlan 1 (returns $0)
5941 Merge Cond: (t1_2.id = t2_2.id)
5942 -> Index Only Scan using t1_pkey on t1 t1_2
5945 -> Index Scan using t2_val on t2 t2_2
5946 Index Cond: (val > 100)
5948 Merge Cond: (t1.id = t2.id)
5949 -> Index Scan using t1_pkey on t1
5950 Index Cond: (id < $0)
5951 -> Index Scan using t2_pkey on t2
5956 /*+Leading(((((t1 t2) t3) t1_2) t2_2))*/
5957 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);
5961 Leading(((((t1 t2) t3) t1_2) t2_2))
5966 --------------------------------------------------------------------
5968 Hash Cond: (t2.val = t3.val)
5969 InitPlan 1 (returns $1)
5974 -> Index Scan using t2_val on t2 t2_2
5975 Index Cond: (val > 100)
5976 -> Index Only Scan using t1_pkey on t1 t1_2
5977 Index Cond: (id = t2_2.id)
5979 Merge Cond: (t1.id = t2.id)
5980 -> Index Scan using t1_pkey on t1
5981 Index Cond: (id < $1)
5982 -> Index Scan using t2_pkey on t2
5987 -- Specified outer/inner leading hint and join method hint at the same time
5988 /*+Leading(((t1 t2) t3))*/
5989 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5992 Leading(((t1 t2) t3))
5998 --------------------------------------------
6000 Join Filter: (t2.val = t3.val)
6002 Hash Cond: (t1.id = t2.id)
6003 -> Index Scan using t1_pkey on t1
6004 Index Cond: (id < 10)
6010 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2)*/
6011 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6015 Leading(((t1 t2) t3))
6021 --------------------------------------------
6023 Join Filter: (t2.val = t3.val)
6025 Merge Cond: (t1.id = t2.id)
6026 -> Index Scan using t1_pkey on t1
6027 Index Cond: (id < 10)
6028 -> Index Scan using t2_pkey on t2
6032 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3)*/
6033 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6037 Leading(((t1 t2) t3))
6043 --------------------------------------------------
6045 Merge Cond: (t2.val = t3.val)
6049 Hash Cond: (t1.id = t2.id)
6050 -> Index Scan using t1_pkey on t1
6051 Index Cond: (id < 10)
6059 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t3)*/
6060 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6063 Leading(((t1 t2) t3))
6070 --------------------------------------------
6072 Join Filter: (t2.val = t3.val)
6074 Hash Cond: (t1.id = t2.id)
6075 -> Index Scan using t1_pkey on t1
6076 Index Cond: (id < 10)
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;
6084 --------------------------------------------------------
6087 Merge Cond: (t3.id = t4.id)
6089 Join Filter: (t1.val = t3.val)
6090 -> Index Scan using t3_pkey on t3
6092 -> Index Scan using t1_pkey on t1
6093 Index Cond: (id < 10)
6097 -> Index Scan using t2_pkey on t2
6098 Index Cond: (id = t1.id)
6101 /*+Leading(((t1 t2) t3)) MergeJoin(t3 t4)*/
6102 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;
6105 Leading(((t1 t2) t3))
6112 --------------------------------------------------
6114 Join Filter: (t3.id = t4.id)
6116 Join Filter: (t1.val = t3.val)
6118 Hash Cond: (t1.id = t2.id)
6119 -> Index Scan using t1_pkey on t1
6120 Index Cond: (id < 10)
6127 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3 t4)*/
6128 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;
6131 MergeJoin(t1 t2 t3 t4)
6132 Leading(((t1 t2) t3))
6138 --------------------------------------------------------
6140 Merge Cond: (t3.id = t4.id)
6144 Join Filter: (t1.val = t3.val)
6146 Hash Cond: (t1.id = t2.id)
6147 -> Index Scan using t1_pkey on t1
6148 Index Cond: (id < 10)
6157 /*+ Leading ( ( t1 ( t2 t3 ) ) ) */
6158 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6161 Leading((t1 (t2 t3)))
6167 --------------------------------------------
6169 Hash Cond: (t1.id = t2.id)
6170 -> Index Scan using t1_pkey on t1
6171 Index Cond: (id < 10)
6174 Hash Cond: (t2.val = t3.val)
6180 /*+Leading((t1(t2 t3)))*/
6181 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6184 Leading((t1 (t2 t3)))
6190 --------------------------------------------
6192 Hash Cond: (t1.id = t2.id)
6193 -> Index Scan using t1_pkey on t1
6194 Index Cond: (id < 10)
6197 Hash Cond: (t2.val = t3.val)
6203 /*+Leading(("t1(t2" "t3)"))*/
6204 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6208 Leading(("t1(t2" "t3)"))
6213 --------------------------------------------------------
6215 Hash Cond: (t3.val = t2.val)
6219 Hash Cond: (t2.id = t1.id)
6222 -> Index Scan using t1_pkey on t1
6223 Index Cond: (id < 10)
6226 /*+ Leading ( ( ( t1 t2 ) t3 ) ) */
6227 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6230 Leading(((t1 t2) t3))
6236 --------------------------------------------
6238 Join Filter: (t2.val = t3.val)
6240 Hash Cond: (t1.id = t2.id)
6241 -> Index Scan using t1_pkey on t1
6242 Index Cond: (id < 10)
6248 /*+Leading(((t1 t2)t3))*/
6249 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6252 Leading(((t1 t2) t3))
6258 --------------------------------------------
6260 Join Filter: (t2.val = t3.val)
6262 Hash Cond: (t1.id = t2.id)
6263 -> Index Scan using t1_pkey on t1
6264 Index Cond: (id < 10)
6270 /*+Leading(("(t1" "t2)t3"))*/
6271 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6275 Leading(("(t1" "t2)t3"))
6280 --------------------------------------------------------
6282 Hash Cond: (t3.val = t2.val)
6286 Hash Cond: (t2.id = t1.id)
6289 -> Index Scan using t1_pkey on t1
6290 Index Cond: (id < 10)
6293 /*+Leading((t1(t2(t3(t4 t5)))))*/
6294 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;
6297 Leading((t1 (t2 (t3 (t4 t5)))))
6303 ----------------------------------------------------------------------------------------------------------------------------------
6305 Merge Cond: (t1.id = t2.id)
6306 -> Index Scan using t1_pkey on t1
6309 Merge Cond: (t2.id = t3.id)
6310 -> Index Scan using t2_pkey on t2
6313 Merge Cond: (t3.id = t4.id)
6314 -> Index Scan using t3_pkey on t3
6317 Merge Cond: (t4.id = t5.id)
6318 -> Index Scan using t4_pkey on t4
6319 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6322 /*+Leading((t5(t4(t3(t2 t1)))))*/
6323 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4, t5 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id AND t1.id = t5.id;
6326 Leading((t5 (t4 (t3 (t2 t1)))))
6332 --------------------------------------------------------------------------
6334 Hash Cond: (t5.id = t1.id)
6338 Merge Cond: (t4.id = t1.id)
6344 Merge Cond: (t3.id = t1.id)
6350 Merge Cond: (t2.id = t1.id)
6351 -> Index Scan using t2_pkey on t2
6352 -> Index Scan using t1_pkey on t1
6355 /*+Leading(((((t1 t2)t3)t4)t5))*/
6356 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;
6359 Leading(((((t1 t2) t3) t4) t5))
6365 ----------------------------------------------------------------------------------------------
6368 Merge Cond: (t1.id = t4.id)
6370 Merge Cond: (t1.id = t3.id)
6372 Merge Cond: (t1.id = t2.id)
6373 -> Index Scan using t1_pkey on t1
6374 -> Index Scan using t2_pkey on t2
6381 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6382 Index Cond: (id = t1.id)
6385 /*+Leading(((((t5 t4)t3)t2)t1))*/
6386 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4, t5 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id AND t1.id = t5.id;
6389 Leading(((((t5 t4) t3) t2) t1))
6395 ----------------------------------------------------------------------------------------------------------------
6397 Join Filter: (t2.id = t1.id)
6399 Join Filter: (t3.id = t2.id)
6401 Merge Cond: (t4.id = t3.id)
6403 Merge Cond: (t5.id = t4.id)
6404 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6408 -> Index Scan using t3_pkey on t3
6409 -> Index Scan using t2_pkey on t2
6410 Index Cond: (id = t5.id)
6411 -> Index Scan using t1_pkey on t1
6412 Index Cond: (id = t5.id)
6415 /*+Leading(((t1 t2)(t3(t4 t5))))*/
6416 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;
6419 Leading(((t1 t2) (t3 (t4 t5))))
6425 ----------------------------------------------------------------------------------------------------------------------
6427 Merge Cond: (t1.id = t3.id)
6429 Merge Cond: (t1.id = t2.id)
6430 -> Index Scan using t1_pkey on t1
6431 -> Index Scan using t2_pkey on t2
6434 Merge Cond: (t3.id = t4.id)
6435 -> Index Scan using t3_pkey on t3
6438 Merge Cond: (t4.id = t5.id)
6439 -> Index Scan using t4_pkey on t4
6440 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6443 /*+Leading(((t5 t4)(t3(t2 t1))))*/
6444 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;
6447 Leading(((t5 t4) (t3 (t2 t1))))
6453 ----------------------------------------------------------------------------------------------------
6455 Merge Cond: (t4.id = t1.id)
6457 Merge Cond: (t5.id = t4.id)
6458 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6464 Merge Cond: (t3.id = t1.id)
6470 Merge Cond: (t2.id = t1.id)
6471 -> Index Scan using t2_pkey on t2
6472 -> Index Scan using t1_pkey on t1
6475 /*+Leading((((t1 t2)t3)(t4 t5)))*/
6476 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;
6479 Leading((((t1 t2) t3) (t4 t5)))
6485 ----------------------------------------------------------------------------------------------------------
6487 Merge Cond: (t1.id = t4.id)
6489 Merge Cond: (t1.id = t3.id)
6491 Merge Cond: (t1.id = t2.id)
6492 -> Index Scan using t1_pkey on t1
6493 -> Index Scan using t2_pkey on t2
6499 Merge Cond: (t4.id = t5.id)
6500 -> Index Scan using t4_pkey on t4
6501 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6504 /*+Leading((((t5 t4)t3)(t2 t1)))*/
6505 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;
6508 Leading((((t5 t4) t3) (t2 t1)))
6514 ----------------------------------------------------------------------------------------------------------
6516 Merge Cond: (t3.id = t1.id)
6518 Merge Cond: (t4.id = t3.id)
6520 Merge Cond: (t5.id = t4.id)
6521 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6525 -> Index Scan using t3_pkey on t3
6528 Merge Cond: (t2.id = t1.id)
6529 -> Index Scan using t2_pkey on t2
6530 -> Index Scan using t1_pkey on t1
6533 -- inherite table test to specify the index's name
6534 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6536 -----------------------------------------------------------------------
6539 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6540 -> Seq Scan on p2_c1
6541 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6542 -> Seq Scan on p2_c1_c1
6543 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6544 -> Seq Scan on p2_c1_c2
6545 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6548 /*+IndexScan(p2 p2_pkey)*/
6549 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6550 LOG: available indexes for IndexScan(p2): p2_pkey
6551 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6552 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6553 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6556 IndexScan(p2 p2_pkey)
6562 --------------------------------------------------
6564 -> Index Scan using p2_pkey on p2
6565 Index Cond: ((id >= 50) AND (id <= 51))
6566 Filter: (ctid = '(1,1)'::tid)
6567 -> Index Scan using p2_c1_pkey on p2_c1
6568 Index Cond: ((id >= 50) AND (id <= 51))
6569 Filter: (ctid = '(1,1)'::tid)
6570 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6571 Index Cond: ((id >= 50) AND (id <= 51))
6572 Filter: (ctid = '(1,1)'::tid)
6573 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6574 Index Cond: ((id >= 50) AND (id <= 51))
6575 Filter: (ctid = '(1,1)'::tid)
6578 /*+IndexScan(p2 p2_id_val_idx)*/
6579 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6580 LOG: available indexes for IndexScan(p2): p2_id_val_idx
6581 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6582 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
6583 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
6586 IndexScan(p2 p2_id_val_idx)
6592 --------------------------------------------------------
6594 -> Index Scan using p2_id_val_idx on p2
6595 Index Cond: ((id >= 50) AND (id <= 51))
6596 Filter: (ctid = '(1,1)'::tid)
6597 -> Index Scan using p2_c1_id_val_idx on p2_c1
6598 Index Cond: ((id >= 50) AND (id <= 51))
6599 Filter: (ctid = '(1,1)'::tid)
6600 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
6601 Index Cond: ((id >= 50) AND (id <= 51))
6602 Filter: (ctid = '(1,1)'::tid)
6603 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
6604 Index Cond: ((id >= 50) AND (id <= 51))
6605 Filter: (ctid = '(1,1)'::tid)
6608 /*+IndexScan(p2 p2_val_id_idx)*/
6609 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6610 LOG: available indexes for IndexScan(p2): p2_val_id_idx
6611 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_id_idx
6612 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_id_idx
6613 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_id_idx
6616 IndexScan(p2 p2_val_id_idx)
6622 --------------------------------------------------------
6624 -> Index Scan using p2_val_id_idx on p2
6625 Index Cond: ((id >= 50) AND (id <= 51))
6626 Filter: (ctid = '(1,1)'::tid)
6627 -> Index Scan using p2_c1_val_id_idx on p2_c1
6628 Index Cond: ((id >= 50) AND (id <= 51))
6629 Filter: (ctid = '(1,1)'::tid)
6630 -> Index Scan using p2_c1_c1_val_id_idx on p2_c1_c1
6631 Index Cond: ((id >= 50) AND (id <= 51))
6632 Filter: (ctid = '(1,1)'::tid)
6633 -> Index Scan using p2_c1_c2_val_id_idx on p2_c1_c2
6634 Index Cond: ((id >= 50) AND (id <= 51))
6635 Filter: (ctid = '(1,1)'::tid)
6638 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6640 -----------------------------------------------------------------------------------------
6643 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6644 -> Seq Scan on p2_c1
6645 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6646 -> Seq Scan on p2_c2
6647 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6648 -> Seq Scan on p2_c3
6649 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6650 -> Seq Scan on p2_c4
6651 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6652 -> Seq Scan on p2_c1_c1
6653 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6654 -> Seq Scan on p2_c1_c2
6655 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6656 -> Seq Scan on p2_c3_c1
6657 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6658 -> Seq Scan on p2_c3_c2
6659 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6662 -- Inhibit parallel exection to avoid interfaring the hint
6663 set max_parallel_workers_per_gather to 0;
6664 /*+ IndexScan(p2 p2_val)*/
6665 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6666 LOG: available indexes for IndexScan(p2):
6667 LOG: available indexes for IndexScan(p2_c1):
6668 LOG: available indexes for IndexScan(p2_c2):
6669 LOG: available indexes for IndexScan(p2_c3):
6670 LOG: available indexes for IndexScan(p2_c4):
6671 LOG: available indexes for IndexScan(p2_c1_c1):
6672 LOG: available indexes for IndexScan(p2_c1_c2):
6673 LOG: available indexes for IndexScan(p2_c3_c1):
6674 LOG: available indexes for IndexScan(p2_c3_c2):
6677 IndexScan(p2 p2_val)
6683 -----------------------------------------------------------------------------------------
6686 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6687 -> Seq Scan on p2_c1
6688 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6689 -> Seq Scan on p2_c2
6690 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6691 -> Seq Scan on p2_c3
6692 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6693 -> Seq Scan on p2_c4
6694 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6695 -> Seq Scan on p2_c1_c1
6696 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6697 -> Seq Scan on p2_c1_c2
6698 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6699 -> Seq Scan on p2_c3_c1
6700 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6701 -> Seq Scan on p2_c3_c2
6702 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6705 /*+IndexScan(p2 p2_pkey)*/
6706 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6707 LOG: available indexes for IndexScan(p2): p2_pkey
6708 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6709 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6710 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6713 IndexScan(p2 p2_pkey)
6719 --------------------------------------------------
6721 -> Index Scan using p2_pkey on p2
6722 Index Cond: ((id >= 50) AND (id <= 51))
6723 Filter: (ctid = '(1,1)'::tid)
6724 -> Index Scan using p2_c1_pkey on p2_c1
6725 Index Cond: ((id >= 50) AND (id <= 51))
6726 Filter: (ctid = '(1,1)'::tid)
6727 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6728 Index Cond: ((id >= 50) AND (id <= 51))
6729 Filter: (ctid = '(1,1)'::tid)
6730 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6731 Index Cond: ((id >= 50) AND (id <= 51))
6732 Filter: (ctid = '(1,1)'::tid)
6735 /*+IndexScan(p2 p2_id2_val)*/
6736 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6737 LOG: available indexes for IndexScan(p2): p2_id2_val
6738 LOG: available indexes for IndexScan(p2_c1): p2_c1_id2_val
6739 LOG: available indexes for IndexScan(p2_c1_c1):
6740 LOG: available indexes for IndexScan(p2_c1_c2):
6743 IndexScan(p2 p2_id2_val)
6749 -----------------------------------------------------------------------
6751 -> Index Scan using p2_id2_val on p2
6752 Index Cond: ((id >= 50) AND (id <= 51))
6753 Filter: (ctid = '(1,1)'::tid)
6754 -> Index Scan using p2_c1_id2_val on p2_c1
6755 Index Cond: ((id >= 50) AND (id <= 51))
6756 Filter: (ctid = '(1,1)'::tid)
6757 -> Seq Scan on p2_c1_c1
6758 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6759 -> Seq Scan on p2_c1_c2
6760 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6763 /*+IndexScan(p2 p2_val2_id)*/
6764 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6765 LOG: available indexes for IndexScan(p2): p2_val2_id
6766 LOG: available indexes for IndexScan(p2_c1):
6767 LOG: available indexes for IndexScan(p2_c1_c1):
6768 LOG: available indexes for IndexScan(p2_c1_c2):
6771 IndexScan(p2 p2_val2_id)
6777 -----------------------------------------------------------------------
6779 -> Index Scan using p2_val2_id on p2
6780 Index Cond: ((id >= 50) AND (id <= 51))
6781 Filter: (ctid = '(1,1)'::tid)
6782 -> Seq Scan on p2_c1
6783 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6784 -> Seq Scan on p2_c1_c1
6785 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6786 -> Seq Scan on p2_c1_c2
6787 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6790 /*+IndexScan(p2 p2_pkey)*/
6791 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6792 LOG: available indexes for IndexScan(p2): p2_pkey
6793 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6794 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6795 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6798 IndexScan(p2 p2_pkey)
6804 --------------------------------------------------
6806 -> Index Scan using p2_pkey on p2
6807 Index Cond: ((id >= 50) AND (id <= 51))
6808 Filter: (ctid = '(1,1)'::tid)
6809 -> Index Scan using p2_c1_pkey on p2_c1
6810 Index Cond: ((id >= 50) AND (id <= 51))
6811 Filter: (ctid = '(1,1)'::tid)
6812 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6813 Index Cond: ((id >= 50) AND (id <= 51))
6814 Filter: (ctid = '(1,1)'::tid)
6815 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6816 Index Cond: ((id >= 50) AND (id <= 51))
6817 Filter: (ctid = '(1,1)'::tid)
6820 /*+IndexScan(p2 p2_c1_id_val_idx)*/
6821 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6822 LOG: available indexes for IndexScan(p2):
6823 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6824 LOG: available indexes for IndexScan(p2_c1_c1):
6825 LOG: available indexes for IndexScan(p2_c1_c2):
6828 IndexScan(p2 p2_c1_id_val_idx)
6834 -----------------------------------------------------------------------
6837 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6838 -> Index Scan using p2_c1_id_val_idx on p2_c1
6839 Index Cond: ((id >= 50) AND (id <= 51))
6840 Filter: (ctid = '(1,1)'::tid)
6841 -> Seq Scan on p2_c1_c1
6842 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6843 -> Seq Scan on p2_c1_c2
6844 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6847 /*+IndexScan(p2 no_exist)*/
6848 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6849 LOG: available indexes for IndexScan(p2):
6850 LOG: available indexes for IndexScan(p2_c1):
6851 LOG: available indexes for IndexScan(p2_c1_c1):
6852 LOG: available indexes for IndexScan(p2_c1_c2):
6855 IndexScan(p2 no_exist)
6861 -----------------------------------------------------------------------
6864 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6865 -> Seq Scan on p2_c1
6866 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6867 -> Seq Scan on p2_c1_c1
6868 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6869 -> Seq Scan on p2_c1_c2
6870 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6873 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx)*/
6874 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6875 LOG: available indexes for IndexScan(p2): p2_pkey
6876 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6877 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6878 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6881 IndexScan(p2 p2_pkey p2_c1_id_val_idx)
6887 --------------------------------------------------
6889 -> Index Scan using p2_pkey on p2
6890 Index Cond: ((id >= 50) AND (id <= 51))
6891 Filter: (ctid = '(1,1)'::tid)
6892 -> Index Scan using p2_c1_id_val_idx on p2_c1
6893 Index Cond: ((id >= 50) AND (id <= 51))
6894 Filter: (ctid = '(1,1)'::tid)
6895 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6896 Index Cond: ((id >= 50) AND (id <= 51))
6897 Filter: (ctid = '(1,1)'::tid)
6898 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6899 Index Cond: ((id >= 50) AND (id <= 51))
6900 Filter: (ctid = '(1,1)'::tid)
6903 /*+IndexScan(p2 p2_pkey no_exist)*/
6904 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6905 LOG: available indexes for IndexScan(p2): p2_pkey
6906 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6907 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6908 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6911 IndexScan(p2 p2_pkey no_exist)
6917 --------------------------------------------------
6919 -> Index Scan using p2_pkey on p2
6920 Index Cond: ((id >= 50) AND (id <= 51))
6921 Filter: (ctid = '(1,1)'::tid)
6922 -> Index Scan using p2_c1_pkey on p2_c1
6923 Index Cond: ((id >= 50) AND (id <= 51))
6924 Filter: (ctid = '(1,1)'::tid)
6925 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6926 Index Cond: ((id >= 50) AND (id <= 51))
6927 Filter: (ctid = '(1,1)'::tid)
6928 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6929 Index Cond: ((id >= 50) AND (id <= 51))
6930 Filter: (ctid = '(1,1)'::tid)
6933 /*+IndexScan(p2 p2_c1_id_val_idx no_exist)*/
6934 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6935 LOG: available indexes for IndexScan(p2):
6936 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6937 LOG: available indexes for IndexScan(p2_c1_c1):
6938 LOG: available indexes for IndexScan(p2_c1_c2):
6941 IndexScan(p2 p2_c1_id_val_idx no_exist)
6947 -----------------------------------------------------------------------
6950 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6951 -> Index Scan using p2_c1_id_val_idx on p2_c1
6952 Index Cond: ((id >= 50) AND (id <= 51))
6953 Filter: (ctid = '(1,1)'::tid)
6954 -> Seq Scan on p2_c1_c1
6955 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6956 -> Seq Scan on p2_c1_c2
6957 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6960 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)*/
6961 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6962 LOG: available indexes for IndexScan(p2): p2_pkey
6963 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6964 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6965 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6968 IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)
6974 --------------------------------------------------
6976 -> Index Scan using p2_pkey on p2
6977 Index Cond: ((id >= 50) AND (id <= 51))
6978 Filter: (ctid = '(1,1)'::tid)
6979 -> Index Scan using p2_c1_id_val_idx on p2_c1
6980 Index Cond: ((id >= 50) AND (id <= 51))
6981 Filter: (ctid = '(1,1)'::tid)
6982 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6983 Index Cond: ((id >= 50) AND (id <= 51))
6984 Filter: (ctid = '(1,1)'::tid)
6985 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6986 Index Cond: ((id >= 50) AND (id <= 51))
6987 Filter: (ctid = '(1,1)'::tid)
6990 /*+IndexScan(p2 p2_val_idx)*/
6991 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6992 LOG: available indexes for IndexScan(p2): p2_val_idx
6993 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx
6994 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx
6995 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx
6996 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx
6997 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx
6998 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx
6999 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx
7000 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx
7003 IndexScan(p2 p2_val_idx)
7009 -------------------------------------------------------------------
7011 -> Index Scan using p2_val_idx on p2
7012 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7013 Filter: (ctid = '(1,1)'::tid)
7014 -> Index Scan using p2_c1_val_idx on p2_c1
7015 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7016 Filter: (ctid = '(1,1)'::tid)
7017 -> Index Scan using p2_c2_val_idx on p2_c2
7018 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7019 Filter: (ctid = '(1,1)'::tid)
7020 -> Index Scan using p2_c3_val_idx on p2_c3
7021 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7022 Filter: (ctid = '(1,1)'::tid)
7023 -> Index Scan using p2_c4_val_idx on p2_c4
7024 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7025 Filter: (ctid = '(1,1)'::tid)
7026 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
7027 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7028 Filter: (ctid = '(1,1)'::tid)
7029 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
7030 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7031 Filter: (ctid = '(1,1)'::tid)
7032 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
7033 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7034 Filter: (ctid = '(1,1)'::tid)
7035 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
7036 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7037 Filter: (ctid = '(1,1)'::tid)
7040 /*+IndexScan(p2 p2_expr)*/
7041 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7042 LOG: available indexes for IndexScan(p2): p2_expr
7043 LOG: available indexes for IndexScan(p2_c1): p2_c1_expr_idx
7044 LOG: available indexes for IndexScan(p2_c2): p2_c2_expr_idx
7045 LOG: available indexes for IndexScan(p2_c3): p2_c3_expr_idx
7046 LOG: available indexes for IndexScan(p2_c4): p2_c4_expr_idx
7047 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_expr_idx
7048 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_expr_idx
7049 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_expr_idx
7050 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_expr_idx
7053 IndexScan(p2 p2_expr)
7059 -----------------------------------------------------------------------------------------
7062 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7063 -> Seq Scan on p2_c1
7064 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7065 -> Seq Scan on p2_c2
7066 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7067 -> Seq Scan on p2_c3
7068 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7069 -> Seq Scan on p2_c4
7070 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7071 -> Seq Scan on p2_c1_c1
7072 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7073 -> Seq Scan on p2_c1_c2
7074 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7075 -> Seq Scan on p2_c3_c1
7076 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7077 -> Seq Scan on p2_c3_c2
7078 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7081 /*+IndexScan(p2 p2_val_idx6)*/
7082 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7083 LOG: available indexes for IndexScan(p2): p2_val_idx6
7084 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx6
7085 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx6
7086 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx6
7087 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx6
7088 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx6
7089 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx6
7090 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx6
7091 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx6
7094 IndexScan(p2 p2_val_idx6)
7100 -----------------------------------------------------------------------------------------
7103 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7104 -> Seq Scan on p2_c1
7105 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7106 -> Seq Scan on p2_c2
7107 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7108 -> Seq Scan on p2_c3
7109 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7110 -> Seq Scan on p2_c4
7111 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7112 -> Seq Scan on p2_c1_c1
7113 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7114 -> Seq Scan on p2_c1_c2
7115 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7116 -> Seq Scan on p2_c3_c1
7117 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7118 -> Seq Scan on p2_c3_c2
7119 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7122 /*+IndexScan(p2 p2_val_idx p2_val_idx6)*/
7123 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7124 LOG: available indexes for IndexScan(p2): p2_val_idx6 p2_val_idx
7125 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx6 p2_c1_val_idx
7126 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx6 p2_c2_val_idx
7127 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx6 p2_c3_val_idx
7128 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx6 p2_c4_val_idx
7129 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx6 p2_c1_c1_val_idx
7130 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx6 p2_c1_c2_val_idx
7131 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx6 p2_c3_c1_val_idx
7132 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx6 p2_c3_c2_val_idx
7135 IndexScan(p2 p2_val_idx p2_val_idx6)
7141 -------------------------------------------------------------------
7143 -> Index Scan using p2_val_idx on p2
7144 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7145 Filter: (ctid = '(1,1)'::tid)
7146 -> Index Scan using p2_c1_val_idx on p2_c1
7147 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7148 Filter: (ctid = '(1,1)'::tid)
7149 -> Index Scan using p2_c2_val_idx on p2_c2
7150 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7151 Filter: (ctid = '(1,1)'::tid)
7152 -> Index Scan using p2_c3_val_idx on p2_c3
7153 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7154 Filter: (ctid = '(1,1)'::tid)
7155 -> Index Scan using p2_c4_val_idx on p2_c4
7156 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7157 Filter: (ctid = '(1,1)'::tid)
7158 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
7159 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7160 Filter: (ctid = '(1,1)'::tid)
7161 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
7162 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7163 Filter: (ctid = '(1,1)'::tid)
7164 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
7165 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7166 Filter: (ctid = '(1,1)'::tid)
7167 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
7168 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7169 Filter: (ctid = '(1,1)'::tid)
7172 -- regular expression
7174 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7176 ---------------------------------------------------------------------------------------------
7177 Index Only Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
7178 Index Cond: (id = 1)
7181 /*+ IndexScanRegexp(t5 t5_[^i].*)*/
7182 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7183 LOG: available indexes for IndexScanRegexp(t5): t5_val t5_pkey
7186 IndexScanRegexp(t5 t5_[^i].*)
7192 --------------------------------
7193 Index Scan using t5_pkey on t5
7194 Index Cond: (id = 1)
7197 /*+ IndexScanRegexp(t5 t5_id[0-9].*)*/
7198 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7199 LOG: available indexes for IndexScanRegexp(t5): t5_id3 t5_id2 t5_id1
7202 IndexScanRegexp(t5 t5_id[0-9].*)
7208 -------------------------------
7209 Index Scan using t5_id3 on t5
7210 Index Cond: (id = 1)
7213 /*+ IndexScanRegexp(t5 t5[^_].*)*/
7214 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7215 LOG: available indexes for IndexScanRegexp(t5):
7218 IndexScanRegexp(t5 t5[^_].*)
7224 --------------------
7229 /*+ IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7230 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7231 LOG: available indexes for IndexScanRegexp(t5):
7234 IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7240 --------------------
7245 /*+ IndexScan(t5 t5_id[0-9].*)*/
7246 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7247 LOG: available indexes for IndexScan(t5):
7250 IndexScan(t5 t5_id[0-9].*)
7256 --------------------
7261 /*+ IndexOnlyScanRegexp(t5 t5_[^i].*)*/
7262 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7263 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_val t5_pkey
7266 IndexOnlyScanRegexp(t5 t5_[^i].*)
7272 -------------------------------------
7273 Index Only Scan using t5_pkey on t5
7274 Index Cond: (id = 1)
7277 /*+ IndexOnlyScanRegexp(t5 t5_id[0-9].*)*/
7278 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7279 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_id3 t5_id2 t5_id1
7282 IndexOnlyScanRegexp(t5 t5_id[0-9].*)
7288 ------------------------------------
7289 Index Only Scan using t5_id3 on t5
7290 Index Cond: (id = 1)
7293 /*+ IndexOnlyScanRegexp(t5 t5[^_].*)*/
7294 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7295 LOG: available indexes for IndexOnlyScanRegexp(t5):
7298 IndexOnlyScanRegexp(t5 t5[^_].*)
7304 --------------------
7309 /*+ IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7310 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7311 LOG: available indexes for IndexOnlyScanRegexp(t5):
7314 IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7320 --------------------
7325 /*+ IndexOnlyScan(t5 t5_id[0-9].*)*/
7326 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7327 LOG: available indexes for IndexOnlyScan(t5):
7330 IndexOnlyScan(t5 t5_id[0-9].*)
7336 --------------------
7341 /*+ BitmapScanRegexp(t5 t5_[^i].*)*/
7342 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7343 LOG: available indexes for BitmapScanRegexp(t5): t5_val t5_pkey
7346 BitmapScanRegexp(t5 t5_[^i].*)
7352 ------------------------------------
7353 Bitmap Heap Scan on t5
7354 Recheck Cond: (id = 1)
7355 -> Bitmap Index Scan on t5_pkey
7356 Index Cond: (id = 1)
7359 /*+ BitmapScanRegexp(t5 t5_id[0-9].*)*/
7360 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7361 LOG: available indexes for BitmapScanRegexp(t5): t5_id3 t5_id2 t5_id1
7364 BitmapScanRegexp(t5 t5_id[0-9].*)
7370 -----------------------------------
7371 Bitmap Heap Scan on t5
7372 Recheck Cond: (id = 1)
7373 -> Bitmap Index Scan on t5_id3
7374 Index Cond: (id = 1)
7377 /*+ BitmapScanRegexp(t5 t5[^_].*)*/
7378 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7379 LOG: available indexes for BitmapScanRegexp(t5):
7382 BitmapScanRegexp(t5 t5[^_].*)
7388 --------------------
7393 /*+ BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7394 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7395 LOG: available indexes for BitmapScanRegexp(t5):
7398 BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7404 --------------------
7409 /*+ BitmapScan(t5 t5_id[0-9].*)*/
7410 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7411 LOG: available indexes for BitmapScan(t5):
7414 BitmapScan(t5 t5_id[0-9].*)
7420 --------------------
7426 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7428 ----------------------------
7432 -> Seq Scan on p1_c1
7434 -> Seq Scan on p1_c2
7436 -> Seq Scan on p1_c3
7438 -> Seq Scan on p1_c4
7440 -> Seq Scan on p1_c1_c1
7442 -> Seq Scan on p1_c1_c2
7444 -> Seq Scan on p1_c3_c1
7446 -> Seq Scan on p1_c3_c2
7450 /*+ IndexScanRegexp(p1 p1_.*[^0-9]$)*/
7451 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7452 LOG: available indexes for IndexScanRegexp(p1): p1_pkey
7453 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_pkey
7454 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_pkey
7455 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_pkey
7456 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_pkey
7457 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7458 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7459 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7460 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7463 IndexScanRegexp(p1 p1_.*[^0-9]$)
7469 ----------------------------
7473 -> Seq Scan on p1_c1
7475 -> Seq Scan on p1_c2
7477 -> Seq Scan on p1_c3
7479 -> Seq Scan on p1_c4
7481 -> Seq Scan on p1_c1_c1
7483 -> Seq Scan on p1_c1_c2
7485 -> Seq Scan on p1_c3_c1
7487 -> Seq Scan on p1_c3_c2
7491 /*+ IndexScanRegexp(p1 p1_.*val2.*)*/
7492 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7493 LOG: available indexes for IndexScanRegexp(p1): p1_val2
7494 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_val2
7495 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_val2
7496 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_val2
7497 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_val2
7498 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_val2
7499 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_val2
7500 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_val2
7501 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_val2
7504 IndexScanRegexp(p1 p1_.*val2.*)
7510 --------------------------------------------------
7512 -> Index Scan using p1_val2 on p1
7513 Index Cond: (val = 1)
7514 -> Index Scan using p1_c1_val2 on p1_c1
7515 Index Cond: (val = 1)
7516 -> Index Scan using p1_c2_val2 on p1_c2
7517 Index Cond: (val = 1)
7518 -> Index Scan using p1_c3_val2 on p1_c3
7519 Index Cond: (val = 1)
7520 -> Index Scan using p1_c4_val2 on p1_c4
7521 Index Cond: (val = 1)
7522 -> Index Scan using p1_c1_c1_val2 on p1_c1_c1
7523 Index Cond: (val = 1)
7524 -> Index Scan using p1_c1_c2_val2 on p1_c1_c2
7525 Index Cond: (val = 1)
7526 -> Index Scan using p1_c3_c1_val2 on p1_c3_c1
7527 Index Cond: (val = 1)
7528 -> Index Scan using p1_c3_c2_val2 on p1_c3_c2
7529 Index Cond: (val = 1)
7532 /*+ IndexScanRegexp(p1 p1[^_].*)*/
7533 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7534 LOG: available indexes for IndexScanRegexp(p1):
7535 LOG: available indexes for IndexScanRegexp(p1_c1):
7536 LOG: available indexes for IndexScanRegexp(p1_c2):
7537 LOG: available indexes for IndexScanRegexp(p1_c3):
7538 LOG: available indexes for IndexScanRegexp(p1_c4):
7539 LOG: available indexes for IndexScanRegexp(p1_c1_c1):
7540 LOG: available indexes for IndexScanRegexp(p1_c1_c2):
7541 LOG: available indexes for IndexScanRegexp(p1_c3_c1):
7542 LOG: available indexes for IndexScanRegexp(p1_c3_c2):
7545 IndexScanRegexp(p1 p1[^_].*)
7551 ----------------------------
7555 -> Seq Scan on p1_c1
7557 -> Seq Scan on p1_c2
7559 -> Seq Scan on p1_c3
7561 -> Seq Scan on p1_c4
7563 -> Seq Scan on p1_c1_c1
7565 -> Seq Scan on p1_c1_c2
7567 -> Seq Scan on p1_c3_c1
7569 -> Seq Scan on p1_c3_c2
7573 /*+ IndexScan(p1 p1_.*val2.*)*/
7574 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7575 LOG: available indexes for IndexScan(p1):
7576 LOG: available indexes for IndexScan(p1_c1):
7577 LOG: available indexes for IndexScan(p1_c2):
7578 LOG: available indexes for IndexScan(p1_c3):
7579 LOG: available indexes for IndexScan(p1_c4):
7580 LOG: available indexes for IndexScan(p1_c1_c1):
7581 LOG: available indexes for IndexScan(p1_c1_c2):
7582 LOG: available indexes for IndexScan(p1_c3_c1):
7583 LOG: available indexes for IndexScan(p1_c3_c2):
7586 IndexScan(p1 p1_.*val2.*)
7592 ----------------------------
7596 -> Seq Scan on p1_c1
7598 -> Seq Scan on p1_c2
7600 -> Seq Scan on p1_c3
7602 -> Seq Scan on p1_c4
7604 -> Seq Scan on p1_c1_c1
7606 -> Seq Scan on p1_c1_c2
7608 -> Seq Scan on p1_c3_c1
7610 -> Seq Scan on p1_c3_c2
7614 /*+ IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)*/
7615 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7616 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_pkey
7617 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_pkey
7618 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_pkey
7619 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_pkey
7620 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_pkey
7621 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7622 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7623 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7624 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7627 IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)
7633 ----------------------------
7637 -> Seq Scan on p1_c1
7639 -> Seq Scan on p1_c2
7641 -> Seq Scan on p1_c3
7643 -> Seq Scan on p1_c4
7645 -> Seq Scan on p1_c1_c1
7647 -> Seq Scan on p1_c1_c2
7649 -> Seq Scan on p1_c3_c1
7651 -> Seq Scan on p1_c3_c2
7655 /*+ IndexOnlyScanRegexp(p1 p1_.*val2.*)*/
7656 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7657 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_val2
7658 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_val2
7659 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_val2
7660 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_val2
7661 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_val2
7662 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_val2
7663 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_val2
7664 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_val2
7665 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_val2
7668 IndexOnlyScanRegexp(p1 p1_.*val2.*)
7674 -------------------------------------------------------
7676 -> Index Only Scan using p1_val2 on p1
7677 Index Cond: (val = 1)
7678 -> Index Only Scan using p1_c1_val2 on p1_c1
7679 Index Cond: (val = 1)
7680 -> Index Only Scan using p1_c2_val2 on p1_c2
7681 Index Cond: (val = 1)
7682 -> Index Only Scan using p1_c3_val2 on p1_c3
7683 Index Cond: (val = 1)
7684 -> Index Only Scan using p1_c4_val2 on p1_c4
7685 Index Cond: (val = 1)
7686 -> Index Only Scan using p1_c1_c1_val2 on p1_c1_c1
7687 Index Cond: (val = 1)
7688 -> Index Only Scan using p1_c1_c2_val2 on p1_c1_c2
7689 Index Cond: (val = 1)
7690 -> Index Only Scan using p1_c3_c1_val2 on p1_c3_c1
7691 Index Cond: (val = 1)
7692 -> Index Only Scan using p1_c3_c2_val2 on p1_c3_c2
7693 Index Cond: (val = 1)
7696 /*+ IndexOnlyScanRegexp(p1 p1[^_].*)*/
7697 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7698 LOG: available indexes for IndexOnlyScanRegexp(p1):
7699 LOG: available indexes for IndexOnlyScanRegexp(p1_c1):
7700 LOG: available indexes for IndexOnlyScanRegexp(p1_c2):
7701 LOG: available indexes for IndexOnlyScanRegexp(p1_c3):
7702 LOG: available indexes for IndexOnlyScanRegexp(p1_c4):
7703 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1):
7704 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2):
7705 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1):
7706 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2):
7709 IndexOnlyScanRegexp(p1 p1[^_].*)
7715 ----------------------------
7719 -> Seq Scan on p1_c1
7721 -> Seq Scan on p1_c2
7723 -> Seq Scan on p1_c3
7725 -> Seq Scan on p1_c4
7727 -> Seq Scan on p1_c1_c1
7729 -> Seq Scan on p1_c1_c2
7731 -> Seq Scan on p1_c3_c1
7733 -> Seq Scan on p1_c3_c2
7737 /*+ IndexOnlyScan(p1 p1_.*val2.*)*/
7738 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7739 LOG: available indexes for IndexOnlyScan(p1):
7740 LOG: available indexes for IndexOnlyScan(p1_c1):
7741 LOG: available indexes for IndexOnlyScan(p1_c2):
7742 LOG: available indexes for IndexOnlyScan(p1_c3):
7743 LOG: available indexes for IndexOnlyScan(p1_c4):
7744 LOG: available indexes for IndexOnlyScan(p1_c1_c1):
7745 LOG: available indexes for IndexOnlyScan(p1_c1_c2):
7746 LOG: available indexes for IndexOnlyScan(p1_c3_c1):
7747 LOG: available indexes for IndexOnlyScan(p1_c3_c2):
7750 IndexOnlyScan(p1 p1_.*val2.*)
7756 ----------------------------
7760 -> Seq Scan on p1_c1
7762 -> Seq Scan on p1_c2
7764 -> Seq Scan on p1_c3
7766 -> Seq Scan on p1_c4
7768 -> Seq Scan on p1_c1_c1
7770 -> Seq Scan on p1_c1_c2
7772 -> Seq Scan on p1_c3_c1
7774 -> Seq Scan on p1_c3_c2
7778 /*+ BitmapScanRegexp(p1 p1_.*[^0-9]$)*/
7779 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7780 LOG: available indexes for BitmapScanRegexp(p1): p1_pkey
7781 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_pkey
7782 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_pkey
7783 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_pkey
7784 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_pkey
7785 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7786 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7787 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7788 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7791 BitmapScanRegexp(p1 p1_.*[^0-9]$)
7797 ----------------------------
7801 -> Seq Scan on p1_c1
7803 -> Seq Scan on p1_c2
7805 -> Seq Scan on p1_c3
7807 -> Seq Scan on p1_c4
7809 -> Seq Scan on p1_c1_c1
7811 -> Seq Scan on p1_c1_c2
7813 -> Seq Scan on p1_c3_c1
7815 -> Seq Scan on p1_c3_c2
7819 /*+ BitmapScanRegexp(p1 p1_.*val2.*)*/
7820 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7821 LOG: available indexes for BitmapScanRegexp(p1): p1_val2
7822 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_val2
7823 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_val2
7824 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_val2
7825 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_val2
7826 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_val2
7827 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_val2
7828 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_val2
7829 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_val2
7832 BitmapScanRegexp(p1 p1_.*val2.*)
7838 ------------------------------------------------
7840 -> Bitmap Heap Scan on p1
7841 Recheck Cond: (val = 1)
7842 -> Bitmap Index Scan on p1_val2
7843 Index Cond: (val = 1)
7844 -> Bitmap Heap Scan on p1_c1
7845 Recheck Cond: (val = 1)
7846 -> Bitmap Index Scan on p1_c1_val2
7847 Index Cond: (val = 1)
7848 -> Bitmap Heap Scan on p1_c2
7849 Recheck Cond: (val = 1)
7850 -> Bitmap Index Scan on p1_c2_val2
7851 Index Cond: (val = 1)
7852 -> Bitmap Heap Scan on p1_c3
7853 Recheck Cond: (val = 1)
7854 -> Bitmap Index Scan on p1_c3_val2
7855 Index Cond: (val = 1)
7856 -> Bitmap Heap Scan on p1_c4
7857 Recheck Cond: (val = 1)
7858 -> Bitmap Index Scan on p1_c4_val2
7859 Index Cond: (val = 1)
7860 -> Bitmap Heap Scan on p1_c1_c1
7861 Recheck Cond: (val = 1)
7862 -> Bitmap Index Scan on p1_c1_c1_val2
7863 Index Cond: (val = 1)
7864 -> Bitmap Heap Scan on p1_c1_c2
7865 Recheck Cond: (val = 1)
7866 -> Bitmap Index Scan on p1_c1_c2_val2
7867 Index Cond: (val = 1)
7868 -> Bitmap Heap Scan on p1_c3_c1
7869 Recheck Cond: (val = 1)
7870 -> Bitmap Index Scan on p1_c3_c1_val2
7871 Index Cond: (val = 1)
7872 -> Bitmap Heap Scan on p1_c3_c2
7873 Recheck Cond: (val = 1)
7874 -> Bitmap Index Scan on p1_c3_c2_val2
7875 Index Cond: (val = 1)
7878 /*+ BitmapScanRegexp(p1 p1[^_].*)*/
7879 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7880 LOG: available indexes for BitmapScanRegexp(p1):
7881 LOG: available indexes for BitmapScanRegexp(p1_c1):
7882 LOG: available indexes for BitmapScanRegexp(p1_c2):
7883 LOG: available indexes for BitmapScanRegexp(p1_c3):
7884 LOG: available indexes for BitmapScanRegexp(p1_c4):
7885 LOG: available indexes for BitmapScanRegexp(p1_c1_c1):
7886 LOG: available indexes for BitmapScanRegexp(p1_c1_c2):
7887 LOG: available indexes for BitmapScanRegexp(p1_c3_c1):
7888 LOG: available indexes for BitmapScanRegexp(p1_c3_c2):
7891 BitmapScanRegexp(p1 p1[^_].*)
7897 ----------------------------
7901 -> Seq Scan on p1_c1
7903 -> Seq Scan on p1_c2
7905 -> Seq Scan on p1_c3
7907 -> Seq Scan on p1_c4
7909 -> Seq Scan on p1_c1_c1
7911 -> Seq Scan on p1_c1_c2
7913 -> Seq Scan on p1_c3_c1
7915 -> Seq Scan on p1_c3_c2
7919 /*+ BitmapScan(p1 p1_.*val2.*)*/
7920 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7921 LOG: available indexes for BitmapScan(p1):
7922 LOG: available indexes for BitmapScan(p1_c1):
7923 LOG: available indexes for BitmapScan(p1_c2):
7924 LOG: available indexes for BitmapScan(p1_c3):
7925 LOG: available indexes for BitmapScan(p1_c4):
7926 LOG: available indexes for BitmapScan(p1_c1_c1):
7927 LOG: available indexes for BitmapScan(p1_c1_c2):
7928 LOG: available indexes for BitmapScan(p1_c3_c1):
7929 LOG: available indexes for BitmapScan(p1_c3_c2):
7932 BitmapScan(p1 p1_.*val2.*)
7938 ----------------------------
7942 -> Seq Scan on p1_c1
7944 -> Seq Scan on p1_c2
7946 -> Seq Scan on p1_c3
7948 -> Seq Scan on p1_c4
7950 -> Seq Scan on p1_c1_c1
7952 -> Seq Scan on p1_c1_c2
7954 -> Seq Scan on p1_c3_c1
7956 -> Seq Scan on p1_c3_c2
7960 -- search from hint table
7961 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?;', '', 'SeqScan(t1)');
7962 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?;', '', 'IndexScan(t1)');
7963 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN SELECT * FROM t1 WHERE t1.id = ?;', '', 'BitmapScan(t1)');
7964 SELECT * FROM hint_plan.hints ORDER BY id;
7965 id | norm_query_string | application_name | hints
7966 ----+----------------------------------------------------------+------------------+----------------
7967 1 | EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?; | | SeqScan(t1)
7968 2 | EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?; | | IndexScan(t1)
7969 3 | EXPLAIN SELECT * FROM t1 WHERE t1.id = ?; | | BitmapScan(t1)
7972 SET pg_hint_plan.enable_hint_table = on;
7973 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7982 --------------------
7987 SET pg_hint_plan.enable_hint_table = off;
7988 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7990 --------------------------------
7991 Index Scan using t1_pkey on t1
7992 Index Cond: (id = 1)
7995 TRUNCATE hint_plan.hints;
7996 VACUUM ANALYZE hint_plan.hints;
7998 EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = 1;
8000 -------------------------------------
8001 Index Only Scan using t1_pkey on t1
8002 Index Cond: (id = 1)
8006 CREATE FUNCTION testfunc() RETURNS RECORD AS $$
8010 SELECT /*+ SeqScan(t1) */ * INTO ret FROM t1 LIMIT 1;
8013 $$ LANGUAGE plpgsql;
8022 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 LIMIT 1"
8023 PL/pgSQL function testfunc() line 5 at SQL statement
8030 DROP FUNCTION testfunc();
8031 CREATE FUNCTION testfunc() RETURNS void AS $$
8033 EXECUTE format('/*+ SeqScan(t1) */ SELECT * FROM t1');
8035 $$ LANGUAGE plpgsql;
8044 CONTEXT: SQL statement "/*+ SeqScan(t1) */ SELECT * FROM t1"
8045 PL/pgSQL function testfunc() line 3 at EXECUTE
8051 -- This should not use SeqScan(t1)
8052 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8066 DROP FUNCTION testfunc();
8067 CREATE FUNCTION testfunc() RETURNS void AS $$
8069 PERFORM 1, /*+ SeqScan(t1) */ * from t1;
8071 $$ LANGUAGE plpgsql;
8080 CONTEXT: SQL statement "SELECT 1, /*+ SeqScan(t1) */ * from t1"
8081 PL/pgSQL function testfunc() line 3 at PERFORM
8088 DROP FUNCTION testfunc();
8089 CREATE FUNCTION testfunc() RETURNS int AS $$
8095 FOR v IN SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id LOOP
8100 $$ LANGUAGE plpgsql;
8109 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id"
8110 PL/pgSQL function testfunc() line 7 at FOR over SELECT rows
8117 DROP FUNCTION testfunc();
8118 CREATE FUNCTION testfunc() RETURNS int AS $$
8125 FOR v IN EXECUTE 'SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id' LOOP
8130 $$ LANGUAGE plpgsql;
8139 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id"
8140 PL/pgSQL function testfunc() line 8 at FOR over EXECUTE statement
8147 DROP FUNCTION testfunc();
8148 CREATE FUNCTION testfunc() RETURNS int AS $$
8150 ref CURSOR FOR SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8155 sum := sum + rec.val;
8159 $$ LANGUAGE plpgsql;
8168 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8169 PL/pgSQL function testfunc() line 7 at FOR over cursor
8176 DROP FUNCTION testfunc();
8177 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8179 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8181 $$ LANGUAGE plpgsql;
8182 SELECT * FROM testfunc() LIMIT 1;
8190 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8191 PL/pgSQL function testfunc() line 3 at RETURN QUERY
8197 -- Test for error exit from inner SQL statement.
8198 DROP FUNCTION testfunc();
8199 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8201 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id;
8203 $$ LANGUAGE plpgsql;
8204 SELECT * FROM testfunc() LIMIT 1;
8205 ERROR: relation "ttx" does not exist
8206 LINE 1: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8208 QUERY: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8209 CONTEXT: PL/pgSQL function testfunc() line 3 at RETURN QUERY
8210 -- this should not use SeqScan(t1) hint.
8211 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8224 DROP FUNCTION testfunc();
8225 DROP EXTENSION pg_hint_plan;
8226 CREATE FUNCTION reset_stats_and_wait() RETURNS void AS $$
8232 PERFORM pg_stat_reset();
8233 PERFORM pg_sleep(0.5);
8234 SELECT sum(seq_scan + idx_scan) from pg_stat_user_tables into rows;
8237 $$ LANGUAGE plpgsql;
8238 -- Dynamic query in pl/pgsql
8239 CREATE OR REPLACE FUNCTION dynsql1(x int) RETURNS int AS $$
8242 EXECUTE '/*+ IndexScan(t1) */ SELECT count(*) FROM t1 WHERE id < $1'
8246 $$ VOLATILE LANGUAGE plpgsql;
8248 SET pg_hint_plan.enable_hint = false;
8255 SELECT reset_stats_and_wait();
8256 reset_stats_and_wait
8257 ----------------------
8261 SELECT dynsql1(9000);
8273 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';
8274 relname | seq_scan | idx_scan
8275 ---------+----------+----------
8279 SET pg_hint_plan.enable_hint = true;
8286 SELECT reset_stats_and_wait();
8287 reset_stats_and_wait
8288 ----------------------
8292 SELECT dynsql1(9000);
8300 CONTEXT: SQL statement "/*+ IndexScan(t1) */ SELECT count(*) FROM t1 WHERE id < $1"
8301 PL/pgSQL function dynsql1(integer) line 4 at EXECUTE
8313 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';
8314 relname | seq_scan | idx_scan
8315 ---------+----------+----------
8319 -- Looped dynamic query in pl/pgsql
8320 CREATE OR REPLACE FUNCTION dynsql2(x int, OUT r int) AS $$
8326 FOR c IN SELECT f.f FROM (VALUES ('p1_c1'), ('p1_c2')) f(f) LOOP
8327 FOR s IN EXECUTE '/*+ IndexScan(' || c || ' ' || c || '_pkey) */ SELECT sum(val) FROM ' || c || ' WHERE id < ' || x LOOP
8332 $$ VOLATILE LANGUAGE plpgsql;
8333 SET pg_hint_plan.enable_hint = false;
8340 SELECT reset_stats_and_wait();
8341 reset_stats_and_wait
8342 ----------------------
8346 SELECT dynsql2(9000);
8358 -- one of the index scans happened while planning.
8359 SELECT relname, seq_scan, idx_scan FROM pg_stat_user_tables WHERE schemaname = 'public' AND (relname = 'p1_c1' OR relname = 'p1_c2');
8360 relname | seq_scan | idx_scan
8361 ---------+----------+----------
8366 SET pg_hint_plan.enable_hint = true;
8373 SELECT reset_stats_and_wait();
8374 reset_stats_and_wait
8375 ----------------------
8379 SELECT dynsql2(9000);
8380 LOG: available indexes for IndexScan(p1_c1): p1_c1_pkey
8381 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8382 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8383 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_pkey
8384 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8385 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8386 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_pkey
8387 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8388 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8391 IndexScan(p1_c1 p1_c1_pkey)
8396 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8397 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8398 LOG: available indexes for IndexScan(p1_c2): p1_c2_pkey
8399 CONTEXT: SQL statement "/*+ IndexScan(p1_c2 p1_c2_pkey) */ SELECT sum(val) FROM p1_c2 WHERE id < 9000"
8400 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8403 IndexScan(p1_c2 p1_c2_pkey)
8408 CONTEXT: SQL statement "/*+ IndexScan(p1_c2 p1_c2_pkey) */ SELECT sum(val) FROM p1_c2 WHERE id < 9000"
8409 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8421 -- the index scan happened while planning.
8422 SELECT relname, seq_scan, idx_scan FROM pg_stat_user_tables WHERE schemaname = 'public' AND (relname = 'p1_c1' OR relname = 'p1_c2');
8423 relname | seq_scan | idx_scan
8424 ---------+----------+----------
8429 -- Subqueries on inheritance tables under UNION
8430 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8432 SELECT val::int FROM p2 WHERE id < 1000;
8434 -----------------------------------------
8438 Filter: (val < 1000)
8439 -> Seq Scan on p1_c1
8440 Filter: (val < 1000)
8441 -> Seq Scan on p1_c2
8442 Filter: (val < 1000)
8443 -> Seq Scan on p1_c3
8444 Filter: (val < 1000)
8445 -> Seq Scan on p1_c4
8446 Filter: (val < 1000)
8447 -> Seq Scan on p1_c1_c1
8448 Filter: (val < 1000)
8449 -> Seq Scan on p1_c1_c2
8450 Filter: (val < 1000)
8451 -> Seq Scan on p1_c3_c1
8452 Filter: (val < 1000)
8453 -> Seq Scan on p1_c3_c2
8454 Filter: (val < 1000)
8459 -> Seq Scan on p2_c1
8461 -> Seq Scan on p2_c2
8463 -> Seq Scan on p2_c3
8465 -> Seq Scan on p2_c4
8467 -> Seq Scan on p2_c1_c1
8469 -> Seq Scan on p2_c1_c2
8471 -> Seq Scan on p2_c3_c1
8473 -> Seq Scan on p2_c3_c2
8477 /*+ IndexScan(p1 p1_val2) */
8478 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8480 SELECT val::int FROM p2 WHERE id < 1000;
8481 LOG: available indexes for IndexScan(p1): p1_val3 p1_val2 p1_val1
8482 LOG: available indexes for IndexScan(p1_c1): p1_c1_val3 p1_c1_val2 p1_c1_val1
8483 LOG: available indexes for IndexScan(p1_c2): p1_c2_val3 p1_c2_val2 p1_c2_val1
8484 LOG: available indexes for IndexScan(p1_c3): p1_c3_val3 p1_c3_val2 p1_c3_val1
8485 LOG: available indexes for IndexScan(p1_c4): p1_c4_val3 p1_c4_val2 p1_c4_val1
8486 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_val3 p1_c1_c1_val2 p1_c1_c1_val1
8487 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_val3 p1_c1_c2_val2 p1_c1_c2_val1
8488 LOG: available indexes for IndexScan(p1_c3_c1): p1_c3_c1_val3 p1_c3_c1_val2 p1_c3_c1_val1
8489 LOG: available indexes for IndexScan(p1_c3_c2): p1_c3_c2_val3 p1_c3_c2_val2 p1_c3_c2_val1
8492 IndexScan(p1 p1_val2)
8498 --------------------------------------------------------
8501 -> Index Scan using p1_val3 on p1
8502 Index Cond: (val < 1000)
8503 -> Index Scan using p1_c1_val3 on p1_c1
8504 Index Cond: (val < 1000)
8505 -> Index Scan using p1_c2_val3 on p1_c2
8506 Index Cond: (val < 1000)
8507 -> Index Scan using p1_c3_val3 on p1_c3
8508 Index Cond: (val < 1000)
8509 -> Index Scan using p1_c4_val3 on p1_c4
8510 Index Cond: (val < 1000)
8511 -> Index Scan using p1_c1_c1_val3 on p1_c1_c1
8512 Index Cond: (val < 1000)
8513 -> Index Scan using p1_c1_c2_val3 on p1_c1_c2
8514 Index Cond: (val < 1000)
8515 -> Index Scan using p1_c3_c1_val3 on p1_c3_c1
8516 Index Cond: (val < 1000)
8517 -> Index Scan using p1_c3_c2_val3 on p1_c3_c2
8518 Index Cond: (val < 1000)
8523 -> Seq Scan on p2_c1
8525 -> Seq Scan on p2_c2
8527 -> Seq Scan on p2_c3
8529 -> Seq Scan on p2_c4
8531 -> Seq Scan on p2_c1_c1
8533 -> Seq Scan on p2_c1_c2
8535 -> Seq Scan on p2_c3_c1
8537 -> Seq Scan on p2_c3_c2
8541 /*+ IndexScan(p1 p1_val2) IndexScan(p2 p2_id_val_idx) */
8542 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8544 SELECT val::int FROM p2 WHERE id < 1000;
8545 LOG: available indexes for IndexScan(p1): p1_val3 p1_val2 p1_val1
8546 LOG: available indexes for IndexScan(p1_c1): p1_c1_val3 p1_c1_val2 p1_c1_val1
8547 LOG: available indexes for IndexScan(p1_c2): p1_c2_val3 p1_c2_val2 p1_c2_val1
8548 LOG: available indexes for IndexScan(p1_c3): p1_c3_val3 p1_c3_val2 p1_c3_val1
8549 LOG: available indexes for IndexScan(p1_c4): p1_c4_val3 p1_c4_val2 p1_c4_val1
8550 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_val3 p1_c1_c1_val2 p1_c1_c1_val1
8551 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_val3 p1_c1_c2_val2 p1_c1_c2_val1
8552 LOG: available indexes for IndexScan(p1_c3_c1): p1_c3_c1_val3 p1_c3_c1_val2 p1_c3_c1_val1
8553 LOG: available indexes for IndexScan(p1_c3_c2): p1_c3_c2_val3 p1_c3_c2_val2 p1_c3_c2_val1
8554 LOG: available indexes for IndexScan(p2): p2_id_val_idx
8555 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
8556 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
8557 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
8558 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
8559 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
8560 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
8561 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
8562 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
8565 IndexScan(p1 p1_val2)
8566 IndexScan(p2 p2_id_val_idx)
8572 --------------------------------------------------------------------
8575 -> Index Scan using p1_val3 on p1
8576 Index Cond: (val < 1000)
8577 -> Index Scan using p1_c1_val3 on p1_c1
8578 Index Cond: (val < 1000)
8579 -> Index Scan using p1_c2_val3 on p1_c2
8580 Index Cond: (val < 1000)
8581 -> Index Scan using p1_c3_val3 on p1_c3
8582 Index Cond: (val < 1000)
8583 -> Index Scan using p1_c4_val3 on p1_c4
8584 Index Cond: (val < 1000)
8585 -> Index Scan using p1_c1_c1_val3 on p1_c1_c1
8586 Index Cond: (val < 1000)
8587 -> Index Scan using p1_c1_c2_val3 on p1_c1_c2
8588 Index Cond: (val < 1000)
8589 -> Index Scan using p1_c3_c1_val3 on p1_c3_c1
8590 Index Cond: (val < 1000)
8591 -> Index Scan using p1_c3_c2_val3 on p1_c3_c2
8592 Index Cond: (val < 1000)
8595 -> Index Scan using p2_id_val_idx on p2
8596 Index Cond: (id < 1000)
8597 -> Index Scan using p2_c1_id_val_idx on p2_c1
8598 Index Cond: (id < 1000)
8599 -> Index Scan using p2_c2_id_val_idx on p2_c2
8600 Index Cond: (id < 1000)
8601 -> Index Scan using p2_c3_id_val_idx on p2_c3
8602 Index Cond: (id < 1000)
8603 -> Index Scan using p2_c4_id_val_idx on p2_c4
8604 Index Cond: (id < 1000)
8605 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
8606 Index Cond: (id < 1000)
8607 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
8608 Index Cond: (id < 1000)
8609 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1
8610 Index Cond: (id < 1000)
8611 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2
8612 Index Cond: (id < 1000)
8616 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8618 SELECT val::int FROM p2 WHERE id < 1000;
8620 -----------------------------------------------
8626 Filter: (val < 1000)
8627 -> Seq Scan on p1_c1
8628 Filter: (val < 1000)
8629 -> Seq Scan on p1_c2
8630 Filter: (val < 1000)
8631 -> Seq Scan on p1_c3
8632 Filter: (val < 1000)
8633 -> Seq Scan on p1_c4
8634 Filter: (val < 1000)
8635 -> Seq Scan on p1_c1_c1
8636 Filter: (val < 1000)
8637 -> Seq Scan on p1_c1_c2
8638 Filter: (val < 1000)
8639 -> Seq Scan on p1_c3_c1
8640 Filter: (val < 1000)
8641 -> Seq Scan on p1_c3_c2
8642 Filter: (val < 1000)
8647 -> Seq Scan on p2_c1
8649 -> Seq Scan on p2_c2
8651 -> Seq Scan on p2_c3
8653 -> Seq Scan on p2_c4
8655 -> Seq Scan on p2_c1_c1
8657 -> Seq Scan on p2_c1_c2
8659 -> Seq Scan on p2_c3_c1
8661 -> Seq Scan on p2_c3_c2
8665 /*+ IndexScan(p2 p2_id_val_idx) */
8666 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8668 SELECT val::int FROM p2 WHERE id < 1000;
8669 LOG: available indexes for IndexScan(p2): p2_id_val_idx
8670 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
8671 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
8672 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
8673 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
8674 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
8675 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
8676 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
8677 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
8680 IndexScan(p2 p2_id_val_idx)
8686 --------------------------------------------------------------------------
8692 Filter: (val < 1000)
8693 -> Seq Scan on p1_c1
8694 Filter: (val < 1000)
8695 -> Seq Scan on p1_c2
8696 Filter: (val < 1000)
8697 -> Seq Scan on p1_c3
8698 Filter: (val < 1000)
8699 -> Seq Scan on p1_c4
8700 Filter: (val < 1000)
8701 -> Seq Scan on p1_c1_c1
8702 Filter: (val < 1000)
8703 -> Seq Scan on p1_c1_c2
8704 Filter: (val < 1000)
8705 -> Seq Scan on p1_c3_c1
8706 Filter: (val < 1000)
8707 -> Seq Scan on p1_c3_c2
8708 Filter: (val < 1000)
8711 -> Index Scan using p2_id_val_idx on p2
8712 Index Cond: (id < 1000)
8713 -> Index Scan using p2_c1_id_val_idx on p2_c1
8714 Index Cond: (id < 1000)
8715 -> Index Scan using p2_c2_id_val_idx on p2_c2
8716 Index Cond: (id < 1000)
8717 -> Index Scan using p2_c3_id_val_idx on p2_c3
8718 Index Cond: (id < 1000)
8719 -> Index Scan using p2_c4_id_val_idx on p2_c4
8720 Index Cond: (id < 1000)
8721 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
8722 Index Cond: (id < 1000)
8723 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
8724 Index Cond: (id < 1000)
8725 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1
8726 Index Cond: (id < 1000)
8727 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2
8728 Index Cond: (id < 1000)
8731 /*+ IndexScan(p1 p1_val2) IndexScan(p2 p2_id_val_idx) */
8732 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8734 SELECT val::int FROM p2 WHERE id < 1000;
8735 LOG: available indexes for IndexScan(p1): p1_val3 p1_val2 p1_val1
8736 LOG: available indexes for IndexScan(p1_c1): p1_c1_val3 p1_c1_val2 p1_c1_val1
8737 LOG: available indexes for IndexScan(p1_c2): p1_c2_val3 p1_c2_val2 p1_c2_val1
8738 LOG: available indexes for IndexScan(p1_c3): p1_c3_val3 p1_c3_val2 p1_c3_val1
8739 LOG: available indexes for IndexScan(p1_c4): p1_c4_val3 p1_c4_val2 p1_c4_val1
8740 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_val3 p1_c1_c1_val2 p1_c1_c1_val1
8741 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_val3 p1_c1_c2_val2 p1_c1_c2_val1
8742 LOG: available indexes for IndexScan(p1_c3_c1): p1_c3_c1_val3 p1_c3_c1_val2 p1_c3_c1_val1
8743 LOG: available indexes for IndexScan(p1_c3_c2): p1_c3_c2_val3 p1_c3_c2_val2 p1_c3_c2_val1
8744 LOG: available indexes for IndexScan(p2): p2_id_val_idx
8745 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
8746 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
8747 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
8748 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
8749 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
8750 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
8751 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
8752 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
8755 IndexScan(p1 p1_val2)
8756 IndexScan(p2 p2_id_val_idx)
8762 --------------------------------------------------------------------------
8767 -> Index Scan using p1_val3 on p1
8768 Index Cond: (val < 1000)
8769 -> Index Scan using p1_c1_val3 on p1_c1
8770 Index Cond: (val < 1000)
8771 -> Index Scan using p1_c2_val3 on p1_c2
8772 Index Cond: (val < 1000)
8773 -> Index Scan using p1_c3_val3 on p1_c3
8774 Index Cond: (val < 1000)
8775 -> Index Scan using p1_c4_val3 on p1_c4
8776 Index Cond: (val < 1000)
8777 -> Index Scan using p1_c1_c1_val3 on p1_c1_c1
8778 Index Cond: (val < 1000)
8779 -> Index Scan using p1_c1_c2_val3 on p1_c1_c2
8780 Index Cond: (val < 1000)
8781 -> Index Scan using p1_c3_c1_val3 on p1_c3_c1
8782 Index Cond: (val < 1000)
8783 -> Index Scan using p1_c3_c2_val3 on p1_c3_c2
8784 Index Cond: (val < 1000)
8787 -> Index Scan using p2_id_val_idx on p2
8788 Index Cond: (id < 1000)
8789 -> Index Scan using p2_c1_id_val_idx on p2_c1
8790 Index Cond: (id < 1000)
8791 -> Index Scan using p2_c2_id_val_idx on p2_c2
8792 Index Cond: (id < 1000)
8793 -> Index Scan using p2_c3_id_val_idx on p2_c3
8794 Index Cond: (id < 1000)
8795 -> Index Scan using p2_c4_id_val_idx on p2_c4
8796 Index Cond: (id < 1000)
8797 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
8798 Index Cond: (id < 1000)
8799 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
8800 Index Cond: (id < 1000)
8801 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1
8802 Index Cond: (id < 1000)
8803 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2
8804 Index Cond: (id < 1000)
8810 -- Explain result includes "Planning time" if COSTS is enabled, but
8811 -- this test needs it enabled for get rows count. So do tests via psql
8812 -- and grep -v the mutable line.
8813 -- Parse error check
8814 /*+ Rows() */ SELECT 1;
8815 INFO: pg_hint_plan: hint syntax error at or near " "
8816 DETAIL: Rows hint needs at least one relation followed by one correction term.
8829 /*+ Rows(x) */ SELECT 1;
8830 INFO: pg_hint_plan: hint syntax error at or near " "
8831 DETAIL: Rows hint needs at least one relation followed by one correction term.
8845 \o results/pg_hint_plan.tmpout
8846 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8848 \! sql/maskout.sh results/pg_hint_plan.tmpout
8850 ------------------------------------------------------------------------------
8851 Merge Join (cost=xxx rows=1000 width=xxx)
8852 Merge Cond: (t1.id = t2.id)
8853 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8854 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8857 \o results/pg_hint_plan.tmpout
8858 /*+ Rows(t1 t2 #99) */
8859 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8868 \! sql/maskout.sh results/pg_hint_plan.tmpout
8870 ------------------------------------------------------------------------------
8871 Merge Join (cost=xxx rows=99 width=xxx)
8872 Merge Cond: (t1.id = t2.id)
8873 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8874 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8877 \o results/pg_hint_plan.tmpout
8878 /*+ Rows(t1 t2 +99) */
8879 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8888 \! sql/maskout.sh results/pg_hint_plan.tmpout
8890 ------------------------------------------------------------------------------
8891 Merge Join (cost=xxx rows=1099 width=xxx)
8892 Merge Cond: (t1.id = t2.id)
8893 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8894 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8897 \o results/pg_hint_plan.tmpout
8898 /*+ Rows(t1 t2 -99) */
8899 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8908 \! sql/maskout.sh results/pg_hint_plan.tmpout
8910 ------------------------------------------------------------------------------
8911 Merge Join (cost=xxx rows=901 width=xxx)
8912 Merge Cond: (t1.id = t2.id)
8913 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8914 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8917 \o results/pg_hint_plan.tmpout
8918 /*+ Rows(t1 t2 *99) */
8919 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8928 \! sql/maskout.sh results/pg_hint_plan.tmpout
8930 ------------------------------------------------------------------------------
8931 Merge Join (cost=xxx rows=99000 width=xxx)
8932 Merge Cond: (t1.id = t2.id)
8933 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8934 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8937 \o results/pg_hint_plan.tmpout
8938 /*+ Rows(t1 t2 *0.01) */
8939 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8948 \! sql/maskout.sh results/pg_hint_plan.tmpout
8950 ------------------------------------------------------------------------------
8951 Merge Join (cost=xxx rows=10 width=xxx)
8952 Merge Cond: (t1.id = t2.id)
8953 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8954 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8957 \o results/pg_hint_plan.tmpout
8958 /*+ Rows(t1 t2 #aa) */
8959 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8960 INFO: pg_hint_plan: hint syntax error at or near "aa"
8961 DETAIL: Rows hint requires valid number as rows estimation.
8970 \! sql/maskout.sh results/pg_hint_plan.tmpout
8972 ------------------------------------------------------------------------------
8973 Merge Join (cost=xxx rows=1000 width=xxx)
8974 Merge Cond: (t1.id = t2.id)
8975 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8976 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8979 \o results/pg_hint_plan.tmpout
8980 /*+ Rows(t1 t2 /99) */
8981 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8982 INFO: pg_hint_plan: hint syntax error at or near "/99"
8983 DETAIL: Unrecognized rows value type notation.
8992 \! sql/maskout.sh results/pg_hint_plan.tmpout
8994 ------------------------------------------------------------------------------
8995 Merge Join (cost=xxx rows=1000 width=xxx)
8996 Merge Cond: (t1.id = t2.id)
8997 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8998 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
9002 \o results/pg_hint_plan.tmpout
9003 /*+ Rows(t1 t2 -99999) */
9004 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
9005 WARNING: Force estimate to be at least one row, to avoid possible divide-by-zero when interpolating costs : Rows(t1 t2 -99999)
9014 \! sql/maskout.sh results/pg_hint_plan.tmpout
9016 ------------------------------------------------------------------------------
9017 Merge Join (cost=xxx rows=1 width=xxx)
9018 Merge Cond: (t1.id = t2.id)
9019 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
9020 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
9023 -- complex join tree
9024 \o results/pg_hint_plan.tmpout
9025 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
9027 \! sql/maskout.sh results/pg_hint_plan.tmpout
9029 ------------------------------------------------------------------------------------
9030 Merge Join (cost=xxx rows=10 width=xxx)
9031 Merge Cond: (t1.id = t3.id)
9032 -> Merge Join (cost=xxx rows=1000 width=xxx)
9033 Merge Cond: (t1.id = t2.id)
9034 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
9035 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
9036 -> Sort (cost=xxx rows=100 width=xxx)
9038 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
9041 \o results/pg_hint_plan.tmpout
9042 /*+ Rows(t1 t2 #22) */
9043 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
9052 \! sql/maskout.sh results/pg_hint_plan.tmpout
9054 ------------------------------------------------------------------------------------
9055 Merge Join (cost=xxx rows=1 width=xxx)
9056 Merge Cond: (t1.id = t3.id)
9057 -> Merge Join (cost=xxx rows=22 width=xxx)
9058 Merge Cond: (t1.id = t2.id)
9059 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
9060 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
9061 -> Sort (cost=xxx rows=100 width=xxx)
9063 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
9066 \o results/pg_hint_plan.tmpout
9067 /*+ Rows(t1 t3 *10) */
9068 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
9077 set max_parallel_workers_per_gather to DEFAULT;
9078 \! sql/maskout.sh results/pg_hint_plan.tmpout
9080 ------------------------------------------------------------------------------------
9081 Merge Join (cost=xxx rows=100 width=xxx)
9082 Merge Cond: (t1.id = t3.id)
9083 -> Merge Join (cost=xxx rows=1000 width=xxx)
9084 Merge Cond: (t1.id = t2.id)
9085 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
9086 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
9087 -> Sort (cost=xxx rows=100 width=xxx)
9089 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
9092 \! rm results/pg_hint_plan.tmpout
9094 set client_min_messages to 'DEBUG1';
9095 set pg_hint_plan.debug_level to 'verbose';
9096 /*+ SeqScan( */ SELECT 1;
9097 INFO: pg_hint_plan: hint syntax error at or near ""
9098 DETAIL: Closing parenthesis is necessary.
9104 /*+ SeqScan(t1) */ SELECT * FROM t1 LIMIT 0;
9116 set pg_hint_plan.message_level to 'DEBUG1';
9117 set pg_hint_plan.parse_messages to 'NOTICE';
9118 /*+ SeqScan( */ SELECT 1;
9119 NOTICE: pg_hint_plan: hint syntax error at or near ""
9120 DETAIL: Closing parenthesis is necessary.
9126 /*+ SeqScan(t1) */ SELECT * FROM t1 LIMIT 0;
9127 DEBUG: pg_hint_plan: