1 SET search_path TO public;
2 SET client_min_messages TO log;
3 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
5 --------------------------------------
7 Merge Cond: (t1.id = t2.id)
8 -> Index Scan using t1_pkey on t1
9 -> Index Scan using t2_pkey on t2
12 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.val = t2.val;
14 -------------------------------------------
16 Merge Cond: (t2.val = t1.val)
17 -> Index Scan using t2_val on t2
19 -> Index Scan using t1_val on t1
23 SET pg_hint_plan.debug_print TO on;
24 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
26 --------------------------------------
28 Merge Cond: (t1.id = t2.id)
29 -> Index Scan using t1_pkey on t1
30 -> Index Scan using t2_pkey on t2
33 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.val = t2.val;
35 -------------------------------------------
37 Merge Cond: (t2.val = t1.val)
38 -> Index Scan using t2_val on t2
40 -> Index Scan using t1_val on t1
44 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
45 INFO: pg_hint_plan: hint syntax error at or near "Test (t1 t2) "
46 DETAIL: Unrecognized hint keyword "Test".
48 --------------------------------------
50 Merge Cond: (t1.id = t2.id)
51 -> Index Scan using t1_pkey on t1
52 -> Index Scan using t2_pkey on t2
55 SET pg_hint_plan.enable_hint TO off;
57 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
59 --------------------------------------
61 Merge Cond: (t1.id = t2.id)
62 -> Index Scan using t1_pkey on t1
63 -> Index Scan using t2_pkey on t2
66 SET pg_hint_plan.enable_hint TO on;
67 /*Set(enable_indexscan off)*/
68 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
70 --------------------------------------
72 Merge Cond: (t1.id = t2.id)
73 -> Index Scan using t1_pkey on t1
74 -> Index Scan using t2_pkey on t2
77 --+Set(enable_indexscan off)
78 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
80 --------------------------------------
82 Merge Cond: (t1.id = t2.id)
83 -> Index Scan using t1_pkey on t1
84 -> Index Scan using t2_pkey on t2
87 /*+Set(enable_indexscan off) /* nest comment */ */
88 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
89 INFO: pg_hint_plan: hint syntax error at or near "/* nest comment */ */
90 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;"
91 DETAIL: Nested block comments are not supported.
93 --------------------------------------
95 Merge Cond: (t1.id = t2.id)
96 -> Index Scan using t1_pkey on t1
97 -> Index Scan using t2_pkey on t2
100 /*+Set(enable_indexscan off)*/
101 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
104 Set(enable_indexscan off)
110 ------------------------------
112 Hash Cond: (t1.id = t2.id)
118 EXPLAIN (COSTS false) /*+Set(enable_indexscan off)*/
119 SELECT * FROM t1, t2 WHERE t1.id = t2.id;
122 Set(enable_indexscan off)
128 ------------------------------
130 Hash Cond: (t1.id = t2.id)
136 /*+ Set(enable_indexscan off) Set(enable_hashjoin off) */
137 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
140 Set(enable_hashjoin off)
141 Set(enable_indexscan off)
147 -------------------------------
149 Merge Cond: (t1.id = t2.id)
158 /*+ Set ( enable_indexscan off ) */
159 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
162 Set(enable_indexscan off)
168 ------------------------------
170 Hash Cond: (t1.id = t2.id)
183 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
186 Set(enable_indexscan off)
192 ------------------------------
194 Hash Cond: (t1.id = t2.id)
200 /*+ Set(enable_indexscan off)Set(enable_nestloop off)Set(enable_mergejoin off)
201 Set(enable_seqscan off)
203 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
206 Set(enable_indexscan off)
207 Set(enable_mergejoin off)
208 Set(enable_nestloop off)
209 Set(enable_seqscan off)
215 --------------------------------------------
217 Hash Cond: (t1.id = t2.id)
218 -> Index Scan using t1_pkey on t1
220 -> Index Scan using t2_pkey on t2
223 /*+Set(work_mem "1M")*/
224 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
225 INFO: invalid value for parameter "work_mem": "1M"
226 HINT: Valid units for this parameter are "kB", "MB", "GB", and "TB".
235 --------------------------------------
237 Merge Cond: (t1.id = t2.id)
238 -> Index Scan using t1_pkey on t1
239 -> Index Scan using t2_pkey on t2
242 /*+Set(work_mem "1MB")*/
243 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
252 --------------------------------------
254 Merge Cond: (t1.id = t2.id)
255 -> Index Scan using t1_pkey on t1
256 -> Index Scan using t2_pkey on t2
259 /*+Set(work_mem TO "1MB")*/
260 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
261 INFO: pg_hint_plan: hint syntax error at or near "Set(work_mem TO "1MB")"
262 DETAIL: Set hint requires name and value of GUC parameter.
271 --------------------------------------
273 Merge Cond: (t1.id = t2.id)
274 -> Index Scan using t1_pkey on t1
275 -> Index Scan using t2_pkey on t2
279 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
280 INFO: pg_hint_plan: hint syntax error at or near ""
281 DETAIL: SeqScan hint accepts only one relation.
290 --------------------------------------
292 Merge Cond: (t1.id = t2.id)
293 -> Index Scan using t1_pkey on t1
294 -> Index Scan using t2_pkey on t2
298 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
307 ------------------------------
309 Hash Cond: (t1.id = t2.id)
315 /*+SeqScan(t1)IndexScan(t2)*/
316 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
326 --------------------------------------------
328 Hash Cond: (t1.id = t2.id)
331 -> Index Scan using t2_pkey on t2
335 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
344 ------------------------------------------
347 -> Bitmap Heap Scan on t2
348 Recheck Cond: (id = t1.id)
349 -> Bitmap Index Scan on t2_pkey
350 Index Cond: (id = t1.id)
353 /*+BitmapScan(t2)NoSeqScan(t1)*/
354 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
364 ------------------------------------------
366 -> Index Scan using t1_pkey on t1
367 -> Bitmap Heap Scan on t2
368 Recheck Cond: (id = t1.id)
369 -> Bitmap Index Scan on t2_pkey
370 Index Cond: (id = t1.id)
374 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
383 ------------------------------
385 Hash Cond: (t1.id = t2.id)
391 /*+NoBitmapScan(t1)*/
392 EXPLAIN (COSTS false) SELECT * FROM t1, t4 WHERE t1.val < 10;
401 ----------------------------
410 EXPLAIN (COSTS false) SELECT * FROM t3, t4 WHERE t3.id = t4.id AND t4.ctid = '(1,1)';
419 -----------------------------------------------
421 Merge Cond: (t3.id = t4.id)
422 -> Index Scan using t3_pkey on t3
426 TID Cond: (ctid = '(1,1)'::tid)
430 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)';
439 ---------------------------------------
442 Filter: (ctid = '(1,1)'::tid)
443 -> Index Scan using t2_pkey on t2
444 Index Cond: (id = t1.id)
448 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
457 ------------------------------
459 Hash Cond: (t1.id = t2.id)
466 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
475 --------------------------------------
478 -> Index Scan using t1_pkey on t1
479 Index Cond: (id = t2.id)
482 /*+NoMergeJoin(t1 t2)*/
483 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
492 ------------------------------
494 Hash Cond: (t1.id = t2.id)
500 /*+MergeJoin(t1 t3)*/
501 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
510 -------------------------------------
512 Merge Cond: (t1.val = t3.val)
513 -> Index Scan using t1_val on t1
520 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
529 -------------------------------------
532 -> Index Scan using t1_val on t1
533 Index Cond: (val = t3.val)
536 /*+NoHashJoin(t1 t3)*/
537 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
546 -------------------------------------
549 -> Index Scan using t1_val on t1
550 Index Cond: (val = t3.val)
553 /*+MergeJoin(t4 t1 t2 t3)*/
554 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
557 MergeJoin(t1 t2 t3 t4)
563 --------------------------------------------------
565 Merge Cond: (t1.id = t3.id)
567 Merge Cond: (t1.id = t2.id)
568 -> Index Scan using t1_pkey on t1
569 -> Index Scan using t2_pkey on t2
572 Merge Cond: (t3.id = t4.id)
573 -> Index Scan using t3_pkey on t3
579 /*+HashJoin(t3 t4 t1 t2)*/
580 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
583 HashJoin(t1 t2 t3 t4)
589 --------------------------------------------------------
591 Hash Cond: (t3.id = t1.id)
595 Merge Cond: (t1.id = t4.id)
597 Merge Cond: (t1.id = t2.id)
598 -> Index Scan using t1_pkey on t1
599 -> Index Scan using t2_pkey on t2
605 /*+NestLoop(t2 t3 t4 t1) IndexScan(t3)*/
606 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
610 NestLoop(t1 t2 t3 t4)
616 --------------------------------------------------
619 Merge Cond: (t1.id = t4.id)
621 Merge Cond: (t1.id = t2.id)
622 -> Index Scan using t1_pkey on t1
623 -> Index Scan using t2_pkey on t2
627 -> Index Scan using t3_pkey on t3
628 Index Cond: (id = t1.id)
631 /*+NoNestLoop(t4 t1 t3 t2)*/
632 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
635 NoNestLoop(t1 t2 t3 t4)
641 --------------------------------------------------
643 Merge Cond: (t1.id = t3.id)
645 Merge Cond: (t1.id = t2.id)
646 -> Index Scan using t1_pkey on t1
647 -> Index Scan using t2_pkey on t2
650 Merge Cond: (t3.id = t4.id)
651 -> Index Scan using t3_pkey on t3
658 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
659 INFO: pg_hint_plan: hint syntax error at or near ""
660 DETAIL: Closing parenthesis is necessary.
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)
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;
679 INFO: pg_hint_plan: hint syntax error at or near "Leading( )"
680 DETAIL: Leading hint requires at least two relations.
689 --------------------------------------------------
692 Merge Cond: (t1.id = t4.id)
694 Merge Cond: (t1.id = t2.id)
695 -> Index Scan using t1_pkey on t1
696 -> Index Scan using t2_pkey on t2
700 -> Index Scan using t3_pkey on t3
701 Index Cond: (id = t1.id)
705 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
706 INFO: pg_hint_plan: hint syntax error at or near "Leading( t3 )"
707 DETAIL: Leading hint requires at least two relations.
716 --------------------------------------------------
719 Merge Cond: (t1.id = t4.id)
721 Merge Cond: (t1.id = t2.id)
722 -> Index Scan using t1_pkey on t1
723 -> Index Scan using t2_pkey on t2
727 -> Index Scan using t3_pkey on t3
728 Index Cond: (id = t1.id)
731 /*+Leading( t3 t4 )*/
732 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
741 --------------------------------------------------
745 Merge Cond: (t3.id = t4.id)
746 -> Index Scan using t3_pkey on t3
750 -> Index Scan using t2_pkey on t2
751 Index Cond: (id = t3.id)
752 -> Index Scan using t1_pkey on t1
753 Index Cond: (id = t2.id)
756 /*+Leading(t3 t4 t1)*/
757 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
766 --------------------------------------------------
769 Merge Cond: (t3.id = t1.id)
771 Merge Cond: (t3.id = t4.id)
772 -> Index Scan using t3_pkey on t3
776 -> Index Scan using t1_pkey on t1
777 -> Index Scan using t2_pkey on t2
778 Index Cond: (id = t1.id)
781 /*+Leading(t3 t4 t1 t2)*/
782 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
791 --------------------------------------------------
794 Merge Cond: (t3.id = t1.id)
796 Merge Cond: (t3.id = t4.id)
797 -> Index Scan using t3_pkey on t3
801 -> Index Scan using t1_pkey on t1
802 -> Index Scan using t2_pkey on t2
803 Index Cond: (id = t1.id)
806 /*+Leading(t3 t4 t1 t2 t1)*/
807 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
808 INFO: pg_hint_plan: hint syntax error at or near "Leading(t3 t4 t1 t2 t1)"
809 DETAIL: Relation name "t1" is duplicated.
815 Leading(t3 t4 t1 t2 t1)
818 --------------------------------------------------
821 Merge Cond: (t1.id = t4.id)
823 Merge Cond: (t1.id = t2.id)
824 -> Index Scan using t1_pkey on t1
825 -> Index Scan using t2_pkey on t2
829 -> Index Scan using t3_pkey on t3
830 Index Cond: (id = t1.id)
833 /*+Leading(t3 t4 t4)*/
834 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
835 INFO: pg_hint_plan: hint syntax error at or near "Leading(t3 t4 t4)"
836 DETAIL: Relation name "t4" is duplicated.
845 --------------------------------------------------
848 Merge Cond: (t1.id = t4.id)
850 Merge Cond: (t1.id = t2.id)
851 -> Index Scan using t1_pkey on t1
852 -> Index Scan using t2_pkey on t2
856 -> Index Scan using t3_pkey on t3
857 Index Cond: (id = t1.id)
860 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
862 -----------------------------------------------
864 -> Values Scan on "*VALUES*"
865 -> Index Scan using t1_pkey on t1
866 Index Cond: (id = "*VALUES*".column1)
870 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
879 -----------------------------------------------
881 -> Values Scan on "*VALUES*"
882 -> Index Scan using t1_pkey on t1
883 Index Cond: (id = "*VALUES*".column1)
886 /*+HashJoin(t1 *VALUES*)*/
887 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
890 HashJoin(*VALUES* t1)
896 -------------------------------------------
898 Hash Cond: (t1.id = "*VALUES*".column1)
901 -> Values Scan on "*VALUES*"
904 /*+HashJoin(t1 *VALUES*) IndexScan(t1) IndexScan(*VALUES*)*/
905 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
909 HashJoin(*VALUES* t1)
916 -------------------------------------------
918 Hash Cond: (t1.id = "*VALUES*".column1)
919 -> Index Scan using t1_pkey on t1
921 -> Values Scan on "*VALUES*"
924 -- single table scan hint test
925 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);
927 ------------------------------------------------------------------------
928 Index Only Scan using t1_pkey on t1
929 Index Cond: (id = $3)
930 InitPlan 2 (returns $1)
932 InitPlan 1 (returns $0)
934 -> Index Only Scan Backward using t1_pkey on t1 v_1
935 Index Cond: ((id IS NOT NULL) AND (id < 10))
936 InitPlan 4 (returns $3)
938 InitPlan 3 (returns $2)
940 -> Index Only Scan Backward using t1_pkey on t1 v_2
941 Index Cond: ((id IS NOT NULL) AND (id < 10))
945 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);
954 ------------------------------------------------------------------------
955 Index Only Scan using t1_pkey on t1
956 Index Cond: (id = $2)
957 InitPlan 1 (returns $0)
959 -> Bitmap Heap Scan on t1 v_1
960 Recheck Cond: (id < 10)
961 -> Bitmap Index Scan on t1_pkey
962 Index Cond: (id < 10)
963 InitPlan 3 (returns $2)
965 InitPlan 2 (returns $1)
967 -> Index Only Scan Backward using t1_pkey on t1 v_2
968 Index Cond: ((id IS NOT NULL) AND (id < 10))
972 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);
981 ------------------------------------------------------------------------
982 Index Only Scan using t1_pkey on t1
983 Index Cond: (id = $2)
984 InitPlan 2 (returns $1)
986 InitPlan 1 (returns $0)
988 -> Index Only Scan Backward using t1_pkey on t1 v_1
989 Index Cond: ((id IS NOT NULL) AND (id < 10))
990 InitPlan 3 (returns $2)
992 -> Bitmap Heap Scan on t1 v_2
993 Recheck Cond: (id < 10)
994 -> Bitmap Index Scan on t1_pkey
995 Index Cond: (id < 10)
999 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);
1008 ------------------------------------------------------------------------
1009 Bitmap Heap Scan on t1
1010 Recheck Cond: (id = $3)
1011 InitPlan 2 (returns $1)
1013 InitPlan 1 (returns $0)
1015 -> Index Only Scan Backward using t1_pkey on t1 v_1
1016 Index Cond: ((id IS NOT NULL) AND (id < 10))
1017 InitPlan 4 (returns $3)
1019 InitPlan 3 (returns $2)
1021 -> Index Only Scan Backward using t1_pkey on t1 v_2
1022 Index Cond: ((id IS NOT NULL) AND (id < 10))
1023 -> Bitmap Index Scan on t1_pkey
1024 Index Cond: (id = $3)
1027 /*+BitmapScan(v_1)BitmapScan(v_2)*/
1028 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);
1038 --------------------------------------------------
1039 Index Only Scan using t1_pkey on t1
1040 Index Cond: (id = $1)
1041 InitPlan 1 (returns $0)
1043 -> Bitmap Heap Scan on t1 v_1
1044 Recheck Cond: (id < 10)
1045 -> Bitmap Index Scan on t1_pkey
1046 Index Cond: (id < 10)
1047 InitPlan 2 (returns $1)
1049 -> Bitmap Heap Scan on t1 v_2
1050 Recheck Cond: (id < 10)
1051 -> Bitmap Index Scan on t1_pkey
1052 Index Cond: (id < 10)
1055 /*+BitmapScan(v_1)BitmapScan(t1)*/
1056 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);
1066 ------------------------------------------------------------------------
1067 Bitmap Heap Scan on t1
1068 Recheck Cond: (id = $2)
1069 InitPlan 1 (returns $0)
1071 -> Bitmap Heap Scan on t1 v_1
1072 Recheck Cond: (id < 10)
1073 -> Bitmap Index Scan on t1_pkey
1074 Index Cond: (id < 10)
1075 InitPlan 3 (returns $2)
1077 InitPlan 2 (returns $1)
1079 -> Index Only Scan Backward using t1_pkey on t1 v_2
1080 Index Cond: ((id IS NOT NULL) AND (id < 10))
1081 -> Bitmap Index Scan on t1_pkey
1082 Index Cond: (id = $2)
1085 /*+BitmapScan(v_2)BitmapScan(t1)*/
1086 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);
1096 ------------------------------------------------------------------------
1097 Bitmap Heap Scan on t1
1098 Recheck Cond: (id = $2)
1099 InitPlan 2 (returns $1)
1101 InitPlan 1 (returns $0)
1103 -> Index Only Scan Backward using t1_pkey on t1 v_1
1104 Index Cond: ((id IS NOT NULL) AND (id < 10))
1105 InitPlan 3 (returns $2)
1107 -> Bitmap Heap Scan on t1 v_2
1108 Recheck Cond: (id < 10)
1109 -> Bitmap Index Scan on t1_pkey
1110 Index Cond: (id < 10)
1111 -> Bitmap Index Scan on t1_pkey
1112 Index Cond: (id = $2)
1115 /*+BitmapScan(v_1)BitmapScan(v_2)BitmapScan(t1)*/
1116 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);
1127 --------------------------------------------------
1128 Bitmap Heap Scan on t1
1129 Recheck Cond: (id = $1)
1130 InitPlan 1 (returns $0)
1132 -> Bitmap Heap Scan on t1 v_1
1133 Recheck Cond: (id < 10)
1134 -> Bitmap Index Scan on t1_pkey
1135 Index Cond: (id < 10)
1136 InitPlan 2 (returns $1)
1138 -> Bitmap Heap Scan on t1 v_2
1139 Recheck Cond: (id < 10)
1140 -> Bitmap Index Scan on t1_pkey
1141 Index Cond: (id < 10)
1142 -> Bitmap Index Scan on t1_pkey
1143 Index Cond: (id = $1)
1146 -- full scan hint pattern test
1147 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1149 -----------------------------------
1151 TID Cond: (ctid = '(1,1)'::tid)
1156 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1165 -------------------------------------------------
1167 Filter: ((id < 10) AND (ctid = '(1,1)'::tid))
1171 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1180 ---------------------------------
1181 Index Scan using t1_pkey on t1
1182 Index Cond: (id < 10)
1183 Filter: (ctid = '(1,1)'::tid)
1187 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1196 ------------------------------------
1197 Bitmap Heap Scan on t1
1198 Recheck Cond: (id < 10)
1199 Filter: (ctid = '(1,1)'::tid)
1200 -> Bitmap Index Scan on t1_pkey
1201 Index Cond: (id < 10)
1205 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1214 -----------------------------------
1216 TID Cond: (ctid = '(1,1)'::tid)
1221 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1230 -----------------------------------
1232 TID Cond: (ctid = '(1,1)'::tid)
1236 /*+NoIndexScan(t1)*/
1237 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1246 -----------------------------------
1248 TID Cond: (ctid = '(1,1)'::tid)
1252 /*+NoBitmapScan(t1)*/
1253 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1262 -----------------------------------
1264 TID Cond: (ctid = '(1,1)'::tid)
1269 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1278 ---------------------------------
1279 Index Scan using t1_pkey on t1
1280 Index Cond: (id < 10)
1281 Filter: (ctid = '(1,1)'::tid)
1284 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1286 -----------------------------------------
1288 Join Filter: (t1.id = t2.id)
1290 TID Cond: (ctid = '(1,1)'::tid)
1292 TID Cond: (ctid = '(1,1)'::tid)
1296 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1305 -----------------------------------------
1307 Join Filter: (t1.id = t2.id)
1309 Filter: (ctid = '(1,1)'::tid)
1311 TID Cond: (ctid = '(1,1)'::tid)
1315 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1324 -----------------------------------------
1326 Join Filter: (t1.id = t2.id)
1328 TID Cond: (ctid = '(1,1)'::tid)
1330 Filter: (ctid = '(1,1)'::tid)
1333 /*+SeqScan(t1) SeqScan(t2)*/
1334 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1344 ---------------------------------------
1346 Join Filter: (t1.id = t2.id)
1348 Filter: (ctid = '(1,1)'::tid)
1350 Filter: (ctid = '(1,1)'::tid)
1353 /*+SeqScan(t1) IndexScan(t2)*/
1354 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1364 ---------------------------------------
1367 Filter: (ctid = '(1,1)'::tid)
1368 -> Index Scan using t2_pkey on t2
1369 Index Cond: (id = t1.id)
1370 Filter: (ctid = '(1,1)'::tid)
1373 /*+SeqScan(t1) BitmapScan(t2)*/
1374 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1384 ------------------------------------------
1387 Filter: (ctid = '(1,1)'::tid)
1388 -> Bitmap Heap Scan on t2
1389 Recheck Cond: (id = t1.id)
1390 Filter: (ctid = '(1,1)'::tid)
1391 -> Bitmap Index Scan on t2_pkey
1392 Index Cond: (id = t1.id)
1395 /*+SeqScan(t1) TidScan(t2)*/
1396 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1406 -----------------------------------------
1408 Join Filter: (t1.id = t2.id)
1410 Filter: (ctid = '(1,1)'::tid)
1412 TID Cond: (ctid = '(1,1)'::tid)
1415 /*+SeqScan(t1) NoSeqScan(t2)*/
1416 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1426 -----------------------------------------
1428 Join Filter: (t1.id = t2.id)
1430 Filter: (ctid = '(1,1)'::tid)
1432 TID Cond: (ctid = '(1,1)'::tid)
1435 /*+SeqScan(t1) NoIndexScan(t2)*/
1436 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1446 -----------------------------------------
1448 Join Filter: (t1.id = t2.id)
1450 Filter: (ctid = '(1,1)'::tid)
1452 TID Cond: (ctid = '(1,1)'::tid)
1455 /*+SeqScan(t1) NoBitmapScan(t2)*/
1456 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1466 -----------------------------------------
1468 Join Filter: (t1.id = t2.id)
1470 Filter: (ctid = '(1,1)'::tid)
1472 TID Cond: (ctid = '(1,1)'::tid)
1475 /*+SeqScan(t1) NoTidScan(t2)*/
1476 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1486 ---------------------------------------
1489 Filter: (ctid = '(1,1)'::tid)
1490 -> Index Scan using t2_pkey on t2
1491 Index Cond: (id = t1.id)
1492 Filter: (ctid = '(1,1)'::tid)
1496 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1505 -----------------------------------------
1508 TID Cond: (ctid = '(1,1)'::tid)
1509 -> Index Scan using t1_pkey on t1
1510 Index Cond: (id = t2.id)
1511 Filter: (ctid = '(1,1)'::tid)
1515 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1524 -----------------------------------------
1527 TID Cond: (ctid = '(1,1)'::tid)
1528 -> Index Scan using t2_pkey on t2
1529 Index Cond: (id = t1.id)
1530 Filter: (ctid = '(1,1)'::tid)
1533 /*+IndexScan(t1) SeqScan(t2)*/
1534 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1544 ---------------------------------------
1547 Filter: (ctid = '(1,1)'::tid)
1548 -> Index Scan using t1_pkey on t1
1549 Index Cond: (id = t2.id)
1550 Filter: (ctid = '(1,1)'::tid)
1553 /*+IndexScan(t1) IndexScan(t2)*/
1554 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1564 ---------------------------------------
1566 -> Index Scan using t2_pkey on t2
1567 Filter: (ctid = '(1,1)'::tid)
1568 -> Index Scan using t1_pkey on t1
1569 Index Cond: (id = t2.id)
1570 Filter: (ctid = '(1,1)'::tid)
1573 /*+IndexScan(t1) BitmapScan(t2)*/
1574 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1584 ------------------------------------------
1586 -> Index Scan using t1_pkey on t1
1587 Filter: (ctid = '(1,1)'::tid)
1588 -> Bitmap Heap Scan on t2
1589 Recheck Cond: (id = t1.id)
1590 Filter: (ctid = '(1,1)'::tid)
1591 -> Bitmap Index Scan on t2_pkey
1592 Index Cond: (id = t1.id)
1595 /*+IndexScan(t1) TidScan(t2)*/
1596 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1606 -----------------------------------------
1609 TID Cond: (ctid = '(1,1)'::tid)
1610 -> Index Scan using t1_pkey on t1
1611 Index Cond: (id = t2.id)
1612 Filter: (ctid = '(1,1)'::tid)
1615 /*+IndexScan(t1) NoSeqScan(t2)*/
1616 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1626 -----------------------------------------
1629 TID Cond: (ctid = '(1,1)'::tid)
1630 -> Index Scan using t1_pkey on t1
1631 Index Cond: (id = t2.id)
1632 Filter: (ctid = '(1,1)'::tid)
1635 /*+IndexScan(t1) NoIndexScan(t2)*/
1636 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1646 -----------------------------------------
1649 TID Cond: (ctid = '(1,1)'::tid)
1650 -> Index Scan using t1_pkey on t1
1651 Index Cond: (id = t2.id)
1652 Filter: (ctid = '(1,1)'::tid)
1655 /*+IndexScan(t1) NoBitmapScan(t2)*/
1656 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1666 -----------------------------------------
1669 TID Cond: (ctid = '(1,1)'::tid)
1670 -> Index Scan using t1_pkey on t1
1671 Index Cond: (id = t2.id)
1672 Filter: (ctid = '(1,1)'::tid)
1675 /*+IndexScan(t1) NoTidScan(t2)*/
1676 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1686 ---------------------------------------
1689 Filter: (ctid = '(1,1)'::tid)
1690 -> Index Scan using t1_pkey on t1
1691 Index Cond: (id = t2.id)
1692 Filter: (ctid = '(1,1)'::tid)
1696 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1705 ------------------------------------------
1708 TID Cond: (ctid = '(1,1)'::tid)
1709 -> Bitmap Heap Scan on t1
1710 Recheck Cond: (id = t2.id)
1711 Filter: (ctid = '(1,1)'::tid)
1712 -> Bitmap Index Scan on t1_pkey
1713 Index Cond: (id = t2.id)
1717 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1726 ------------------------------------------
1729 TID Cond: (ctid = '(1,1)'::tid)
1730 -> Bitmap Heap Scan on t2
1731 Recheck Cond: (id = t1.id)
1732 Filter: (ctid = '(1,1)'::tid)
1733 -> Bitmap Index Scan on t2_pkey
1734 Index Cond: (id = t1.id)
1738 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1747 ------------------------------------------
1750 TID Cond: (ctid = '(1,1)'::tid)
1751 -> Bitmap Heap Scan on t2
1752 Recheck Cond: (id = t1.id)
1753 Filter: (ctid = '(1,1)'::tid)
1754 -> Bitmap Index Scan on t2_pkey
1755 Index Cond: (id = t1.id)
1758 /*+BitmapScan(t1) SeqScan(t2)*/
1759 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1769 ------------------------------------------
1772 Filter: (ctid = '(1,1)'::tid)
1773 -> Bitmap Heap Scan on t1
1774 Recheck Cond: (id = t2.id)
1775 Filter: (ctid = '(1,1)'::tid)
1776 -> Bitmap Index Scan on t1_pkey
1777 Index Cond: (id = t2.id)
1780 /*+BitmapScan(t1) IndexScan(t2)*/
1781 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1791 ------------------------------------------
1793 -> Index Scan using t2_pkey on t2
1794 Filter: (ctid = '(1,1)'::tid)
1795 -> Bitmap Heap Scan on t1
1796 Recheck Cond: (id = t2.id)
1797 Filter: (ctid = '(1,1)'::tid)
1798 -> Bitmap Index Scan on t1_pkey
1799 Index Cond: (id = t2.id)
1802 /*+BitmapScan(t1) BitmapScan(t2)*/
1803 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1813 ------------------------------------------
1815 -> Index Scan using t2_pkey on t2
1816 Filter: (ctid = '(1,1)'::tid)
1817 -> Bitmap Heap Scan on t1
1818 Recheck Cond: (id = t2.id)
1819 Filter: (ctid = '(1,1)'::tid)
1820 -> Bitmap Index Scan on t1_pkey
1821 Index Cond: (id = t2.id)
1824 /*+BitmapScan(t1) TidScan(t2)*/
1825 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1835 ------------------------------------------
1838 TID Cond: (ctid = '(1,1)'::tid)
1839 -> Bitmap Heap Scan on t1
1840 Recheck Cond: (id = t2.id)
1841 Filter: (ctid = '(1,1)'::tid)
1842 -> Bitmap Index Scan on t1_pkey
1843 Index Cond: (id = t2.id)
1846 /*+BitmapScan(t1) NoSeqScan(t2)*/
1847 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1857 ------------------------------------------
1860 TID Cond: (ctid = '(1,1)'::tid)
1861 -> Bitmap Heap Scan on t1
1862 Recheck Cond: (id = t2.id)
1863 Filter: (ctid = '(1,1)'::tid)
1864 -> Bitmap Index Scan on t1_pkey
1865 Index Cond: (id = t2.id)
1868 /*+BitmapScan(t1) NoIndexScan(t2)*/
1869 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1879 ------------------------------------------
1882 TID Cond: (ctid = '(1,1)'::tid)
1883 -> Bitmap Heap Scan on t1
1884 Recheck Cond: (id = t2.id)
1885 Filter: (ctid = '(1,1)'::tid)
1886 -> Bitmap Index Scan on t1_pkey
1887 Index Cond: (id = t2.id)
1890 /*+BitmapScan(t1) NoBitmapScan(t2)*/
1891 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1901 ------------------------------------------
1904 TID Cond: (ctid = '(1,1)'::tid)
1905 -> Bitmap Heap Scan on t1
1906 Recheck Cond: (id = t2.id)
1907 Filter: (ctid = '(1,1)'::tid)
1908 -> Bitmap Index Scan on t1_pkey
1909 Index Cond: (id = t2.id)
1912 /*+BitmapScan(t1) NoTidScan(t2)*/
1913 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1923 ------------------------------------------
1926 Filter: (ctid = '(1,1)'::tid)
1927 -> Bitmap Heap Scan on t1
1928 Recheck Cond: (id = t2.id)
1929 Filter: (ctid = '(1,1)'::tid)
1930 -> Bitmap Index Scan on t1_pkey
1931 Index Cond: (id = t2.id)
1935 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1944 -----------------------------------------
1946 Join Filter: (t1.id = t2.id)
1948 TID Cond: (ctid = '(1,1)'::tid)
1950 TID Cond: (ctid = '(1,1)'::tid)
1954 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1963 -----------------------------------------
1965 Join Filter: (t1.id = t2.id)
1967 TID Cond: (ctid = '(1,1)'::tid)
1969 TID Cond: (ctid = '(1,1)'::tid)
1972 /*+TidScan(t1) SeqScan(t2)*/
1973 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1983 -----------------------------------------
1985 Join Filter: (t1.id = t2.id)
1987 TID Cond: (ctid = '(1,1)'::tid)
1989 Filter: (ctid = '(1,1)'::tid)
1992 /*+TidScan(t1) IndexScan(t2)*/
1993 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2003 -----------------------------------------
2006 TID Cond: (ctid = '(1,1)'::tid)
2007 -> Index Scan using t2_pkey on t2
2008 Index Cond: (id = t1.id)
2009 Filter: (ctid = '(1,1)'::tid)
2012 /*+TidScan(t1) BitmapScan(t2)*/
2013 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2023 ------------------------------------------
2026 TID Cond: (ctid = '(1,1)'::tid)
2027 -> Bitmap Heap Scan on t2
2028 Recheck Cond: (id = t1.id)
2029 Filter: (ctid = '(1,1)'::tid)
2030 -> Bitmap Index Scan on t2_pkey
2031 Index Cond: (id = t1.id)
2034 /*+TidScan(t1) TidScan(t2)*/
2035 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2045 -----------------------------------------
2047 Join Filter: (t1.id = t2.id)
2049 TID Cond: (ctid = '(1,1)'::tid)
2051 TID Cond: (ctid = '(1,1)'::tid)
2054 /*+TidScan(t1) NoSeqScan(t2)*/
2055 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2065 -----------------------------------------
2067 Join Filter: (t1.id = t2.id)
2069 TID Cond: (ctid = '(1,1)'::tid)
2071 TID Cond: (ctid = '(1,1)'::tid)
2074 /*+TidScan(t1) NoIndexScan(t2)*/
2075 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2085 -----------------------------------------
2087 Join Filter: (t1.id = t2.id)
2089 TID Cond: (ctid = '(1,1)'::tid)
2091 TID Cond: (ctid = '(1,1)'::tid)
2094 /*+TidScan(t1) NoBitmapScan(t2)*/
2095 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2105 -----------------------------------------
2107 Join Filter: (t1.id = t2.id)
2109 TID Cond: (ctid = '(1,1)'::tid)
2111 TID Cond: (ctid = '(1,1)'::tid)
2114 /*+TidScan(t1) NoTidScan(t2)*/
2115 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2125 -----------------------------------------
2128 TID Cond: (ctid = '(1,1)'::tid)
2129 -> Index Scan using t2_pkey on t2
2130 Index Cond: (id = t1.id)
2131 Filter: (ctid = '(1,1)'::tid)
2135 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2144 -----------------------------------------
2146 Join Filter: (t1.id = t2.id)
2148 TID Cond: (ctid = '(1,1)'::tid)
2150 TID Cond: (ctid = '(1,1)'::tid)
2154 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2163 -----------------------------------------
2165 Join Filter: (t1.id = t2.id)
2167 TID Cond: (ctid = '(1,1)'::tid)
2169 TID Cond: (ctid = '(1,1)'::tid)
2172 /*+NoSeqScan(t1) SeqScan(t2)*/
2173 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2183 -----------------------------------------
2185 Join Filter: (t1.id = t2.id)
2187 TID Cond: (ctid = '(1,1)'::tid)
2189 Filter: (ctid = '(1,1)'::tid)
2192 /*+NoSeqScan(t1) IndexScan(t2)*/
2193 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2203 -----------------------------------------
2206 TID Cond: (ctid = '(1,1)'::tid)
2207 -> Index Scan using t2_pkey on t2
2208 Index Cond: (id = t1.id)
2209 Filter: (ctid = '(1,1)'::tid)
2212 /*+NoSeqScan(t1) BitmapScan(t2)*/
2213 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2223 ------------------------------------------
2226 TID Cond: (ctid = '(1,1)'::tid)
2227 -> Bitmap Heap Scan on t2
2228 Recheck Cond: (id = t1.id)
2229 Filter: (ctid = '(1,1)'::tid)
2230 -> Bitmap Index Scan on t2_pkey
2231 Index Cond: (id = t1.id)
2234 /*+NoSeqScan(t1) TidScan(t2)*/
2235 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2245 -----------------------------------------
2247 Join Filter: (t1.id = t2.id)
2249 TID Cond: (ctid = '(1,1)'::tid)
2251 TID Cond: (ctid = '(1,1)'::tid)
2254 /*+NoSeqScan(t1) NoSeqScan(t2)*/
2255 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2265 -----------------------------------------
2267 Join Filter: (t1.id = t2.id)
2269 TID Cond: (ctid = '(1,1)'::tid)
2271 TID Cond: (ctid = '(1,1)'::tid)
2274 /*+NoSeqScan(t1) NoIndexScan(t2)*/
2275 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2285 -----------------------------------------
2287 Join Filter: (t1.id = t2.id)
2289 TID Cond: (ctid = '(1,1)'::tid)
2291 TID Cond: (ctid = '(1,1)'::tid)
2294 /*+NoSeqScan(t1) NoBitmapScan(t2)*/
2295 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2305 -----------------------------------------
2307 Join Filter: (t1.id = t2.id)
2309 TID Cond: (ctid = '(1,1)'::tid)
2311 TID Cond: (ctid = '(1,1)'::tid)
2314 /*+NoSeqScan(t1) NoTidScan(t2)*/
2315 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2325 -----------------------------------------
2328 TID Cond: (ctid = '(1,1)'::tid)
2329 -> Index Scan using t2_pkey on t2
2330 Index Cond: (id = t1.id)
2331 Filter: (ctid = '(1,1)'::tid)
2334 /*+NoIndexScan(t1)*/
2335 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2344 -----------------------------------------
2346 Join Filter: (t1.id = t2.id)
2348 TID Cond: (ctid = '(1,1)'::tid)
2350 TID Cond: (ctid = '(1,1)'::tid)
2353 /*+NoIndexScan(t2)*/
2354 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2363 -----------------------------------------
2365 Join Filter: (t1.id = t2.id)
2367 TID Cond: (ctid = '(1,1)'::tid)
2369 TID Cond: (ctid = '(1,1)'::tid)
2372 /*+NoIndexScan(t1) SeqScan(t2)*/
2373 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2383 -----------------------------------------
2385 Join Filter: (t1.id = t2.id)
2387 TID Cond: (ctid = '(1,1)'::tid)
2389 Filter: (ctid = '(1,1)'::tid)
2392 /*+NoIndexScan(t1) IndexScan(t2)*/
2393 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2403 -----------------------------------------
2406 TID Cond: (ctid = '(1,1)'::tid)
2407 -> Index Scan using t2_pkey on t2
2408 Index Cond: (id = t1.id)
2409 Filter: (ctid = '(1,1)'::tid)
2412 /*+NoIndexScan(t1) BitmapScan(t2)*/
2413 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2423 ------------------------------------------
2426 TID Cond: (ctid = '(1,1)'::tid)
2427 -> Bitmap Heap Scan on t2
2428 Recheck Cond: (id = t1.id)
2429 Filter: (ctid = '(1,1)'::tid)
2430 -> Bitmap Index Scan on t2_pkey
2431 Index Cond: (id = t1.id)
2434 /*+NoIndexScan(t1) TidScan(t2)*/
2435 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2445 -----------------------------------------
2447 Join Filter: (t1.id = t2.id)
2449 TID Cond: (ctid = '(1,1)'::tid)
2451 TID Cond: (ctid = '(1,1)'::tid)
2454 /*+NoIndexScan(t1) NoSeqScan(t2)*/
2455 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2465 -----------------------------------------
2467 Join Filter: (t1.id = t2.id)
2469 TID Cond: (ctid = '(1,1)'::tid)
2471 TID Cond: (ctid = '(1,1)'::tid)
2474 /*+NoIndexScan(t1) NoIndexScan(t2)*/
2475 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2485 -----------------------------------------
2487 Join Filter: (t1.id = t2.id)
2489 TID Cond: (ctid = '(1,1)'::tid)
2491 TID Cond: (ctid = '(1,1)'::tid)
2494 /*+NoIndexScan(t1) NoBitmapScan(t2)*/
2495 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2505 -----------------------------------------
2507 Join Filter: (t1.id = t2.id)
2509 TID Cond: (ctid = '(1,1)'::tid)
2511 TID Cond: (ctid = '(1,1)'::tid)
2514 /*+NoIndexScan(t1) NoTidScan(t2)*/
2515 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2525 -----------------------------------------
2528 TID Cond: (ctid = '(1,1)'::tid)
2529 -> Index Scan using t2_pkey on t2
2530 Index Cond: (id = t1.id)
2531 Filter: (ctid = '(1,1)'::tid)
2534 /*+NoBitmapScan(t1)*/
2535 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2544 -----------------------------------------
2546 Join Filter: (t1.id = t2.id)
2548 TID Cond: (ctid = '(1,1)'::tid)
2550 TID Cond: (ctid = '(1,1)'::tid)
2553 /*+NoBitmapScan(t2)*/
2554 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2563 -----------------------------------------
2565 Join Filter: (t1.id = t2.id)
2567 TID Cond: (ctid = '(1,1)'::tid)
2569 TID Cond: (ctid = '(1,1)'::tid)
2572 /*+NoBitmapScan(t1) SeqScan(t2)*/
2573 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2583 -----------------------------------------
2585 Join Filter: (t1.id = t2.id)
2587 TID Cond: (ctid = '(1,1)'::tid)
2589 Filter: (ctid = '(1,1)'::tid)
2592 /*+NoBitmapScan(t1) IndexScan(t2)*/
2593 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2603 -----------------------------------------
2606 TID Cond: (ctid = '(1,1)'::tid)
2607 -> Index Scan using t2_pkey on t2
2608 Index Cond: (id = t1.id)
2609 Filter: (ctid = '(1,1)'::tid)
2612 /*+NoBitmapScan(t1) BitmapScan(t2)*/
2613 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2623 ------------------------------------------
2626 TID Cond: (ctid = '(1,1)'::tid)
2627 -> Bitmap Heap Scan on t2
2628 Recheck Cond: (id = t1.id)
2629 Filter: (ctid = '(1,1)'::tid)
2630 -> Bitmap Index Scan on t2_pkey
2631 Index Cond: (id = t1.id)
2634 /*+NoBitmapScan(t1) TidScan(t2)*/
2635 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2645 -----------------------------------------
2647 Join Filter: (t1.id = t2.id)
2649 TID Cond: (ctid = '(1,1)'::tid)
2651 TID Cond: (ctid = '(1,1)'::tid)
2654 /*+NoBitmapScan(t1) NoSeqScan(t2)*/
2655 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2665 -----------------------------------------
2667 Join Filter: (t1.id = t2.id)
2669 TID Cond: (ctid = '(1,1)'::tid)
2671 TID Cond: (ctid = '(1,1)'::tid)
2674 /*+NoBitmapScan(t1) NoIndexScan(t2)*/
2675 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2685 -----------------------------------------
2687 Join Filter: (t1.id = t2.id)
2689 TID Cond: (ctid = '(1,1)'::tid)
2691 TID Cond: (ctid = '(1,1)'::tid)
2694 /*+NoBitmapScan(t1) NoBitmapScan(t2)*/
2695 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2705 -----------------------------------------
2707 Join Filter: (t1.id = t2.id)
2709 TID Cond: (ctid = '(1,1)'::tid)
2711 TID Cond: (ctid = '(1,1)'::tid)
2714 /*+NoBitmapScan(t1) NoTidScan(t2)*/
2715 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2725 -----------------------------------------
2728 TID Cond: (ctid = '(1,1)'::tid)
2729 -> Index Scan using t2_pkey on t2
2730 Index Cond: (id = t1.id)
2731 Filter: (ctid = '(1,1)'::tid)
2735 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2744 -----------------------------------------
2747 TID Cond: (ctid = '(1,1)'::tid)
2748 -> Index Scan using t1_pkey on t1
2749 Index Cond: (id = t2.id)
2750 Filter: (ctid = '(1,1)'::tid)
2754 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2763 -----------------------------------------
2766 TID Cond: (ctid = '(1,1)'::tid)
2767 -> Index Scan using t2_pkey on t2
2768 Index Cond: (id = t1.id)
2769 Filter: (ctid = '(1,1)'::tid)
2772 /*+NoTidScan(t1) SeqScan(t2)*/
2773 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2783 ---------------------------------------
2786 Filter: (ctid = '(1,1)'::tid)
2787 -> Index Scan using t1_pkey on t1
2788 Index Cond: (id = t2.id)
2789 Filter: (ctid = '(1,1)'::tid)
2792 /*+NoTidScan(t1) IndexScan(t2)*/
2793 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2803 ---------------------------------------
2805 -> Index Scan using t2_pkey on t2
2806 Filter: (ctid = '(1,1)'::tid)
2807 -> Index Scan using t1_pkey on t1
2808 Index Cond: (id = t2.id)
2809 Filter: (ctid = '(1,1)'::tid)
2812 /*+NoTidScan(t1) BitmapScan(t2)*/
2813 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2823 ------------------------------------------
2826 Filter: (ctid = '(1,1)'::tid)
2827 -> Bitmap Heap Scan on t2
2828 Recheck Cond: (id = t1.id)
2829 Filter: (ctid = '(1,1)'::tid)
2830 -> Bitmap Index Scan on t2_pkey
2831 Index Cond: (id = t1.id)
2834 /*+NoTidScan(t1) TidScan(t2)*/
2835 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2845 -----------------------------------------
2848 TID Cond: (ctid = '(1,1)'::tid)
2849 -> Index Scan using t1_pkey on t1
2850 Index Cond: (id = t2.id)
2851 Filter: (ctid = '(1,1)'::tid)
2854 /*+NoTidScan(t1) NoSeqScan(t2)*/
2855 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2865 -----------------------------------------
2868 TID Cond: (ctid = '(1,1)'::tid)
2869 -> Index Scan using t1_pkey on t1
2870 Index Cond: (id = t2.id)
2871 Filter: (ctid = '(1,1)'::tid)
2874 /*+NoTidScan(t1) NoIndexScan(t2)*/
2875 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2885 -----------------------------------------
2888 TID Cond: (ctid = '(1,1)'::tid)
2889 -> Index Scan using t1_pkey on t1
2890 Index Cond: (id = t2.id)
2891 Filter: (ctid = '(1,1)'::tid)
2894 /*+NoTidScan(t1) NoBitmapScan(t2)*/
2895 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2905 -----------------------------------------
2908 TID Cond: (ctid = '(1,1)'::tid)
2909 -> Index Scan using t1_pkey on t1
2910 Index Cond: (id = t2.id)
2911 Filter: (ctid = '(1,1)'::tid)
2914 /*+NoTidScan(t1) NoTidScan(t2)*/
2915 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2925 ---------------------------------------
2928 Filter: (ctid = '(1,1)'::tid)
2929 -> Index Scan using t1_pkey on t1
2930 Index Cond: (id = t2.id)
2931 Filter: (ctid = '(1,1)'::tid)
2935 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;
2937 -----------------------------------------
2939 Join Filter: (t1.id = t2.id)
2941 TID Cond: (ctid = '(1,1)'::tid)
2944 TID Cond: (ctid = '(1,1)'::tid)
2948 /*+BitmapScan(t1) BitmapScan(t2)*/
2949 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;
2959 --------------------------------------------------------
2961 -> Bitmap Heap Scan on t2
2962 Recheck Cond: (id < 10)
2963 Filter: (ctid = '(1,1)'::tid)
2964 -> Bitmap Index Scan on t2_pkey
2965 Index Cond: (id < 10)
2966 -> Bitmap Heap Scan on t1
2967 Recheck Cond: ((id = t2.id) AND (id < 10))
2968 Filter: (ctid = '(1,1)'::tid)
2969 -> Bitmap Index Scan on t1_pkey
2970 Index Cond: ((id = t2.id) AND (id < 10))
2974 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
2976 ------------------------------
2978 Hash Cond: (t1.id = t2.id)
2984 /*+MergeJoin(t1 t2)*/
2985 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
2994 --------------------------------------
2996 Merge Cond: (t1.id = t2.id)
2997 -> Index Scan using t1_pkey on t1
2998 -> Index Scan using t2_pkey on t2
3001 /*+NestLoop(t1 t2)*/
3002 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
3011 ------------------------------
3013 Hash Cond: (t1.id = t2.id)
3019 -- inherite table test
3020 SET constraint_exclusion TO off;
3021 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3023 -----------------------------------------------------------------------
3026 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3027 -> Seq Scan on p1_c1
3028 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3029 -> Seq Scan on p1_c2
3030 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3031 -> Seq Scan on p1_c3
3032 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3033 -> Seq Scan on p1_c4
3034 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3035 -> Seq Scan on p1_c1_c1
3036 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3037 -> Seq Scan on p1_c1_c2
3038 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3039 -> Seq Scan on p1_c3_c1
3040 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3041 -> Seq Scan on p1_c3_c2
3042 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3045 SET constraint_exclusion TO on;
3046 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3048 -----------------------------------------------------------------------
3051 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3052 -> Seq Scan on p1_c1
3053 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3054 -> Seq Scan on p1_c1_c1
3055 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3056 -> Seq Scan on p1_c1_c2
3057 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3060 SET constraint_exclusion TO off;
3062 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3071 -----------------------------------------------------------------------
3074 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3075 -> Seq Scan on p1_c1
3076 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3077 -> Seq Scan on p1_c2
3078 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3079 -> Seq Scan on p1_c3
3080 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3081 -> Seq Scan on p1_c4
3082 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3083 -> Seq Scan on p1_c1_c1
3084 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3085 -> Seq Scan on p1_c1_c2
3086 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3087 -> Seq Scan on p1_c3_c1
3088 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3089 -> Seq Scan on p1_c3_c2
3090 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3094 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3103 --------------------------------------------------
3105 -> Index Scan using p1_pkey on p1
3106 Index Cond: ((id >= 50) AND (id <= 51))
3107 Filter: (ctid = '(1,1)'::tid)
3108 -> Index Scan using p1_c1_pkey on p1_c1
3109 Index Cond: ((id >= 50) AND (id <= 51))
3110 Filter: (ctid = '(1,1)'::tid)
3111 -> Index Scan using p1_c2_pkey on p1_c2
3112 Index Cond: ((id >= 50) AND (id <= 51))
3113 Filter: (ctid = '(1,1)'::tid)
3114 -> Index Scan using p1_c3_pkey on p1_c3
3115 Index Cond: ((id >= 50) AND (id <= 51))
3116 Filter: (ctid = '(1,1)'::tid)
3117 -> Index Scan using p1_c4_pkey on p1_c4
3118 Index Cond: ((id >= 50) AND (id <= 51))
3119 Filter: (ctid = '(1,1)'::tid)
3120 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3121 Index Cond: ((id >= 50) AND (id <= 51))
3122 Filter: (ctid = '(1,1)'::tid)
3123 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3124 Index Cond: ((id >= 50) AND (id <= 51))
3125 Filter: (ctid = '(1,1)'::tid)
3126 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
3127 Index Cond: ((id >= 50) AND (id <= 51))
3128 Filter: (ctid = '(1,1)'::tid)
3129 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
3130 Index Cond: ((id >= 50) AND (id <= 51))
3131 Filter: (ctid = '(1,1)'::tid)
3135 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3144 -------------------------------------------------------
3146 -> Bitmap Heap Scan on p1
3147 Recheck Cond: ((id >= 50) AND (id <= 51))
3148 Filter: (ctid = '(1,1)'::tid)
3149 -> Bitmap Index Scan on p1_pkey
3150 Index Cond: ((id >= 50) AND (id <= 51))
3151 -> Bitmap Heap Scan on p1_c1
3152 Recheck Cond: ((id >= 50) AND (id <= 51))
3153 Filter: (ctid = '(1,1)'::tid)
3154 -> Bitmap Index Scan on p1_c1_pkey
3155 Index Cond: ((id >= 50) AND (id <= 51))
3156 -> Bitmap Heap Scan on p1_c2
3157 Recheck Cond: ((id >= 50) AND (id <= 51))
3158 Filter: (ctid = '(1,1)'::tid)
3159 -> Bitmap Index Scan on p1_c2_pkey
3160 Index Cond: ((id >= 50) AND (id <= 51))
3161 -> Bitmap Heap Scan on p1_c3
3162 Recheck Cond: ((id >= 50) AND (id <= 51))
3163 Filter: (ctid = '(1,1)'::tid)
3164 -> Bitmap Index Scan on p1_c3_pkey
3165 Index Cond: ((id >= 50) AND (id <= 51))
3166 -> Bitmap Heap Scan on p1_c4
3167 Recheck Cond: ((id >= 50) AND (id <= 51))
3168 Filter: (ctid = '(1,1)'::tid)
3169 -> Bitmap Index Scan on p1_c4_pkey
3170 Index Cond: ((id >= 50) AND (id <= 51))
3171 -> Bitmap Heap Scan on p1_c1_c1
3172 Recheck Cond: ((id >= 50) AND (id <= 51))
3173 Filter: (ctid = '(1,1)'::tid)
3174 -> Bitmap Index Scan on p1_c1_c1_pkey
3175 Index Cond: ((id >= 50) AND (id <= 51))
3176 -> Bitmap Heap Scan on p1_c1_c2
3177 Recheck Cond: ((id >= 50) AND (id <= 51))
3178 Filter: (ctid = '(1,1)'::tid)
3179 -> Bitmap Index Scan on p1_c1_c2_pkey
3180 Index Cond: ((id >= 50) AND (id <= 51))
3181 -> Bitmap Heap Scan on p1_c3_c1
3182 Recheck Cond: ((id >= 50) AND (id <= 51))
3183 Filter: (ctid = '(1,1)'::tid)
3184 -> Bitmap Index Scan on p1_c3_c1_pkey
3185 Index Cond: ((id >= 50) AND (id <= 51))
3186 -> Bitmap Heap Scan on p1_c3_c2
3187 Recheck Cond: ((id >= 50) AND (id <= 51))
3188 Filter: (ctid = '(1,1)'::tid)
3189 -> Bitmap Index Scan on p1_c3_c2_pkey
3190 Index Cond: ((id >= 50) AND (id <= 51))
3194 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3203 ---------------------------------------------
3206 TID Cond: (ctid = '(1,1)'::tid)
3207 Filter: ((id >= 50) AND (id <= 51))
3208 -> Tid Scan on p1_c1
3209 TID Cond: (ctid = '(1,1)'::tid)
3210 Filter: ((id >= 50) AND (id <= 51))
3211 -> Tid Scan on p1_c2
3212 TID Cond: (ctid = '(1,1)'::tid)
3213 Filter: ((id >= 50) AND (id <= 51))
3214 -> Tid Scan on p1_c3
3215 TID Cond: (ctid = '(1,1)'::tid)
3216 Filter: ((id >= 50) AND (id <= 51))
3217 -> Tid Scan on p1_c4
3218 TID Cond: (ctid = '(1,1)'::tid)
3219 Filter: ((id >= 50) AND (id <= 51))
3220 -> Tid Scan on p1_c1_c1
3221 TID Cond: (ctid = '(1,1)'::tid)
3222 Filter: ((id >= 50) AND (id <= 51))
3223 -> Tid Scan on p1_c1_c2
3224 TID Cond: (ctid = '(1,1)'::tid)
3225 Filter: ((id >= 50) AND (id <= 51))
3226 -> Tid Scan on p1_c3_c1
3227 TID Cond: (ctid = '(1,1)'::tid)
3228 Filter: ((id >= 50) AND (id <= 51))
3229 -> Tid Scan on p1_c3_c2
3230 TID Cond: (ctid = '(1,1)'::tid)
3231 Filter: ((id >= 50) AND (id <= 51))
3234 SET constraint_exclusion TO on;
3236 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3245 -----------------------------------------------------------------------
3248 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3249 -> Seq Scan on p1_c1
3250 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3251 -> Seq Scan on p1_c1_c1
3252 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3253 -> Seq Scan on p1_c1_c2
3254 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3258 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3267 --------------------------------------------------
3269 -> Index Scan using p1_pkey on p1
3270 Index Cond: ((id >= 50) AND (id <= 51))
3271 Filter: (ctid = '(1,1)'::tid)
3272 -> Index Scan using p1_c1_pkey on p1_c1
3273 Index Cond: ((id >= 50) AND (id <= 51))
3274 Filter: (ctid = '(1,1)'::tid)
3275 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3276 Index Cond: ((id >= 50) AND (id <= 51))
3277 Filter: (ctid = '(1,1)'::tid)
3278 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3279 Index Cond: ((id >= 50) AND (id <= 51))
3280 Filter: (ctid = '(1,1)'::tid)
3284 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3293 -------------------------------------------------------
3295 -> Bitmap Heap Scan on p1
3296 Recheck Cond: ((id >= 50) AND (id <= 51))
3297 Filter: (ctid = '(1,1)'::tid)
3298 -> Bitmap Index Scan on p1_pkey
3299 Index Cond: ((id >= 50) AND (id <= 51))
3300 -> Bitmap Heap Scan on p1_c1
3301 Recheck Cond: ((id >= 50) AND (id <= 51))
3302 Filter: (ctid = '(1,1)'::tid)
3303 -> Bitmap Index Scan on p1_c1_pkey
3304 Index Cond: ((id >= 50) AND (id <= 51))
3305 -> Bitmap Heap Scan on p1_c1_c1
3306 Recheck Cond: ((id >= 50) AND (id <= 51))
3307 Filter: (ctid = '(1,1)'::tid)
3308 -> Bitmap Index Scan on p1_c1_c1_pkey
3309 Index Cond: ((id >= 50) AND (id <= 51))
3310 -> Bitmap Heap Scan on p1_c1_c2
3311 Recheck Cond: ((id >= 50) AND (id <= 51))
3312 Filter: (ctid = '(1,1)'::tid)
3313 -> Bitmap Index Scan on p1_c1_c2_pkey
3314 Index Cond: ((id >= 50) AND (id <= 51))
3318 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3327 ---------------------------------------------
3330 TID Cond: (ctid = '(1,1)'::tid)
3331 Filter: ((id >= 50) AND (id <= 51))
3332 -> Tid Scan on p1_c1
3333 TID Cond: (ctid = '(1,1)'::tid)
3334 Filter: ((id >= 50) AND (id <= 51))
3335 -> Tid Scan on p1_c1_c1
3336 TID Cond: (ctid = '(1,1)'::tid)
3337 Filter: ((id >= 50) AND (id <= 51))
3338 -> Tid Scan on p1_c1_c2
3339 TID Cond: (ctid = '(1,1)'::tid)
3340 Filter: ((id >= 50) AND (id <= 51))
3343 SET constraint_exclusion TO off;
3344 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;
3346 -----------------------------------------------------------------------------------
3348 Merge Cond: (p1.id = t1.id)
3353 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3354 -> Seq Scan on p1_c1
3355 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3356 -> Seq Scan on p1_c2
3357 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3358 -> Seq Scan on p1_c3
3359 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3360 -> Seq Scan on p1_c4
3361 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3362 -> Seq Scan on p1_c1_c1
3363 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3364 -> Seq Scan on p1_c1_c2
3365 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3366 -> Seq Scan on p1_c3_c1
3367 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3368 -> Seq Scan on p1_c3_c2
3369 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3370 -> Index Scan using t1_pkey on t1
3371 Index Cond: (id < 10)
3374 SET constraint_exclusion TO on;
3375 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;
3377 -----------------------------------------------------------------------------------
3379 Merge Cond: (p1.id = t1.id)
3384 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3385 -> Seq Scan on p1_c1
3386 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3387 -> Seq Scan on p1_c1_c1
3388 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3389 -> Seq Scan on p1_c1_c2
3390 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3391 -> Index Scan using t1_pkey on t1
3392 Index Cond: (id < 10)
3395 SET constraint_exclusion TO off;
3397 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;
3406 -----------------------------------------------------------------------------------
3408 Merge Cond: (p1.id = t1.id)
3413 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3414 -> Seq Scan on p1_c1
3415 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3416 -> Seq Scan on p1_c2
3417 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3418 -> Seq Scan on p1_c3
3419 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3420 -> Seq Scan on p1_c4
3421 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3422 -> Seq Scan on p1_c1_c1
3423 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3424 -> Seq Scan on p1_c1_c2
3425 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3426 -> Seq Scan on p1_c3_c1
3427 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3428 -> Seq Scan on p1_c3_c2
3429 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3430 -> Index Scan using t1_pkey on t1
3431 Index Cond: (id < 10)
3435 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;
3444 -----------------------------------------------------------------------------------
3446 Merge Cond: (p1.id = t1.id)
3451 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3452 -> Seq Scan on p1_c1
3453 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3454 -> Seq Scan on p1_c2
3455 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3456 -> Seq Scan on p1_c3
3457 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3458 -> Seq Scan on p1_c4
3459 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3460 -> Seq Scan on p1_c1_c1
3461 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3462 -> Seq Scan on p1_c1_c2
3463 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3464 -> Seq Scan on p1_c3_c1
3465 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3466 -> Seq Scan on p1_c3_c2
3467 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3468 -> Index Scan using t1_pkey on t1
3469 Index Cond: (id < 10)
3473 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;
3482 -----------------------------------------------------------------------------------
3484 Merge Cond: (p1.id = t1.id)
3489 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3490 -> Seq Scan on p1_c1
3491 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3492 -> Seq Scan on p1_c2
3493 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3494 -> Seq Scan on p1_c3
3495 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3496 -> Seq Scan on p1_c4
3497 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3498 -> Seq Scan on p1_c1_c1
3499 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3500 -> Seq Scan on p1_c1_c2
3501 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3502 -> Seq Scan on p1_c3_c1
3503 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3504 -> Seq Scan on p1_c3_c2
3505 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3506 -> Index Scan using t1_pkey on t1
3507 Index Cond: (id < 10)
3511 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;
3520 -----------------------------------------------------------------------------------
3522 Merge Cond: (p1.id = t1.id)
3527 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3528 -> Seq Scan on p1_c1
3529 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3530 -> Seq Scan on p1_c2
3531 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3532 -> Seq Scan on p1_c3
3533 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3534 -> Seq Scan on p1_c4
3535 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3536 -> Seq Scan on p1_c1_c1
3537 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3538 -> Seq Scan on p1_c1_c2
3539 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3540 -> Seq Scan on p1_c3_c1
3541 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3542 -> Seq Scan on p1_c3_c2
3543 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3544 -> Index Scan using t1_pkey on t1
3545 Index Cond: (id < 10)
3548 /*+NestLoop(p1 t1)*/
3549 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;
3558 -----------------------------------------------------------------------------
3560 Join Filter: (p1.id = t1.id)
3563 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3564 -> Seq Scan on p1_c1
3565 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3566 -> Seq Scan on p1_c2
3567 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3568 -> Seq Scan on p1_c3
3569 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3570 -> Seq Scan on p1_c4
3571 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3572 -> Seq Scan on p1_c1_c1
3573 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3574 -> Seq Scan on p1_c1_c2
3575 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3576 -> Seq Scan on p1_c3_c1
3577 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3578 -> Seq Scan on p1_c3_c2
3579 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3581 -> Index Scan using t1_pkey on t1
3582 Index Cond: (id < 10)
3585 /*+MergeJoin(p1 t1)*/
3586 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;
3595 -----------------------------------------------------------------------------------
3597 Merge Cond: (p1.id = t1.id)
3602 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3603 -> Seq Scan on p1_c1
3604 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3605 -> Seq Scan on p1_c2
3606 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3607 -> Seq Scan on p1_c3
3608 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3609 -> Seq Scan on p1_c4
3610 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3611 -> Seq Scan on p1_c1_c1
3612 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3613 -> Seq Scan on p1_c1_c2
3614 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3615 -> Seq Scan on p1_c3_c1
3616 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3617 -> Seq Scan on p1_c3_c2
3618 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3619 -> Index Scan using t1_pkey on t1
3620 Index Cond: (id < 10)
3623 /*+HashJoin(p1 t1)*/
3624 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;
3633 -----------------------------------------------------------------------------
3635 Hash Cond: (p1.id = t1.id)
3638 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3639 -> Seq Scan on p1_c1
3640 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3641 -> Seq Scan on p1_c2
3642 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3643 -> Seq Scan on p1_c3
3644 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3645 -> Seq Scan on p1_c4
3646 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3647 -> Seq Scan on p1_c1_c1
3648 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3649 -> Seq Scan on p1_c1_c2
3650 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3651 -> Seq Scan on p1_c3_c1
3652 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3653 -> Seq Scan on p1_c3_c2
3654 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3656 -> Index Scan using t1_pkey on t1
3657 Index Cond: (id < 10)
3660 SET constraint_exclusion TO on;
3662 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;
3671 -----------------------------------------------------------------------------------
3673 Merge Cond: (p1.id = t1.id)
3678 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3679 -> Seq Scan on p1_c1
3680 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3681 -> Seq Scan on p1_c1_c1
3682 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3683 -> Seq Scan on p1_c1_c2
3684 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3685 -> Index Scan using t1_pkey on t1
3686 Index Cond: (id < 10)
3690 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;
3699 -----------------------------------------------------------------------------------
3701 Merge Cond: (p1.id = t1.id)
3706 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3707 -> Seq Scan on p1_c1
3708 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3709 -> Seq Scan on p1_c1_c1
3710 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3711 -> Seq Scan on p1_c1_c2
3712 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3713 -> Index Scan using t1_pkey on t1
3714 Index Cond: (id < 10)
3718 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;
3727 -----------------------------------------------------------------------------------
3729 Merge Cond: (p1.id = t1.id)
3734 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3735 -> Seq Scan on p1_c1
3736 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3737 -> Seq Scan on p1_c1_c1
3738 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3739 -> Seq Scan on p1_c1_c2
3740 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3741 -> Index Scan using t1_pkey on t1
3742 Index Cond: (id < 10)
3746 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;
3755 -----------------------------------------------------------------------------------
3757 Merge Cond: (p1.id = t1.id)
3762 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3763 -> Seq Scan on p1_c1
3764 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3765 -> Seq Scan on p1_c1_c1
3766 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3767 -> Seq Scan on p1_c1_c2
3768 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3769 -> Index Scan using t1_pkey on t1
3770 Index Cond: (id < 10)
3773 /*+NestLoop(p1 t1)*/
3774 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;
3783 -----------------------------------------------------------------------------------
3785 Join Filter: (p1.id = t1.id)
3786 -> Index Scan using t1_pkey on t1
3787 Index Cond: (id < 10)
3791 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3792 -> Seq Scan on p1_c1
3793 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3794 -> Seq Scan on p1_c1_c1
3795 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3796 -> Seq Scan on p1_c1_c2
3797 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3800 /*+MergeJoin(p1 t1)*/
3801 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;
3810 -----------------------------------------------------------------------------------
3812 Merge Cond: (p1.id = t1.id)
3817 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3818 -> Seq Scan on p1_c1
3819 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3820 -> Seq Scan on p1_c1_c1
3821 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3822 -> Seq Scan on p1_c1_c2
3823 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3824 -> Index Scan using t1_pkey on t1
3825 Index Cond: (id < 10)
3828 /*+HashJoin(p1 t1)*/
3829 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;
3838 -----------------------------------------------------------------------------------
3840 Hash Cond: (t1.id = p1.id)
3841 -> Index Scan using t1_pkey on t1
3842 Index Cond: (id < 10)
3846 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3847 -> Seq Scan on p1_c1
3848 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3849 -> Seq Scan on p1_c1_c1
3850 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3851 -> Seq Scan on p1_c1_c2
3852 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3855 SET constraint_exclusion TO off;
3856 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3858 -----------------------------------------------------------------
3860 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3863 SET constraint_exclusion TO on;
3864 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3866 -----------------------------------------------------------------
3868 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3871 SET constraint_exclusion TO off;
3873 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3882 -----------------------------------------------------------------
3884 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3888 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3897 -------------------------------------------
3898 Index Scan using p1_pkey on p1
3899 Index Cond: ((id >= 50) AND (id <= 51))
3900 Filter: (ctid = '(1,1)'::tid)
3904 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3913 -------------------------------------------------
3914 Bitmap Heap Scan on p1
3915 Recheck Cond: ((id >= 50) AND (id <= 51))
3916 Filter: (ctid = '(1,1)'::tid)
3917 -> Bitmap Index Scan on p1_pkey
3918 Index Cond: ((id >= 50) AND (id <= 51))
3922 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3931 ---------------------------------------
3933 TID Cond: (ctid = '(1,1)'::tid)
3934 Filter: ((id >= 50) AND (id <= 51))
3937 /*+NestLoop(p1 t1)*/
3938 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;
3947 -----------------------------------------------------------------------
3950 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3951 -> Index Scan using t1_pkey on t1
3952 Index Cond: ((id = p1.id) AND (id < 10))
3955 /*+MergeJoin(p1 t1)*/
3956 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;
3965 -----------------------------------------------------------------------------
3967 Merge Cond: (p1.id = t1.id)
3971 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3972 -> Index Scan using t1_pkey on t1
3973 Index Cond: (id < 10)
3976 /*+HashJoin(p1 t1)*/
3977 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;
3986 -----------------------------------------------------------------------------
3988 Hash Cond: (t1.id = p1.id)
3989 -> Index Scan using t1_pkey on t1
3990 Index Cond: (id < 10)
3993 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3996 SET constraint_exclusion TO on;
3998 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4007 -----------------------------------------------------------------
4009 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4013 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4022 -------------------------------------------
4023 Index Scan using p1_pkey on p1
4024 Index Cond: ((id >= 50) AND (id <= 51))
4025 Filter: (ctid = '(1,1)'::tid)
4029 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4038 -------------------------------------------------
4039 Bitmap Heap Scan on p1
4040 Recheck Cond: ((id >= 50) AND (id <= 51))
4041 Filter: (ctid = '(1,1)'::tid)
4042 -> Bitmap Index Scan on p1_pkey
4043 Index Cond: ((id >= 50) AND (id <= 51))
4047 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4056 ---------------------------------------
4058 TID Cond: (ctid = '(1,1)'::tid)
4059 Filter: ((id >= 50) AND (id <= 51))
4062 /*+NestLoop(p1 t1)*/
4063 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;
4072 -----------------------------------------------------------------------
4075 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4076 -> Index Scan using t1_pkey on t1
4077 Index Cond: ((id = p1.id) AND (id < 10))
4080 /*+MergeJoin(p1 t1)*/
4081 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;
4090 -----------------------------------------------------------------------------
4092 Merge Cond: (p1.id = t1.id)
4096 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4097 -> Index Scan using t1_pkey on t1
4098 Index Cond: (id < 10)
4101 /*+HashJoin(p1 t1)*/
4102 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;
4111 -----------------------------------------------------------------------------
4113 Hash Cond: (t1.id = p1.id)
4114 -> Index Scan using t1_pkey on t1
4115 Index Cond: (id < 10)
4118 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4121 SET constraint_exclusion TO off;
4122 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;
4124 -----------------------------------------------------------------------
4127 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4128 -> Index Scan using t1_pkey on t1
4129 Index Cond: ((id = p1.id) AND (id < 10))
4132 SET constraint_exclusion TO on;
4133 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;
4135 -----------------------------------------------------------------------
4138 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4139 -> Index Scan using t1_pkey on t1
4140 Index Cond: ((id = p1.id) AND (id < 10))
4143 SET constraint_exclusion TO off;
4145 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;
4154 -----------------------------------------------------------------------
4157 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4158 -> Index Scan using t1_pkey on t1
4159 Index Cond: ((id = p1.id) AND (id < 10))
4163 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;
4172 --------------------------------------------------
4174 -> Index Scan using p1_pkey on p1
4175 Index Cond: ((id >= 50) AND (id <= 51))
4176 Filter: (ctid = '(1,1)'::tid)
4177 -> Index Scan using t1_pkey on t1
4178 Index Cond: ((id = p1.id) AND (id < 10))
4182 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;
4191 -------------------------------------------------------
4193 -> Bitmap Heap Scan on p1
4194 Recheck Cond: ((id >= 50) AND (id <= 51))
4195 Filter: (ctid = '(1,1)'::tid)
4196 -> Bitmap Index Scan on p1_pkey
4197 Index Cond: ((id >= 50) AND (id <= 51))
4198 -> Index Scan using t1_pkey on t1
4199 Index Cond: ((id = p1.id) AND (id < 10))
4203 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;
4212 --------------------------------------------------
4215 TID Cond: (ctid = '(1,1)'::tid)
4216 Filter: ((id >= 50) AND (id <= 51))
4217 -> Index Scan using t1_pkey on t1
4218 Index Cond: ((id = p1.id) AND (id < 10))
4221 SET constraint_exclusion TO on;
4223 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;
4232 -----------------------------------------------------------------------
4235 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4236 -> Index Scan using t1_pkey on t1
4237 Index Cond: ((id = p1.id) AND (id < 10))
4241 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4250 --------------------------------------------------
4252 -> Index Scan using p1_pkey on p1
4253 Index Cond: ((id >= 50) AND (id <= 51))
4254 Filter: (ctid = '(1,1)'::tid)
4255 -> Index Scan using t1_pkey on t1
4256 Index Cond: ((id = p1.id) AND (id < 10))
4260 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;
4269 -------------------------------------------------------
4271 -> Bitmap Heap Scan on p1
4272 Recheck Cond: ((id >= 50) AND (id <= 51))
4273 Filter: (ctid = '(1,1)'::tid)
4274 -> Bitmap Index Scan on p1_pkey
4275 Index Cond: ((id >= 50) AND (id <= 51))
4276 -> Index Scan using t1_pkey on t1
4277 Index Cond: ((id = p1.id) AND (id < 10))
4281 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;
4290 --------------------------------------------------
4293 TID Cond: (ctid = '(1,1)'::tid)
4294 Filter: ((id >= 50) AND (id <= 51))
4295 -> Index Scan using t1_pkey on t1
4296 Index Cond: ((id = p1.id) AND (id < 10))
4300 /*+SeqScan("""t1 ) ")IndexScan("t 2 """)HashJoin("""t1 ) "T3"t 2 """)Leading("""t1 ) "T3"t 2 """)Set(application_name"a a a"" a A")*/
4301 EXPLAIN (COSTS false) SELECT * FROM t1 """t1 ) ", t2 "t 2 """, t3 "T3" WHERE """t1 ) ".id = "t 2 """.id AND """t1 ) ".id = "T3".id;
4306 HashJoin("""t1 ) " T3 "t 2 """)
4307 Leading("""t1 ) " T3 "t 2 """)
4308 Set(application_name "a a a"" a A")
4314 ---------------------------------------------------------
4316 Hash Cond: ("t 2 """.id = """t1 ) ".id)
4317 -> Index Scan using t2_pkey on t2 "t 2 """
4320 Hash Cond: ("""t1 ) ".id = "T3".id)
4321 -> Seq Scan on t1 """t1 ) "
4323 -> Seq Scan on t3 "T3"
4326 -- duplicate hint test
4327 /*+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)*/
4328 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
4329 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)"
4330 DETAIL: Conflict scan method hint.
4331 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)"
4332 DETAIL: Conflict scan method hint.
4333 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)"
4334 DETAIL: Conflict scan method hint.
4335 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)"
4336 DETAIL: Conflict scan method hint.
4337 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)"
4338 DETAIL: Conflict scan method hint.
4339 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)"
4340 DETAIL: Conflict scan method hint.
4341 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)"
4342 DETAIL: Conflict join method hint.
4343 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)"
4344 DETAIL: Conflict join method hint.
4345 INFO: pg_hint_plan: hint syntax error at or near "Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4346 DETAIL: Conflict set hint.
4347 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)"
4348 DETAIL: Conflict leading hint.
4355 Set(enable_mergejoin on)
4356 Set(enable_seqscan on)
4368 Set(enable_seqscan off)
4372 -----------------------------------------------
4374 Merge Cond: (t1.id = t2.id)
4378 TID Cond: (ctid = '(1,1)'::tid)
4382 TID Cond: (ctid = '(1,1)'::tid)
4385 -- sub query Leading hint test
4386 SET from_collapse_limit TO 100;
4387 SET geqo_threshold TO 100;
4388 EXPLAIN (COSTS false)
4390 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
4393 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
4394 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4395 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
4396 ) 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 = (
4397 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
4400 ------------------------------------------------------------------------------
4405 Merge Cond: (t1_5.id = t3_5.id)
4407 Merge Cond: (t1_5.id = t2_5.id)
4408 -> Index Only Scan using t1_pkey on t1 t1_5
4409 -> Index Only Scan using t2_pkey on t2 t2_5
4412 -> Seq Scan on t3 t3_5
4413 InitPlan 2 (returns $1)
4416 Merge Cond: (t1_2.id = t3_2.id)
4418 Merge Cond: (t1_2.id = t2_2.id)
4419 -> Index Only Scan using t1_pkey on t1 t1_2
4420 -> Index Only Scan using t2_pkey on t2 t2_2
4423 -> Seq Scan on t3 t3_2
4424 InitPlan 3 (returns $2)
4427 Merge Cond: (t1_4.id = t3_4.id)
4429 Merge Cond: (t1_4.id = t2_4.id)
4430 -> Index Only Scan using t1_pkey on t1 t1_4
4431 -> Index Only Scan using t2_pkey on t2 t2_4
4434 -> Seq Scan on t3 t3_4
4440 -> Index Only Scan using t1_pkey on t1 t1_1
4441 Index Cond: (id = $2)
4442 -> Index Only Scan using t2_pkey on t2 t2_1
4443 Index Cond: (id = $2)
4444 -> Seq Scan on t3 t3_1
4446 -> Index Only Scan using t1_pkey on t1 t1_3
4447 Index Cond: (id = $2)
4448 -> Index Only Scan using t2_pkey on t2 t2_3
4449 Index Cond: (id = $2)
4450 -> Seq Scan on t3 t3_3
4456 /*+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)*/
4457 EXPLAIN (COSTS false)
4459 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
4462 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
4463 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4464 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
4465 ) 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 = (
4466 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
4472 MergeJoin(t1_3 t3_3)
4480 ------------------------------------------------------------------------------
4485 Merge Cond: (t1_5.id = t3_5.id)
4487 -> Index Only Scan using t2_pkey on t2 t2_5
4488 -> Index Only Scan using t1_pkey on t1 t1_5
4489 Index Cond: (id = t2_5.id)
4492 -> Seq Scan on t3 t3_5
4493 InitPlan 2 (returns $3)
4496 Merge Cond: (t1_2.id = t3_2.id)
4498 -> Index Only Scan using t2_pkey on t2 t2_2
4499 -> Index Only Scan using t1_pkey on t1 t1_2
4500 Index Cond: (id = t2_2.id)
4503 -> Seq Scan on t3 t3_2
4504 InitPlan 3 (returns $5)
4507 Merge Cond: (t1_4.id = t3_4.id)
4509 -> Index Only Scan using t2_pkey on t2 t2_4
4510 -> Index Only Scan using t1_pkey on t1 t1_4
4511 Index Cond: (id = t2_4.id)
4514 -> Seq Scan on t3 t3_4
4520 -> Index Only Scan using t1_pkey on t1 t1_1
4521 Index Cond: (id = $5)
4522 -> Index Only Scan using t2_pkey on t2 t2_1
4523 Index Cond: (id = $5)
4524 -> Seq Scan on t3 t3_1
4526 -> Index Only Scan using t1_pkey on t1 t1_3
4527 Index Cond: (id = $5)
4528 -> Index Only Scan using t2_pkey on t2 t2_3
4529 Index Cond: (id = $5)
4530 -> Seq Scan on t3 t3_3
4536 /*+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)*/
4537 EXPLAIN (COSTS false)
4539 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
4542 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
4543 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4544 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
4545 ) 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 = (
4546 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
4552 MergeJoin(t1_3 t3_3)
4556 Leading(a t1_1 t1_2 t1_4 t1_5)
4561 ------------------------------------------------------------------------------
4566 Merge Cond: (t1_5.id = t3_5.id)
4568 -> Index Only Scan using t2_pkey on t2 t2_5
4569 -> Index Only Scan using t1_pkey on t1 t1_5
4570 Index Cond: (id = t2_5.id)
4573 -> Seq Scan on t3 t3_5
4574 InitPlan 2 (returns $3)
4577 Merge Cond: (t1_2.id = t3_2.id)
4579 -> Index Only Scan using t2_pkey on t2 t2_2
4580 -> Index Only Scan using t1_pkey on t1 t1_2
4581 Index Cond: (id = t2_2.id)
4584 -> Seq Scan on t3 t3_2
4585 InitPlan 3 (returns $5)
4588 Merge Cond: (t1_4.id = t3_4.id)
4590 -> Index Only Scan using t2_pkey on t2 t2_4
4591 -> Index Only Scan using t1_pkey on t1 t1_4
4592 Index Cond: (id = t2_4.id)
4595 -> Seq Scan on t3 t3_4
4601 -> Index Only Scan using t1_pkey on t1 t1_1
4602 Index Cond: (id = $5)
4603 -> Index Only Scan using t2_pkey on t2 t2_1
4604 Index Cond: (id = $5)
4605 -> Seq Scan on t3 t3_1
4607 -> Index Only Scan using t1_pkey on t1 t1_3
4608 Index Cond: (id = $5)
4609 -> Index Only Scan using t2_pkey on t2 t2_3
4610 Index Cond: (id = $5)
4611 -> Seq Scan on t3 t3_3
4617 /*+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)*/
4618 EXPLAIN (COSTS false)
4620 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
4623 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
4624 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4625 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
4626 ) 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 = (
4627 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
4633 MergeJoin(t1_3 t3_3)
4637 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)
4642 ------------------------------------------------------------------------------
4647 Merge Cond: (t1_5.id = t3_5.id)
4649 -> Index Only Scan using t2_pkey on t2 t2_5
4650 -> Index Only Scan using t1_pkey on t1 t1_5
4651 Index Cond: (id = t2_5.id)
4654 -> Seq Scan on t3 t3_5
4655 InitPlan 2 (returns $3)
4658 Merge Cond: (t1_2.id = t3_2.id)
4660 -> Index Only Scan using t2_pkey on t2 t2_2
4661 -> Index Only Scan using t1_pkey on t1 t1_2
4662 Index Cond: (id = t2_2.id)
4665 -> Seq Scan on t3 t3_2
4666 InitPlan 3 (returns $5)
4669 Merge Cond: (t1_4.id = t3_4.id)
4671 -> Index Only Scan using t2_pkey on t2 t2_4
4672 -> Index Only Scan using t1_pkey on t1 t1_4
4673 Index Cond: (id = t2_4.id)
4676 -> Seq Scan on t3 t3_4
4682 -> Index Only Scan using t1_pkey on t1 t1_1
4683 Index Cond: (id = $5)
4684 -> Index Only Scan using t2_pkey on t2 t2_1
4685 Index Cond: (id = $5)
4686 -> Seq Scan on t3 t3_1
4688 -> Index Only Scan using t1_pkey on t1 t1_3
4689 Index Cond: (id = $5)
4690 -> Index Only Scan using t2_pkey on t2 t2_3
4691 Index Cond: (id = $5)
4692 -> Seq Scan on t3 t3_3
4698 /*+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)*/
4699 EXPLAIN (COSTS false)
4701 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
4704 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
4705 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4706 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
4707 ) 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 = (
4708 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
4712 Leading(t3_5 t2_5 t1_5)
4713 Leading(t3_2 t2_2 t1_2)
4714 Leading(t3_4 t2_4 t1_4)
4715 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
4719 MergeJoin(t1_3 t3_3)
4726 ------------------------------------------------------------------------
4731 Merge Cond: (t2_5.id = t1_5.id)
4733 Merge Cond: (t2_5.id = t3_5.id)
4734 -> Index Only Scan using t2_pkey on t2 t2_5
4737 -> Seq Scan on t3 t3_5
4738 -> Index Only Scan using t1_pkey on t1 t1_5
4739 InitPlan 2 (returns $1)
4742 Merge Cond: (t2_2.id = t1_2.id)
4744 Merge Cond: (t2_2.id = t3_2.id)
4745 -> Index Only Scan using t2_pkey on t2 t2_2
4748 -> Seq Scan on t3 t3_2
4749 -> Index Only Scan using t1_pkey on t1 t1_2
4750 InitPlan 3 (returns $2)
4753 Merge Cond: (t2_4.id = t1_4.id)
4755 Merge Cond: (t2_4.id = t3_4.id)
4756 -> Index Only Scan using t2_pkey on t2 t2_4
4759 -> Seq Scan on t3 t3_4
4760 -> Index Only Scan using t1_pkey on t1 t1_4
4766 -> Seq Scan on t3 t3_3
4770 -> Index Only Scan using t2_pkey on t2 t2_3
4771 Index Cond: (id = $2)
4772 -> Index Only Scan using t1_pkey on t1 t1_3
4773 Index Cond: (id = $2)
4774 -> Seq Scan on t3 t3_1
4776 -> Index Only Scan using t2_pkey on t2 t2_1
4777 Index Cond: (id = $2)
4778 -> Index Only Scan using t1_pkey on t1 t1_1
4779 Index Cond: (id = $2)
4782 SET from_collapse_limit TO 1;
4783 EXPLAIN (COSTS false)
4785 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
4788 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
4789 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4790 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
4791 ) 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 = (
4792 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
4795 --------------------------------------------------------------------
4800 Merge Cond: (t1_5.id = t3_5.id)
4802 Merge Cond: (t1_5.id = t2_5.id)
4803 -> Index Only Scan using t1_pkey on t1 t1_5
4804 -> Index Only Scan using t2_pkey on t2 t2_5
4807 -> Seq Scan on t3 t3_5
4808 InitPlan 2 (returns $1)
4811 Merge Cond: (t1_2.id = t3_2.id)
4813 Merge Cond: (t1_2.id = t2_2.id)
4814 -> Index Only Scan using t1_pkey on t1 t1_2
4815 -> Index Only Scan using t2_pkey on t2 t2_2
4818 -> Seq Scan on t3 t3_2
4819 InitPlan 3 (returns $2)
4822 Merge Cond: (t1_4.id = t3_4.id)
4824 Merge Cond: (t1_4.id = t2_4.id)
4825 -> Index Only Scan using t1_pkey on t1 t1_4
4826 -> Index Only Scan using t2_pkey on t2 t2_4
4829 -> Seq Scan on t3 t3_4
4833 -> Index Only Scan using t1_pkey on t1 t1_1
4834 Index Cond: (id = $2)
4835 -> Index Only Scan using t2_pkey on t2 t2_1
4836 Index Cond: (id = $2)
4837 -> Seq Scan on t3 t3_1
4841 -> Index Only Scan using t1_pkey on t1 t1_3
4842 Index Cond: (id = $2)
4843 -> Index Only Scan using t2_pkey on t2 t2_3
4844 Index Cond: (id = $2)
4845 -> Seq Scan on t3 t3_3
4851 /*+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)*/
4852 EXPLAIN (COSTS false)
4854 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
4857 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
4858 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4859 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
4860 ) 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 = (
4861 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
4867 MergeJoin(t1_3 t3_3)
4875 --------------------------------------------------------------------
4880 Merge Cond: (t1_5.id = t3_5.id)
4882 -> Index Only Scan using t2_pkey on t2 t2_5
4883 -> Index Only Scan using t1_pkey on t1 t1_5
4884 Index Cond: (id = t2_5.id)
4887 -> Seq Scan on t3 t3_5
4888 InitPlan 2 (returns $3)
4891 Merge Cond: (t1_2.id = t3_2.id)
4893 -> Index Only Scan using t2_pkey on t2 t2_2
4894 -> Index Only Scan using t1_pkey on t1 t1_2
4895 Index Cond: (id = t2_2.id)
4898 -> Seq Scan on t3 t3_2
4899 InitPlan 3 (returns $5)
4902 Merge Cond: (t1_4.id = t3_4.id)
4904 -> Index Only Scan using t2_pkey on t2 t2_4
4905 -> Index Only Scan using t1_pkey on t1 t1_4
4906 Index Cond: (id = t2_4.id)
4909 -> Seq Scan on t3 t3_4
4913 -> Index Only Scan using t1_pkey on t1 t1_1
4914 Index Cond: (id = $5)
4915 -> Index Only Scan using t2_pkey on t2 t2_1
4916 Index Cond: (id = $5)
4917 -> Seq Scan on t3 t3_1
4921 -> Index Only Scan using t1_pkey on t1 t1_3
4922 Index Cond: (id = $5)
4923 -> Index Only Scan using t2_pkey on t2 t2_3
4924 Index Cond: (id = $5)
4925 -> Seq Scan on t3 t3_3
4931 /*+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)*/
4932 EXPLAIN (COSTS false)
4934 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
4937 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
4938 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4939 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
4940 ) 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 = (
4941 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
4947 MergeJoin(t1_3 t3_3)
4951 Leading(a t1_1 t1_2 t1_4 t1_5)
4956 --------------------------------------------------------------------
4961 Merge Cond: (t1_5.id = t3_5.id)
4963 -> Index Only Scan using t2_pkey on t2 t2_5
4964 -> Index Only Scan using t1_pkey on t1 t1_5
4965 Index Cond: (id = t2_5.id)
4968 -> Seq Scan on t3 t3_5
4969 InitPlan 2 (returns $3)
4972 Merge Cond: (t1_2.id = t3_2.id)
4974 -> Index Only Scan using t2_pkey on t2 t2_2
4975 -> Index Only Scan using t1_pkey on t1 t1_2
4976 Index Cond: (id = t2_2.id)
4979 -> Seq Scan on t3 t3_2
4980 InitPlan 3 (returns $5)
4983 Merge Cond: (t1_4.id = t3_4.id)
4985 -> Index Only Scan using t2_pkey on t2 t2_4
4986 -> Index Only Scan using t1_pkey on t1 t1_4
4987 Index Cond: (id = t2_4.id)
4990 -> Seq Scan on t3 t3_4
4994 -> Index Only Scan using t1_pkey on t1 t1_1
4995 Index Cond: (id = $5)
4996 -> Index Only Scan using t2_pkey on t2 t2_1
4997 Index Cond: (id = $5)
4998 -> Seq Scan on t3 t3_1
5002 -> Index Only Scan using t1_pkey on t1 t1_3
5003 Index Cond: (id = $5)
5004 -> Index Only Scan using t2_pkey on t2 t2_3
5005 Index Cond: (id = $5)
5006 -> Seq Scan on t3 t3_3
5012 /*+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)*/
5013 EXPLAIN (COSTS false)
5015 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
5018 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
5019 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5020 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
5021 ) 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 = (
5022 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
5028 MergeJoin(t1_3 t3_3)
5032 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)
5037 --------------------------------------------------------------------
5042 Merge Cond: (t1_5.id = t3_5.id)
5044 -> Index Only Scan using t2_pkey on t2 t2_5
5045 -> Index Only Scan using t1_pkey on t1 t1_5
5046 Index Cond: (id = t2_5.id)
5049 -> Seq Scan on t3 t3_5
5050 InitPlan 2 (returns $3)
5053 Merge Cond: (t1_2.id = t3_2.id)
5055 -> Index Only Scan using t2_pkey on t2 t2_2
5056 -> Index Only Scan using t1_pkey on t1 t1_2
5057 Index Cond: (id = t2_2.id)
5060 -> Seq Scan on t3 t3_2
5061 InitPlan 3 (returns $5)
5064 Merge Cond: (t1_4.id = t3_4.id)
5066 -> Index Only Scan using t2_pkey on t2 t2_4
5067 -> Index Only Scan using t1_pkey on t1 t1_4
5068 Index Cond: (id = t2_4.id)
5071 -> Seq Scan on t3 t3_4
5075 -> Index Only Scan using t1_pkey on t1 t1_1
5076 Index Cond: (id = $5)
5077 -> Index Only Scan using t2_pkey on t2 t2_1
5078 Index Cond: (id = $5)
5079 -> Seq Scan on t3 t3_1
5083 -> Index Only Scan using t1_pkey on t1 t1_3
5084 Index Cond: (id = $5)
5085 -> Index Only Scan using t2_pkey on t2 t2_3
5086 Index Cond: (id = $5)
5087 -> Seq Scan on t3 t3_3
5093 /*+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)*/
5094 EXPLAIN (COSTS false)
5096 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
5099 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
5100 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5101 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
5102 ) 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 = (
5103 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
5107 MergeJoin(t1_3 t3_3)
5108 Leading(t3_5 t2_5 t1_5)
5109 Leading(t3_2 t2_2 t1_2)
5110 Leading(t3_4 t2_4 t1_4)
5111 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
5121 ------------------------------------------------------------------------------
5126 Merge Cond: (t2_5.id = t1_5.id)
5128 Merge Cond: (t2_5.id = t3_5.id)
5129 -> Index Only Scan using t2_pkey on t2 t2_5
5132 -> Seq Scan on t3 t3_5
5133 -> Index Only Scan using t1_pkey on t1 t1_5
5134 InitPlan 2 (returns $1)
5137 Merge Cond: (t2_2.id = t1_2.id)
5139 Merge Cond: (t2_2.id = t3_2.id)
5140 -> Index Only Scan using t2_pkey on t2 t2_2
5143 -> Seq Scan on t3 t3_2
5144 -> Index Only Scan using t1_pkey on t1 t1_2
5145 InitPlan 3 (returns $2)
5148 Merge Cond: (t2_4.id = t1_4.id)
5150 Merge Cond: (t2_4.id = t3_4.id)
5151 -> Index Only Scan using t2_pkey on t2 t2_4
5154 -> Seq Scan on t3 t3_4
5155 -> Index Only Scan using t1_pkey on t1 t1_4
5161 -> Index Only Scan using t1_pkey on t1 t1_3
5162 Index Cond: (id = $2)
5163 -> Index Only Scan using t2_pkey on t2 t2_3
5164 Index Cond: (id = $2)
5165 -> Seq Scan on t3 t3_3
5169 -> Seq Scan on t3 t3_1
5171 -> Index Only Scan using t2_pkey on t2 t2_1
5172 Index Cond: (id = $2)
5173 -> Index Only Scan using t1_pkey on t1 t1_1
5174 Index Cond: (id = $2)
5178 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5180 -------------------------------------------------
5182 Merge Cond: (t1.id = t2.id)
5184 Merge Cond: (t1.id = t1_1.id)
5185 -> Index Scan using t1_pkey on t1
5186 -> Index Scan using t1_pkey on t1 t1_1
5187 -> Index Scan using t2_pkey on t2
5190 /*+NestLoop(t1 t2)*/
5191 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5192 INFO: pg_hint_plan: hint syntax error at or near "NestLoop(t1 t2)"
5193 DETAIL: Relation name "t1" is ambiguous.
5202 -------------------------------------------------
5204 Merge Cond: (t1.id = t2.id)
5206 Merge Cond: (t1.id = t1_1.id)
5207 -> Index Scan using t1_pkey on t1
5208 -> Index Scan using t1_pkey on t1 t1_1
5209 -> Index Scan using t2_pkey on t2
5212 /*+Leading(t1 t2 t1)*/
5213 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5214 INFO: pg_hint_plan: hint syntax error at or near "Leading(t1 t2 t1)"
5215 DETAIL: Relation name "t1" is ambiguous.
5224 -------------------------------------------------
5226 Merge Cond: (t1.id = t2.id)
5228 Merge Cond: (t1.id = t1_1.id)
5229 -> Index Scan using t1_pkey on t1
5230 -> Index Scan using t1_pkey on t1 t1_1
5231 -> Index Scan using t2_pkey on t2
5234 -- identifier length test
5235 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5237 --------------------------------------------------------------------------------------------------------------
5239 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5241 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id)
5242 -> Index Scan using t1_pkey on t1 "123456789012345678901234567890123456789012345678901234567890123"
5243 -> Index Scan using t2_pkey on t2
5250 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5251 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5252 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5253 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5255 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5256 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5259 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5260 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5261 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5265 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5268 ----------------------------------------------------------------------------------------------------
5270 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5272 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5273 -> Index Scan using t2_pkey on t2
5275 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5276 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5283 Leading(1234567890123456789012345678901234567890123456789012345678901234 t2 t3)
5284 SeqScan(1234567890123456789012345678901234567890123456789012345678901234)
5285 MergeJoin(1234567890123456789012345678901234567890123456789012345678901234 t2)
5286 Set(1234567890123456789012345678901234567890123456789012345678901234 1)
5287 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5289 EXPLAIN (COSTS false) SELECT * FROM t1 "1234567890123456789012345678901234567890123456789012345678901234" JOIN t2 ON ("1234567890123456789012345678901234567890123456789012345678901234".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5290 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5291 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5292 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5293 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5294 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5295 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5296 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5299 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5300 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5301 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5302 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5306 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5309 ----------------------------------------------------------------------------------------------------
5311 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5313 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5314 -> Index Scan using t2_pkey on t2
5316 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5317 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5323 SET "123456789012345678901234567890123456789012345678901234567890123" TO 1;
5324 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5325 SET "1234567890123456789012345678901234567890123456789012345678901234" TO 1;
5326 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5327 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5328 SET cursor_tuple_fraction TO 1234567890123456789012345678901234567890123456789012345678901234;
5329 ERROR: 1.23457e+63 is outside the valid range for parameter "cursor_tuple_fraction" (0 .. 1)
5331 /*+ Set(enable_seqscan 100)Set(seq_page_cost on)*/
5332 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
5333 INFO: parameter "enable_seqscan" requires a Boolean value
5334 INFO: parameter "seq_page_cost" requires a numeric value
5340 Set(enable_seqscan 100)
5341 Set(seq_page_cost on)
5344 --------------------------------------
5346 Merge Cond: (t1.id = t2.id)
5347 -> Index Scan using t1_pkey on t1
5348 -> Index Scan using t2_pkey on t2
5351 -- debug log of candidate index to use IndexScan
5352 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5354 ----------------------------------------------------------------------------------------
5355 Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
5356 Index Cond: (id = 1)
5359 /*+IndexScan(t5 t5_id2)*/
5360 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5361 LOG: available indexes for IndexScan(t5): t5_id2
5364 IndexScan(t5 t5_id2)
5370 -------------------------------
5371 Index Scan using t5_id2 on t5
5372 Index Cond: (id = 1)
5375 /*+IndexScan(t5 no_exist)*/
5376 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5377 LOG: available indexes for IndexScan(t5):
5380 IndexScan(t5 no_exist)
5386 --------------------
5391 /*+IndexScan(t5 t5_id1 t5_id2)*/
5392 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5393 LOG: available indexes for IndexScan(t5): t5_id2 t5_id1
5396 IndexScan(t5 t5_id1 t5_id2)
5402 -------------------------------
5403 Index Scan using t5_id2 on t5
5404 Index Cond: (id = 1)
5407 /*+IndexScan(t5 no_exist t5_id2)*/
5408 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5409 LOG: available indexes for IndexScan(t5): t5_id2
5412 IndexScan(t5 no_exist t5_id2)
5418 -------------------------------
5419 Index Scan using t5_id2 on t5
5420 Index Cond: (id = 1)
5423 /*+IndexScan(t5 no_exist5 no_exist2)*/
5424 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5425 LOG: available indexes for IndexScan(t5):
5428 IndexScan(t5 no_exist5 no_exist2)
5434 --------------------
5440 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5442 --------------------------------------------------------
5444 Hash Cond: (t3.val = t2.val)
5448 Hash Cond: (t2.id = t1.id)
5451 -> Index Scan using t1_pkey on t1
5452 Index Cond: (id < 10)
5456 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5457 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1))"
5458 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5467 --------------------------------------------------------
5469 Hash Cond: (t3.val = t2.val)
5473 Hash Cond: (t2.id = t1.id)
5476 -> Index Scan using t1_pkey on t1
5477 Index Cond: (id < 10)
5480 /*+Leading((t1 t2))*/
5481 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5490 --------------------------------------------
5492 Join Filter: (t2.val = t3.val)
5494 Hash Cond: (t1.id = t2.id)
5495 -> Index Scan using t1_pkey on t1
5496 Index Cond: (id < 10)
5502 /*+Leading((t1 t2 t3))*/
5503 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5504 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1 t2 t3))"
5505 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5514 --------------------------------------------------------
5516 Hash Cond: (t3.val = t2.val)
5520 Hash Cond: (t2.id = t1.id)
5523 -> Index Scan using t1_pkey on t1
5524 Index Cond: (id < 10)
5527 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5529 --------------------------------------------
5531 Hash Cond: (t2.id = t1.id)
5534 -> Index Scan using t1_pkey on t1
5535 Index Cond: (id < 10)
5538 /*+Leading((t1 t2))*/
5539 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5548 --------------------------------------
5550 Hash Cond: (t1.id = t2.id)
5551 -> Index Scan using t1_pkey on t1
5552 Index Cond: (id < 10)
5557 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5559 --------------------------------------------------------
5561 Hash Cond: (t3.val = t2.val)
5565 Hash Cond: (t2.id = t1.id)
5568 -> Index Scan using t1_pkey on t1
5569 Index Cond: (id < 10)
5572 /*+Leading(((t1 t2) t3))*/
5573 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5576 Leading(((t1 t2) t3))
5582 --------------------------------------------
5584 Join Filter: (t2.val = t3.val)
5586 Hash Cond: (t1.id = t2.id)
5587 -> Index Scan using t1_pkey on t1
5588 Index Cond: (id < 10)
5594 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;
5596 --------------------------------------------------------
5599 Merge Cond: (t3.id = t4.id)
5601 Join Filter: (t1.val = t3.val)
5602 -> Index Scan using t3_pkey on t3
5604 -> Index Scan using t1_pkey on t1
5605 Index Cond: (id < 10)
5609 -> Index Scan using t2_pkey on t2
5610 Index Cond: (id = t1.id)
5613 /*+Leading((((t1 t2) t3) t4))*/
5614 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;
5617 Leading((((t1 t2) t3) t4))
5623 --------------------------------------------------
5626 Join Filter: (t1.val = t3.val)
5628 Hash Cond: (t1.id = t2.id)
5629 -> Index Scan using t1_pkey on t1
5630 Index Cond: (id < 10)
5634 -> Index Scan using t4_pkey on t4
5635 Index Cond: (id = t3.id)
5638 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5640 --------------------------------------------------------
5642 Hash Cond: (t3.val = t2.val)
5646 Hash Cond: (t2.id = t1.id)
5649 -> Index Scan using t1_pkey on t1
5650 Index Cond: (id < 10)
5653 /*+Leading(((t1 t2) t3))*/
5654 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5657 Leading(((t1 t2) t3))
5663 --------------------------------------------
5665 Join Filter: (t2.val = t3.val)
5667 Hash Cond: (t1.id = t2.id)
5668 -> Index Scan using t1_pkey on t1
5669 Index Cond: (id < 10)
5675 /*+Leading((t1 (t2 t3)))*/
5676 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5679 Leading((t1 (t2 t3)))
5685 --------------------------------------------
5687 Hash Cond: (t1.id = t2.id)
5688 -> Index Scan using t1_pkey on t1
5689 Index Cond: (id < 10)
5692 Hash Cond: (t2.val = t3.val)
5698 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t3.id = t4.id AND t1.val = t3.val AND t1.id < 10;
5700 --------------------------------------------------------
5703 Merge Cond: (t3.id = t4.id)
5705 Join Filter: (t1.val = t3.val)
5706 -> Index Scan using t3_pkey on t3
5708 -> Index Scan using t1_pkey on t1
5709 Index Cond: (id < 10)
5713 -> Index Scan using t2_pkey on t2
5714 Index Cond: (id = t1.id)
5717 /*+Leading(((t1 t2) (t3 t4)))*/
5718 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t3.id = t4.id AND t1.val = t3.val AND t1.id < 10;
5721 Leading(((t1 t2) (t3 t4)))
5727 --------------------------------------------
5729 Join Filter: (t1.val = t3.val)
5731 Hash Cond: (t1.id = t2.id)
5732 -> Index Scan using t1_pkey on t1
5733 Index Cond: (id < 10)
5737 Merge Cond: (t3.id = t4.id)
5738 -> Index Scan using t3_pkey on t3
5744 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);
5746 --------------------------------------------------------------------
5748 Hash Cond: (t2.val = t3.val)
5749 InitPlan 1 (returns $1)
5754 -> Index Scan using t2_val on t2 t2_2
5755 Index Cond: (val > 100)
5756 -> Index Only Scan using t1_pkey on t1 t1_2
5757 Index Cond: (id = t2_2.id)
5759 Merge Cond: (t1.id = t2.id)
5760 -> Index Scan using t1_pkey on t1
5761 Index Cond: (id < $1)
5762 -> Index Scan using t2_pkey on t2
5767 /*+Leading(((t1 t2) t3)) Leading(((t3 t1) t2))*/
5768 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);
5769 INFO: pg_hint_plan: hint syntax error at or near "Leading(((t1 t2) t3)) Leading(((t3 t1) t2))"
5770 DETAIL: Conflict leading hint.
5773 Leading(((t3 t1) t2))
5776 Leading(((t1 t2) t3))
5780 --------------------------------------------------------------------
5782 Hash Cond: (t1.id = t2.id)
5783 InitPlan 1 (returns $1)
5788 -> Index Scan using t2_val on t2 t2_2
5789 Index Cond: (val > 100)
5790 -> Index Only Scan using t1_pkey on t1 t1_2
5791 Index Cond: (id = t2_2.id)
5793 Hash Cond: (t3.val = t1.val)
5796 -> Index Scan using t1_pkey on t1
5797 Index Cond: (id < $1)
5802 /*+Leading(((t1 t2) t3)) Leading((t1_2 t2_2))*/
5803 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);
5806 Leading(((t1 t2) t3))
5807 Leading((t1_2 t2_2))
5813 --------------------------------------------------------------
5815 Hash Cond: (t2.val = t3.val)
5816 InitPlan 1 (returns $0)
5819 Merge Cond: (t1_2.id = t2_2.id)
5820 -> Index Only Scan using t1_pkey on t1 t1_2
5823 -> Index Scan using t2_val on t2 t2_2
5824 Index Cond: (val > 100)
5826 Merge Cond: (t1.id = t2.id)
5827 -> Index Scan using t1_pkey on t1
5828 Index Cond: (id < $0)
5829 -> Index Scan using t2_pkey on t2
5834 /*+Leading(((((t1 t2) t3) t1_2) t2_2))*/
5835 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);
5839 Leading(((((t1 t2) t3) t1_2) t2_2))
5844 --------------------------------------------------------------------
5846 Hash Cond: (t2.val = t3.val)
5847 InitPlan 1 (returns $1)
5852 -> Index Scan using t2_val on t2 t2_2
5853 Index Cond: (val > 100)
5854 -> Index Only Scan using t1_pkey on t1 t1_2
5855 Index Cond: (id = t2_2.id)
5857 Merge Cond: (t1.id = t2.id)
5858 -> Index Scan using t1_pkey on t1
5859 Index Cond: (id < $1)
5860 -> Index Scan using t2_pkey on t2
5865 -- Specified outer/inner leading hint and join method hint at the same time
5866 /*+Leading(((t1 t2) t3))*/
5867 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5870 Leading(((t1 t2) t3))
5876 --------------------------------------------
5878 Join Filter: (t2.val = t3.val)
5880 Hash Cond: (t1.id = t2.id)
5881 -> Index Scan using t1_pkey on t1
5882 Index Cond: (id < 10)
5888 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2)*/
5889 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5893 Leading(((t1 t2) t3))
5899 --------------------------------------------
5901 Join Filter: (t2.val = t3.val)
5903 Merge Cond: (t1.id = t2.id)
5904 -> Index Scan using t1_pkey on t1
5905 Index Cond: (id < 10)
5906 -> Index Scan using t2_pkey on t2
5910 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3)*/
5911 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5915 Leading(((t1 t2) t3))
5921 --------------------------------------------------
5923 Merge Cond: (t2.val = t3.val)
5927 Hash Cond: (t1.id = t2.id)
5928 -> Index Scan using t1_pkey on t1
5929 Index Cond: (id < 10)
5937 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t3)*/
5938 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5941 Leading(((t1 t2) t3))
5948 --------------------------------------------
5950 Join Filter: (t2.val = t3.val)
5952 Hash Cond: (t1.id = t2.id)
5953 -> Index Scan using t1_pkey on t1
5954 Index Cond: (id < 10)
5960 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;
5962 --------------------------------------------------------
5965 Merge Cond: (t3.id = t4.id)
5967 Join Filter: (t1.val = t3.val)
5968 -> Index Scan using t3_pkey on t3
5970 -> Index Scan using t1_pkey on t1
5971 Index Cond: (id < 10)
5975 -> Index Scan using t2_pkey on t2
5976 Index Cond: (id = t1.id)
5979 /*+Leading(((t1 t2) t3)) MergeJoin(t3 t4)*/
5980 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;
5983 Leading(((t1 t2) t3))
5990 --------------------------------------------------
5992 Join Filter: (t3.id = t4.id)
5994 Join Filter: (t1.val = t3.val)
5996 Hash Cond: (t1.id = t2.id)
5997 -> Index Scan using t1_pkey on t1
5998 Index Cond: (id < 10)
6005 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3 t4)*/
6006 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;
6009 MergeJoin(t1 t2 t3 t4)
6010 Leading(((t1 t2) t3))
6016 --------------------------------------------------------
6018 Merge Cond: (t3.id = t4.id)
6022 Join Filter: (t1.val = t3.val)
6024 Hash Cond: (t1.id = t2.id)
6025 -> Index Scan using t1_pkey on t1
6026 Index Cond: (id < 10)
6035 /*+ Leading ( ( t1 ( t2 t3 ) ) ) */
6036 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6039 Leading((t1 (t2 t3)))
6045 --------------------------------------------
6047 Hash Cond: (t1.id = t2.id)
6048 -> Index Scan using t1_pkey on t1
6049 Index Cond: (id < 10)
6052 Hash Cond: (t2.val = t3.val)
6058 /*+Leading((t1(t2 t3)))*/
6059 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6062 Leading((t1 (t2 t3)))
6068 --------------------------------------------
6070 Hash Cond: (t1.id = t2.id)
6071 -> Index Scan using t1_pkey on t1
6072 Index Cond: (id < 10)
6075 Hash Cond: (t2.val = t3.val)
6081 /*+Leading(("t1(t2" "t3)"))*/
6082 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6086 Leading(("t1(t2" "t3)"))
6091 --------------------------------------------------------
6093 Hash Cond: (t3.val = t2.val)
6097 Hash Cond: (t2.id = t1.id)
6100 -> Index Scan using t1_pkey on t1
6101 Index Cond: (id < 10)
6104 /*+ Leading ( ( ( t1 t2 ) t3 ) ) */
6105 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6108 Leading(((t1 t2) t3))
6114 --------------------------------------------
6116 Join Filter: (t2.val = t3.val)
6118 Hash Cond: (t1.id = t2.id)
6119 -> Index Scan using t1_pkey on t1
6120 Index Cond: (id < 10)
6126 /*+Leading(((t1 t2)t3))*/
6127 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6130 Leading(((t1 t2) t3))
6136 --------------------------------------------
6138 Join Filter: (t2.val = t3.val)
6140 Hash Cond: (t1.id = t2.id)
6141 -> Index Scan using t1_pkey on t1
6142 Index Cond: (id < 10)
6148 /*+Leading(("(t1" "t2)t3"))*/
6149 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6153 Leading(("(t1" "t2)t3"))
6158 --------------------------------------------------------
6160 Hash Cond: (t3.val = t2.val)
6164 Hash Cond: (t2.id = t1.id)
6167 -> Index Scan using t1_pkey on t1
6168 Index Cond: (id < 10)
6171 /*+Leading((t1(t2(t3(t4 t5)))))*/
6172 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;
6175 Leading((t1 (t2 (t3 (t4 t5)))))
6181 ----------------------------------------------------------------------------------------------------------------------------------
6183 Merge Cond: (t1.id = t2.id)
6184 -> Index Scan using t1_pkey on t1
6187 Merge Cond: (t2.id = t3.id)
6188 -> Index Scan using t2_pkey on t2
6191 Merge Cond: (t3.id = t4.id)
6192 -> Index Scan using t3_pkey on t3
6195 Merge Cond: (t4.id = t5.id)
6196 -> Index Scan using t4_pkey on t4
6197 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6200 /*+Leading((t5(t4(t3(t2 t1)))))*/
6201 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;
6204 Leading((t5 (t4 (t3 (t2 t1)))))
6210 --------------------------------------------------------------------------
6212 Hash Cond: (t5.id = t1.id)
6216 Merge Cond: (t4.id = t1.id)
6222 Merge Cond: (t3.id = t1.id)
6228 Merge Cond: (t2.id = t1.id)
6229 -> Index Scan using t2_pkey on t2
6230 -> Index Scan using t1_pkey on t1
6233 /*+Leading(((((t1 t2)t3)t4)t5))*/
6234 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;
6237 Leading(((((t1 t2) t3) t4) t5))
6243 ----------------------------------------------------------------------------------------------
6246 Merge Cond: (t1.id = t4.id)
6248 Merge Cond: (t1.id = t3.id)
6250 Merge Cond: (t1.id = t2.id)
6251 -> Index Scan using t1_pkey on t1
6252 -> Index Scan using t2_pkey on t2
6259 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6260 Index Cond: (id = t1.id)
6263 /*+Leading(((((t5 t4)t3)t2)t1))*/
6264 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;
6267 Leading(((((t5 t4) t3) t2) t1))
6273 ----------------------------------------------------------------------------------------------------------------
6275 Join Filter: (t2.id = t1.id)
6277 Join Filter: (t3.id = t2.id)
6279 Merge Cond: (t4.id = t3.id)
6281 Merge Cond: (t5.id = t4.id)
6282 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6286 -> Index Scan using t3_pkey on t3
6287 -> Index Scan using t2_pkey on t2
6288 Index Cond: (id = t5.id)
6289 -> Index Scan using t1_pkey on t1
6290 Index Cond: (id = t5.id)
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 = t3.id)
6307 Merge Cond: (t1.id = t2.id)
6308 -> Index Scan using t1_pkey on t1
6309 -> Index Scan using t2_pkey on t2
6312 Merge Cond: (t3.id = t4.id)
6313 -> Index Scan using t3_pkey on t3
6316 Merge Cond: (t4.id = t5.id)
6317 -> Index Scan using t4_pkey on t4
6318 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6321 /*+Leading(((t5 t4)(t3(t2 t1))))*/
6322 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;
6325 Leading(((t5 t4) (t3 (t2 t1))))
6331 ----------------------------------------------------------------------------------------------------
6333 Merge Cond: (t4.id = t1.id)
6335 Merge Cond: (t5.id = t4.id)
6336 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6342 Merge Cond: (t3.id = t1.id)
6348 Merge Cond: (t2.id = t1.id)
6349 -> Index Scan using t2_pkey on t2
6350 -> Index Scan using t1_pkey on t1
6353 /*+Leading((((t1 t2)t3)(t4 t5)))*/
6354 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;
6357 Leading((((t1 t2) t3) (t4 t5)))
6363 ----------------------------------------------------------------------------------------------------------
6365 Merge Cond: (t1.id = t4.id)
6367 Merge Cond: (t1.id = t3.id)
6369 Merge Cond: (t1.id = t2.id)
6370 -> Index Scan using t1_pkey on t1
6371 -> Index Scan using t2_pkey on t2
6377 Merge Cond: (t4.id = t5.id)
6378 -> Index Scan using t4_pkey on t4
6379 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6382 /*+Leading((((t5 t4)t3)(t2 t1)))*/
6383 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;
6386 Leading((((t5 t4) t3) (t2 t1)))
6392 ----------------------------------------------------------------------------------------------------------
6394 Merge Cond: (t3.id = t1.id)
6396 Merge Cond: (t4.id = t3.id)
6398 Merge Cond: (t5.id = t4.id)
6399 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6403 -> Index Scan using t3_pkey on t3
6406 Merge Cond: (t2.id = t1.id)
6407 -> Index Scan using t2_pkey on t2
6408 -> Index Scan using t1_pkey on t1
6411 -- inherite table test to specify the index's name
6412 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6414 -----------------------------------------------------------------------
6417 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6418 -> Seq Scan on p2_c1
6419 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6420 -> Seq Scan on p2_c1_c1
6421 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6422 -> Seq Scan on p2_c1_c2
6423 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6426 /*+IndexScan(p2 p2_pkey)*/
6427 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6428 LOG: available indexes for IndexScan(p2): p2_pkey
6429 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6430 LOG: available indexes for IndexScan(p2_c2): p2_c2_pkey
6431 LOG: available indexes for IndexScan(p2_c3): p2_c3_pkey
6432 LOG: available indexes for IndexScan(p2_c4): p2_c4_pkey
6433 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6434 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6435 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_pkey
6436 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_pkey
6439 IndexScan(p2 p2_pkey)
6445 --------------------------------------------------
6447 -> Index Scan using p2_pkey on p2
6448 Index Cond: ((id >= 50) AND (id <= 51))
6449 Filter: (ctid = '(1,1)'::tid)
6450 -> Index Scan using p2_c1_pkey on p2_c1
6451 Index Cond: ((id >= 50) AND (id <= 51))
6452 Filter: (ctid = '(1,1)'::tid)
6453 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6454 Index Cond: ((id >= 50) AND (id <= 51))
6455 Filter: (ctid = '(1,1)'::tid)
6456 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6457 Index Cond: ((id >= 50) AND (id <= 51))
6458 Filter: (ctid = '(1,1)'::tid)
6461 /*+IndexScan(p2 p2_id_val_idx)*/
6462 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6463 LOG: available indexes for IndexScan(p2): p2_id_val_idx
6464 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6465 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
6466 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
6467 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
6468 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
6469 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
6470 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
6471 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
6474 IndexScan(p2 p2_id_val_idx)
6480 --------------------------------------------------------
6482 -> Index Scan using p2_id_val_idx on p2
6483 Index Cond: ((id >= 50) AND (id <= 51))
6484 Filter: (ctid = '(1,1)'::tid)
6485 -> Index Scan using p2_c1_id_val_idx on p2_c1
6486 Index Cond: ((id >= 50) AND (id <= 51))
6487 Filter: (ctid = '(1,1)'::tid)
6488 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
6489 Index Cond: ((id >= 50) AND (id <= 51))
6490 Filter: (ctid = '(1,1)'::tid)
6491 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
6492 Index Cond: ((id >= 50) AND (id <= 51))
6493 Filter: (ctid = '(1,1)'::tid)
6496 /*+IndexScan(p2 p2_val_id_idx)*/
6497 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6498 LOG: available indexes for IndexScan(p2): p2_val_id_idx
6499 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_id_idx
6500 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_id_idx
6501 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_id_idx
6502 LOG: available indexes for IndexScan(p2_c4):
6503 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_id_idx
6504 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_id_idx
6505 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_id_idx
6506 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_id_idx
6509 IndexScan(p2 p2_val_id_idx)
6515 --------------------------------------------------------
6517 -> Index Scan using p2_val_id_idx on p2
6518 Index Cond: ((id >= 50) AND (id <= 51))
6519 Filter: (ctid = '(1,1)'::tid)
6520 -> Index Scan using p2_c1_val_id_idx on p2_c1
6521 Index Cond: ((id >= 50) AND (id <= 51))
6522 Filter: (ctid = '(1,1)'::tid)
6523 -> Index Scan using p2_c1_c1_val_id_idx on p2_c1_c1
6524 Index Cond: ((id >= 50) AND (id <= 51))
6525 Filter: (ctid = '(1,1)'::tid)
6526 -> Index Scan using p2_c1_c2_val_id_idx on p2_c1_c2
6527 Index Cond: ((id >= 50) AND (id <= 51))
6528 Filter: (ctid = '(1,1)'::tid)
6531 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6533 -----------------------------------------------------------------------------------------
6536 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6537 -> Seq Scan on p2_c1
6538 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6539 -> Seq Scan on p2_c2
6540 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6541 -> Seq Scan on p2_c3
6542 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6543 -> Seq Scan on p2_c4
6544 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6545 -> Seq Scan on p2_c1_c1
6546 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6547 -> Seq Scan on p2_c1_c2
6548 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6549 -> Seq Scan on p2_c3_c1
6550 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6551 -> Seq Scan on p2_c3_c2
6552 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6555 /*+IndexScan(p2 p2_val)*/
6556 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6557 LOG: available indexes for IndexScan(p2):
6558 LOG: available indexes for IndexScan(p2_c1):
6559 LOG: available indexes for IndexScan(p2_c2):
6560 LOG: available indexes for IndexScan(p2_c3):
6561 LOG: available indexes for IndexScan(p2_c4):
6562 LOG: available indexes for IndexScan(p2_c1_c1):
6563 LOG: available indexes for IndexScan(p2_c1_c2):
6564 LOG: available indexes for IndexScan(p2_c3_c1):
6565 LOG: available indexes for IndexScan(p2_c3_c2):
6568 IndexScan(p2 p2_val)
6574 -----------------------------------------------------------------------------------------
6577 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6578 -> Seq Scan on p2_c1
6579 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6580 -> Seq Scan on p2_c2
6581 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6582 -> Seq Scan on p2_c3
6583 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6584 -> Seq Scan on p2_c4
6585 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6586 -> Seq Scan on p2_c1_c1
6587 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6588 -> Seq Scan on p2_c1_c2
6589 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6590 -> Seq Scan on p2_c3_c1
6591 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6592 -> Seq Scan on p2_c3_c2
6593 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6596 /*+IndexScan(p2 p2_pkey)*/
6597 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6598 LOG: available indexes for IndexScan(p2): p2_pkey
6599 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6600 LOG: available indexes for IndexScan(p2_c2): p2_c2_pkey
6601 LOG: available indexes for IndexScan(p2_c3): p2_c3_pkey
6602 LOG: available indexes for IndexScan(p2_c4): p2_c4_pkey
6603 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6604 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6605 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_pkey
6606 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_pkey
6609 IndexScan(p2 p2_pkey)
6615 --------------------------------------------------
6617 -> Index Scan using p2_pkey on p2
6618 Index Cond: ((id >= 50) AND (id <= 51))
6619 Filter: (ctid = '(1,1)'::tid)
6620 -> Index Scan using p2_c1_pkey on p2_c1
6621 Index Cond: ((id >= 50) AND (id <= 51))
6622 Filter: (ctid = '(1,1)'::tid)
6623 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6624 Index Cond: ((id >= 50) AND (id <= 51))
6625 Filter: (ctid = '(1,1)'::tid)
6626 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6627 Index Cond: ((id >= 50) AND (id <= 51))
6628 Filter: (ctid = '(1,1)'::tid)
6631 /*+IndexScan(p2 p2_id2_val)*/
6632 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6633 LOG: available indexes for IndexScan(p2): p2_id2_val
6634 LOG: available indexes for IndexScan(p2_c1): p2_c1_id2_val
6635 LOG: available indexes for IndexScan(p2_c2): p2_c2_id2_val
6636 LOG: available indexes for IndexScan(p2_c3):
6637 LOG: available indexes for IndexScan(p2_c4):
6638 LOG: available indexes for IndexScan(p2_c1_c1):
6639 LOG: available indexes for IndexScan(p2_c1_c2):
6640 LOG: available indexes for IndexScan(p2_c3_c1):
6641 LOG: available indexes for IndexScan(p2_c3_c2):
6644 IndexScan(p2 p2_id2_val)
6650 -----------------------------------------------------------------------
6652 -> Index Scan using p2_id2_val on p2
6653 Index Cond: ((id >= 50) AND (id <= 51))
6654 Filter: (ctid = '(1,1)'::tid)
6655 -> Index Scan using p2_c1_id2_val on p2_c1
6656 Index Cond: ((id >= 50) AND (id <= 51))
6657 Filter: (ctid = '(1,1)'::tid)
6658 -> Seq Scan on p2_c1_c1
6659 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6660 -> Seq Scan on p2_c1_c2
6661 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6664 /*+IndexScan(p2 p2_val2_id)*/
6665 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6666 LOG: available indexes for IndexScan(p2): p2_val2_id
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_val2_id)
6683 -----------------------------------------------------------------------
6685 -> Index Scan using p2_val2_id on p2
6686 Index Cond: ((id >= 50) AND (id <= 51))
6687 Filter: (ctid = '(1,1)'::tid)
6688 -> Seq Scan on p2_c1
6689 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6690 -> Seq Scan on p2_c1_c1
6691 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6692 -> Seq Scan on p2_c1_c2
6693 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6696 /*+IndexScan(p2 p2_pkey)*/
6697 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6698 LOG: available indexes for IndexScan(p2): p2_pkey
6699 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6700 LOG: available indexes for IndexScan(p2_c2): p2_c2_pkey
6701 LOG: available indexes for IndexScan(p2_c3): p2_c3_pkey
6702 LOG: available indexes for IndexScan(p2_c4): p2_c4_pkey
6703 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6704 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6705 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_pkey
6706 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_pkey
6709 IndexScan(p2 p2_pkey)
6715 --------------------------------------------------
6717 -> Index Scan using p2_pkey on p2
6718 Index Cond: ((id >= 50) AND (id <= 51))
6719 Filter: (ctid = '(1,1)'::tid)
6720 -> Index Scan using p2_c1_pkey on p2_c1
6721 Index Cond: ((id >= 50) AND (id <= 51))
6722 Filter: (ctid = '(1,1)'::tid)
6723 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6724 Index Cond: ((id >= 50) AND (id <= 51))
6725 Filter: (ctid = '(1,1)'::tid)
6726 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6727 Index Cond: ((id >= 50) AND (id <= 51))
6728 Filter: (ctid = '(1,1)'::tid)
6731 /*+IndexScan(p2 p2_c1_id_val_idx)*/
6732 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6733 LOG: available indexes for IndexScan(p2):
6734 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6735 LOG: available indexes for IndexScan(p2_c2):
6736 LOG: available indexes for IndexScan(p2_c3):
6737 LOG: available indexes for IndexScan(p2_c4):
6738 LOG: available indexes for IndexScan(p2_c1_c1):
6739 LOG: available indexes for IndexScan(p2_c1_c2):
6740 LOG: available indexes for IndexScan(p2_c3_c1):
6741 LOG: available indexes for IndexScan(p2_c3_c2):
6744 IndexScan(p2 p2_c1_id_val_idx)
6750 -----------------------------------------------------------------------
6753 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6754 -> Index Scan using p2_c1_id_val_idx 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 no_exist)*/
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):
6766 LOG: available indexes for IndexScan(p2_c1):
6767 LOG: available indexes for IndexScan(p2_c2):
6768 LOG: available indexes for IndexScan(p2_c3):
6769 LOG: available indexes for IndexScan(p2_c4):
6770 LOG: available indexes for IndexScan(p2_c1_c1):
6771 LOG: available indexes for IndexScan(p2_c1_c2):
6772 LOG: available indexes for IndexScan(p2_c3_c1):
6773 LOG: available indexes for IndexScan(p2_c3_c2):
6776 IndexScan(p2 no_exist)
6782 -----------------------------------------------------------------------
6785 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6786 -> Seq Scan on p2_c1
6787 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6788 -> Seq Scan on p2_c1_c1
6789 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6790 -> Seq Scan on p2_c1_c2
6791 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6794 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx)*/
6795 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6796 LOG: available indexes for IndexScan(p2): p2_pkey
6797 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6798 LOG: available indexes for IndexScan(p2_c2): p2_c2_pkey
6799 LOG: available indexes for IndexScan(p2_c3): p2_c3_pkey
6800 LOG: available indexes for IndexScan(p2_c4): p2_c4_pkey
6801 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6802 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6803 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_pkey
6804 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_pkey
6807 IndexScan(p2 p2_pkey p2_c1_id_val_idx)
6813 --------------------------------------------------
6815 -> Index Scan using p2_pkey on p2
6816 Index Cond: ((id >= 50) AND (id <= 51))
6817 Filter: (ctid = '(1,1)'::tid)
6818 -> Index Scan using p2_c1_id_val_idx on p2_c1
6819 Index Cond: ((id >= 50) AND (id <= 51))
6820 Filter: (ctid = '(1,1)'::tid)
6821 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6822 Index Cond: ((id >= 50) AND (id <= 51))
6823 Filter: (ctid = '(1,1)'::tid)
6824 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6825 Index Cond: ((id >= 50) AND (id <= 51))
6826 Filter: (ctid = '(1,1)'::tid)
6829 /*+IndexScan(p2 p2_pkey no_exist)*/
6830 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6831 LOG: available indexes for IndexScan(p2): p2_pkey
6832 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6833 LOG: available indexes for IndexScan(p2_c2): p2_c2_pkey
6834 LOG: available indexes for IndexScan(p2_c3): p2_c3_pkey
6835 LOG: available indexes for IndexScan(p2_c4): p2_c4_pkey
6836 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6837 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6838 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_pkey
6839 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_pkey
6842 IndexScan(p2 p2_pkey no_exist)
6848 --------------------------------------------------
6850 -> Index Scan using p2_pkey on p2
6851 Index Cond: ((id >= 50) AND (id <= 51))
6852 Filter: (ctid = '(1,1)'::tid)
6853 -> Index Scan using p2_c1_pkey on p2_c1
6854 Index Cond: ((id >= 50) AND (id <= 51))
6855 Filter: (ctid = '(1,1)'::tid)
6856 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6857 Index Cond: ((id >= 50) AND (id <= 51))
6858 Filter: (ctid = '(1,1)'::tid)
6859 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6860 Index Cond: ((id >= 50) AND (id <= 51))
6861 Filter: (ctid = '(1,1)'::tid)
6864 /*+IndexScan(p2 p2_c1_id_val_idx no_exist)*/
6865 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6866 LOG: available indexes for IndexScan(p2):
6867 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6868 LOG: available indexes for IndexScan(p2_c2):
6869 LOG: available indexes for IndexScan(p2_c3):
6870 LOG: available indexes for IndexScan(p2_c4):
6871 LOG: available indexes for IndexScan(p2_c1_c1):
6872 LOG: available indexes for IndexScan(p2_c1_c2):
6873 LOG: available indexes for IndexScan(p2_c3_c1):
6874 LOG: available indexes for IndexScan(p2_c3_c2):
6877 IndexScan(p2 p2_c1_id_val_idx no_exist)
6883 -----------------------------------------------------------------------
6886 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6887 -> Index Scan using p2_c1_id_val_idx on p2_c1
6888 Index Cond: ((id >= 50) AND (id <= 51))
6889 Filter: (ctid = '(1,1)'::tid)
6890 -> Seq Scan on p2_c1_c1
6891 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6892 -> Seq Scan on p2_c1_c2
6893 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6896 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)*/
6897 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6898 LOG: available indexes for IndexScan(p2): p2_pkey
6899 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6900 LOG: available indexes for IndexScan(p2_c2): p2_c2_pkey
6901 LOG: available indexes for IndexScan(p2_c3): p2_c3_pkey
6902 LOG: available indexes for IndexScan(p2_c4): p2_c4_pkey
6903 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6904 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6905 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_pkey
6906 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_pkey
6909 IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)
6915 --------------------------------------------------
6917 -> Index Scan using p2_pkey on p2
6918 Index Cond: ((id >= 50) AND (id <= 51))
6919 Filter: (ctid = '(1,1)'::tid)
6920 -> Index Scan using p2_c1_id_val_idx on p2_c1
6921 Index Cond: ((id >= 50) AND (id <= 51))
6922 Filter: (ctid = '(1,1)'::tid)
6923 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6924 Index Cond: ((id >= 50) AND (id <= 51))
6925 Filter: (ctid = '(1,1)'::tid)
6926 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6927 Index Cond: ((id >= 50) AND (id <= 51))
6928 Filter: (ctid = '(1,1)'::tid)
6931 /*+IndexScan(p2 p2_val_idx)*/
6932 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6933 LOG: available indexes for IndexScan(p2): p2_val_idx
6934 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx
6935 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx
6936 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx
6937 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx
6938 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx
6939 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx
6940 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx
6941 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx
6944 IndexScan(p2 p2_val_idx)
6950 -------------------------------------------------------------------
6952 -> Index Scan using p2_val_idx on p2
6953 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6954 Filter: (ctid = '(1,1)'::tid)
6955 -> Index Scan using p2_c1_val_idx on p2_c1
6956 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6957 Filter: (ctid = '(1,1)'::tid)
6958 -> Index Scan using p2_c2_val_idx on p2_c2
6959 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6960 Filter: (ctid = '(1,1)'::tid)
6961 -> Index Scan using p2_c3_val_idx on p2_c3
6962 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6963 Filter: (ctid = '(1,1)'::tid)
6964 -> Index Scan using p2_c4_val_idx on p2_c4
6965 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6966 Filter: (ctid = '(1,1)'::tid)
6967 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
6968 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6969 Filter: (ctid = '(1,1)'::tid)
6970 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
6971 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6972 Filter: (ctid = '(1,1)'::tid)
6973 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
6974 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6975 Filter: (ctid = '(1,1)'::tid)
6976 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
6977 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6978 Filter: (ctid = '(1,1)'::tid)
6981 /*+IndexScan(p2 p2_expr)*/
6982 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6983 LOG: available indexes for IndexScan(p2): p2_expr
6984 LOG: available indexes for IndexScan(p2_c1): p2_c1_expr_idx
6985 LOG: available indexes for IndexScan(p2_c2): p2_c2_expr_idx
6986 LOG: available indexes for IndexScan(p2_c3): p2_c3_expr_idx
6987 LOG: available indexes for IndexScan(p2_c4): p2_c4_expr_idx
6988 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_expr_idx
6989 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_expr_idx
6990 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_expr_idx
6991 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_expr_idx
6994 IndexScan(p2 p2_expr)
7000 -----------------------------------------------------------------------------------------
7003 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7004 -> Seq Scan on p2_c1
7005 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7006 -> Seq Scan on p2_c2
7007 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7008 -> Seq Scan on p2_c3
7009 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7010 -> Seq Scan on p2_c4
7011 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7012 -> Seq Scan on p2_c1_c1
7013 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7014 -> Seq Scan on p2_c1_c2
7015 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7016 -> Seq Scan on p2_c3_c1
7017 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7018 -> Seq Scan on p2_c3_c2
7019 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7022 /*+IndexScan(p2 p2_val_idx6)*/
7023 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7024 LOG: available indexes for IndexScan(p2): p2_val_idx6
7025 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx6
7026 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx6
7027 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx6
7028 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx6
7029 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx6
7030 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx6
7031 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx6
7032 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx6
7035 IndexScan(p2 p2_val_idx6)
7041 -----------------------------------------------------------------------------------------
7044 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7045 -> Seq Scan on p2_c1
7046 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7047 -> Seq Scan on p2_c2
7048 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7049 -> Seq Scan on p2_c3
7050 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7051 -> Seq Scan on p2_c4
7052 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7053 -> Seq Scan on p2_c1_c1
7054 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7055 -> Seq Scan on p2_c1_c2
7056 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7057 -> Seq Scan on p2_c3_c1
7058 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7059 -> Seq Scan on p2_c3_c2
7060 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7063 /*+IndexScan(p2 p2_val_idx p2_val_idx6)*/
7064 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7065 LOG: available indexes for IndexScan(p2): p2_val_idx6 p2_val_idx
7066 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx6 p2_c1_val_idx
7067 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx6 p2_c2_val_idx
7068 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx6 p2_c3_val_idx
7069 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx6 p2_c4_val_idx
7070 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx6 p2_c1_c1_val_idx
7071 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx6 p2_c1_c2_val_idx
7072 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx6 p2_c3_c1_val_idx
7073 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx6 p2_c3_c2_val_idx
7076 IndexScan(p2 p2_val_idx p2_val_idx6)
7082 -------------------------------------------------------------------
7084 -> Index Scan using p2_val_idx on p2
7085 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7086 Filter: (ctid = '(1,1)'::tid)
7087 -> Index Scan using p2_c1_val_idx on p2_c1
7088 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7089 Filter: (ctid = '(1,1)'::tid)
7090 -> Index Scan using p2_c2_val_idx on p2_c2
7091 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7092 Filter: (ctid = '(1,1)'::tid)
7093 -> Index Scan using p2_c3_val_idx on p2_c3
7094 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7095 Filter: (ctid = '(1,1)'::tid)
7096 -> Index Scan using p2_c4_val_idx on p2_c4
7097 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7098 Filter: (ctid = '(1,1)'::tid)
7099 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
7100 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7101 Filter: (ctid = '(1,1)'::tid)
7102 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
7103 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7104 Filter: (ctid = '(1,1)'::tid)
7105 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
7106 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7107 Filter: (ctid = '(1,1)'::tid)
7108 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
7109 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7110 Filter: (ctid = '(1,1)'::tid)
7113 -- regular expression
7115 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7117 ---------------------------------------------------------------------------------------------
7118 Index Only Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
7119 Index Cond: (id = 1)
7122 /*+ IndexScanRegexp(t5 t5_[^i].*)*/
7123 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7124 LOG: available indexes for IndexScanRegexp(t5): t5_val t5_pkey
7127 IndexScanRegexp(t5 t5_[^i].*)
7133 --------------------------------
7134 Index Scan using t5_pkey on t5
7135 Index Cond: (id = 1)
7138 /*+ IndexScanRegexp(t5 t5_id[0-9].*)*/
7139 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7140 LOG: available indexes for IndexScanRegexp(t5): t5_id3 t5_id2 t5_id1
7143 IndexScanRegexp(t5 t5_id[0-9].*)
7149 -------------------------------
7150 Index Scan using t5_id3 on t5
7151 Index Cond: (id = 1)
7154 /*+ IndexScanRegexp(t5 t5[^_].*)*/
7155 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7156 LOG: available indexes for IndexScanRegexp(t5):
7159 IndexScanRegexp(t5 t5[^_].*)
7165 --------------------
7170 /*+ IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7171 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7172 LOG: available indexes for IndexScanRegexp(t5):
7175 IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7181 --------------------
7186 /*+ IndexScan(t5 t5_id[0-9].*)*/
7187 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7188 LOG: available indexes for IndexScan(t5):
7191 IndexScan(t5 t5_id[0-9].*)
7197 --------------------
7202 /*+ IndexOnlyScanRegexp(t5 t5_[^i].*)*/
7203 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7204 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_val t5_pkey
7207 IndexOnlyScanRegexp(t5 t5_[^i].*)
7213 -------------------------------------
7214 Index Only Scan using t5_pkey on t5
7215 Index Cond: (id = 1)
7218 /*+ IndexOnlyScanRegexp(t5 t5_id[0-9].*)*/
7219 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7220 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_id3 t5_id2 t5_id1
7223 IndexOnlyScanRegexp(t5 t5_id[0-9].*)
7229 ------------------------------------
7230 Index Only Scan using t5_id3 on t5
7231 Index Cond: (id = 1)
7234 /*+ IndexOnlyScanRegexp(t5 t5[^_].*)*/
7235 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7236 LOG: available indexes for IndexOnlyScanRegexp(t5):
7239 IndexOnlyScanRegexp(t5 t5[^_].*)
7245 --------------------
7250 /*+ IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7251 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7252 LOG: available indexes for IndexOnlyScanRegexp(t5):
7255 IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7261 --------------------
7266 /*+ IndexOnlyScan(t5 t5_id[0-9].*)*/
7267 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7268 LOG: available indexes for IndexOnlyScan(t5):
7271 IndexOnlyScan(t5 t5_id[0-9].*)
7277 --------------------
7282 /*+ BitmapScanRegexp(t5 t5_[^i].*)*/
7283 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7284 LOG: available indexes for BitmapScanRegexp(t5): t5_val t5_pkey
7287 BitmapScanRegexp(t5 t5_[^i].*)
7293 ------------------------------------
7294 Bitmap Heap Scan on t5
7295 Recheck Cond: (id = 1)
7296 -> Bitmap Index Scan on t5_pkey
7297 Index Cond: (id = 1)
7300 /*+ BitmapScanRegexp(t5 t5_id[0-9].*)*/
7301 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7302 LOG: available indexes for BitmapScanRegexp(t5): t5_id3 t5_id2 t5_id1
7305 BitmapScanRegexp(t5 t5_id[0-9].*)
7311 -----------------------------------
7312 Bitmap Heap Scan on t5
7313 Recheck Cond: (id = 1)
7314 -> Bitmap Index Scan on t5_id3
7315 Index Cond: (id = 1)
7318 /*+ BitmapScanRegexp(t5 t5[^_].*)*/
7319 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7320 LOG: available indexes for BitmapScanRegexp(t5):
7323 BitmapScanRegexp(t5 t5[^_].*)
7329 --------------------
7334 /*+ BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7335 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7336 LOG: available indexes for BitmapScanRegexp(t5):
7339 BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7345 --------------------
7350 /*+ BitmapScan(t5 t5_id[0-9].*)*/
7351 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7352 LOG: available indexes for BitmapScan(t5):
7355 BitmapScan(t5 t5_id[0-9].*)
7361 --------------------
7367 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7369 ----------------------------
7373 -> Seq Scan on p1_c1
7375 -> Seq Scan on p1_c2
7377 -> Seq Scan on p1_c3
7379 -> Seq Scan on p1_c4
7381 -> Seq Scan on p1_c1_c1
7383 -> Seq Scan on p1_c1_c2
7385 -> Seq Scan on p1_c3_c1
7387 -> Seq Scan on p1_c3_c2
7391 /*+ IndexScanRegexp(p1 p1_.*[^0-9]$)*/
7392 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7393 LOG: available indexes for IndexScanRegexp(p1): p1_pkey
7394 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_pkey
7395 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_pkey
7396 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_pkey
7397 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_pkey
7398 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7399 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7400 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7401 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7404 IndexScanRegexp(p1 p1_.*[^0-9]$)
7410 ----------------------------
7414 -> Seq Scan on p1_c1
7416 -> Seq Scan on p1_c2
7418 -> Seq Scan on p1_c3
7420 -> Seq Scan on p1_c4
7422 -> Seq Scan on p1_c1_c1
7424 -> Seq Scan on p1_c1_c2
7426 -> Seq Scan on p1_c3_c1
7428 -> Seq Scan on p1_c3_c2
7432 /*+ IndexScanRegexp(p1 p1_.*val2.*)*/
7433 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7434 LOG: available indexes for IndexScanRegexp(p1): p1_val2
7435 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_val2
7436 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_val2
7437 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_val2
7438 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_val2
7439 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_val2
7440 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_val2
7441 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_val2
7442 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_val2
7445 IndexScanRegexp(p1 p1_.*val2.*)
7451 --------------------------------------------------
7453 -> Index Scan using p1_val2 on p1
7454 Index Cond: (val = 1)
7455 -> Index Scan using p1_c1_val2 on p1_c1
7456 Index Cond: (val = 1)
7457 -> Index Scan using p1_c2_val2 on p1_c2
7458 Index Cond: (val = 1)
7459 -> Index Scan using p1_c3_val2 on p1_c3
7460 Index Cond: (val = 1)
7461 -> Index Scan using p1_c4_val2 on p1_c4
7462 Index Cond: (val = 1)
7463 -> Index Scan using p1_c1_c1_val2 on p1_c1_c1
7464 Index Cond: (val = 1)
7465 -> Index Scan using p1_c1_c2_val2 on p1_c1_c2
7466 Index Cond: (val = 1)
7467 -> Index Scan using p1_c3_c1_val2 on p1_c3_c1
7468 Index Cond: (val = 1)
7469 -> Index Scan using p1_c3_c2_val2 on p1_c3_c2
7470 Index Cond: (val = 1)
7473 /*+ IndexScanRegexp(p1 p1[^_].*)*/
7474 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7475 LOG: available indexes for IndexScanRegexp(p1):
7476 LOG: available indexes for IndexScanRegexp(p1_c1):
7477 LOG: available indexes for IndexScanRegexp(p1_c2):
7478 LOG: available indexes for IndexScanRegexp(p1_c3):
7479 LOG: available indexes for IndexScanRegexp(p1_c4):
7480 LOG: available indexes for IndexScanRegexp(p1_c1_c1):
7481 LOG: available indexes for IndexScanRegexp(p1_c1_c2):
7482 LOG: available indexes for IndexScanRegexp(p1_c3_c1):
7483 LOG: available indexes for IndexScanRegexp(p1_c3_c2):
7486 IndexScanRegexp(p1 p1[^_].*)
7492 ----------------------------
7496 -> Seq Scan on p1_c1
7498 -> Seq Scan on p1_c2
7500 -> Seq Scan on p1_c3
7502 -> Seq Scan on p1_c4
7504 -> Seq Scan on p1_c1_c1
7506 -> Seq Scan on p1_c1_c2
7508 -> Seq Scan on p1_c3_c1
7510 -> Seq Scan on p1_c3_c2
7514 /*+ IndexScan(p1 p1_.*val2.*)*/
7515 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7516 LOG: available indexes for IndexScan(p1):
7517 LOG: available indexes for IndexScan(p1_c1):
7518 LOG: available indexes for IndexScan(p1_c2):
7519 LOG: available indexes for IndexScan(p1_c3):
7520 LOG: available indexes for IndexScan(p1_c4):
7521 LOG: available indexes for IndexScan(p1_c1_c1):
7522 LOG: available indexes for IndexScan(p1_c1_c2):
7523 LOG: available indexes for IndexScan(p1_c3_c1):
7524 LOG: available indexes for IndexScan(p1_c3_c2):
7527 IndexScan(p1 p1_.*val2.*)
7533 ----------------------------
7537 -> Seq Scan on p1_c1
7539 -> Seq Scan on p1_c2
7541 -> Seq Scan on p1_c3
7543 -> Seq Scan on p1_c4
7545 -> Seq Scan on p1_c1_c1
7547 -> Seq Scan on p1_c1_c2
7549 -> Seq Scan on p1_c3_c1
7551 -> Seq Scan on p1_c3_c2
7555 /*+ IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)*/
7556 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7557 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_pkey
7558 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_pkey
7559 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_pkey
7560 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_pkey
7561 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_pkey
7562 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7563 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7564 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7565 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7568 IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)
7574 ----------------------------
7578 -> Seq Scan on p1_c1
7580 -> Seq Scan on p1_c2
7582 -> Seq Scan on p1_c3
7584 -> Seq Scan on p1_c4
7586 -> Seq Scan on p1_c1_c1
7588 -> Seq Scan on p1_c1_c2
7590 -> Seq Scan on p1_c3_c1
7592 -> Seq Scan on p1_c3_c2
7596 /*+ IndexOnlyScanRegexp(p1 p1_.*val2.*)*/
7597 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7598 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_val2
7599 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_val2
7600 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_val2
7601 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_val2
7602 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_val2
7603 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_val2
7604 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_val2
7605 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_val2
7606 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_val2
7609 IndexOnlyScanRegexp(p1 p1_.*val2.*)
7615 -------------------------------------------------------
7617 -> Index Only Scan using p1_val2 on p1
7618 Index Cond: (val = 1)
7619 -> Index Only Scan using p1_c1_val2 on p1_c1
7620 Index Cond: (val = 1)
7621 -> Index Only Scan using p1_c2_val2 on p1_c2
7622 Index Cond: (val = 1)
7623 -> Index Only Scan using p1_c3_val2 on p1_c3
7624 Index Cond: (val = 1)
7625 -> Index Only Scan using p1_c4_val2 on p1_c4
7626 Index Cond: (val = 1)
7627 -> Index Only Scan using p1_c1_c1_val2 on p1_c1_c1
7628 Index Cond: (val = 1)
7629 -> Index Only Scan using p1_c1_c2_val2 on p1_c1_c2
7630 Index Cond: (val = 1)
7631 -> Index Only Scan using p1_c3_c1_val2 on p1_c3_c1
7632 Index Cond: (val = 1)
7633 -> Index Only Scan using p1_c3_c2_val2 on p1_c3_c2
7634 Index Cond: (val = 1)
7637 /*+ IndexOnlyScanRegexp(p1 p1[^_].*)*/
7638 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7639 LOG: available indexes for IndexOnlyScanRegexp(p1):
7640 LOG: available indexes for IndexOnlyScanRegexp(p1_c1):
7641 LOG: available indexes for IndexOnlyScanRegexp(p1_c2):
7642 LOG: available indexes for IndexOnlyScanRegexp(p1_c3):
7643 LOG: available indexes for IndexOnlyScanRegexp(p1_c4):
7644 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1):
7645 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2):
7646 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1):
7647 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2):
7650 IndexOnlyScanRegexp(p1 p1[^_].*)
7656 ----------------------------
7660 -> Seq Scan on p1_c1
7662 -> Seq Scan on p1_c2
7664 -> Seq Scan on p1_c3
7666 -> Seq Scan on p1_c4
7668 -> Seq Scan on p1_c1_c1
7670 -> Seq Scan on p1_c1_c2
7672 -> Seq Scan on p1_c3_c1
7674 -> Seq Scan on p1_c3_c2
7678 /*+ IndexOnlyScan(p1 p1_.*val2.*)*/
7679 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7680 LOG: available indexes for IndexOnlyScan(p1):
7681 LOG: available indexes for IndexOnlyScan(p1_c1):
7682 LOG: available indexes for IndexOnlyScan(p1_c2):
7683 LOG: available indexes for IndexOnlyScan(p1_c3):
7684 LOG: available indexes for IndexOnlyScan(p1_c4):
7685 LOG: available indexes for IndexOnlyScan(p1_c1_c1):
7686 LOG: available indexes for IndexOnlyScan(p1_c1_c2):
7687 LOG: available indexes for IndexOnlyScan(p1_c3_c1):
7688 LOG: available indexes for IndexOnlyScan(p1_c3_c2):
7691 IndexOnlyScan(p1 p1_.*val2.*)
7697 ----------------------------
7701 -> Seq Scan on p1_c1
7703 -> Seq Scan on p1_c2
7705 -> Seq Scan on p1_c3
7707 -> Seq Scan on p1_c4
7709 -> Seq Scan on p1_c1_c1
7711 -> Seq Scan on p1_c1_c2
7713 -> Seq Scan on p1_c3_c1
7715 -> Seq Scan on p1_c3_c2
7719 /*+ BitmapScanRegexp(p1 p1_.*[^0-9]$)*/
7720 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7721 LOG: available indexes for BitmapScanRegexp(p1): p1_pkey
7722 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_pkey
7723 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_pkey
7724 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_pkey
7725 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_pkey
7726 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7727 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7728 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7729 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7732 BitmapScanRegexp(p1 p1_.*[^0-9]$)
7738 ----------------------------
7742 -> Seq Scan on p1_c1
7744 -> Seq Scan on p1_c2
7746 -> Seq Scan on p1_c3
7748 -> Seq Scan on p1_c4
7750 -> Seq Scan on p1_c1_c1
7752 -> Seq Scan on p1_c1_c2
7754 -> Seq Scan on p1_c3_c1
7756 -> Seq Scan on p1_c3_c2
7760 /*+ BitmapScanRegexp(p1 p1_.*val2.*)*/
7761 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7762 LOG: available indexes for BitmapScanRegexp(p1): p1_val2
7763 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_val2
7764 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_val2
7765 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_val2
7766 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_val2
7767 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_val2
7768 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_val2
7769 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_val2
7770 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_val2
7773 BitmapScanRegexp(p1 p1_.*val2.*)
7779 ------------------------------------------------
7781 -> Bitmap Heap Scan on p1
7782 Recheck Cond: (val = 1)
7783 -> Bitmap Index Scan on p1_val2
7784 Index Cond: (val = 1)
7785 -> Bitmap Heap Scan on p1_c1
7786 Recheck Cond: (val = 1)
7787 -> Bitmap Index Scan on p1_c1_val2
7788 Index Cond: (val = 1)
7789 -> Bitmap Heap Scan on p1_c2
7790 Recheck Cond: (val = 1)
7791 -> Bitmap Index Scan on p1_c2_val2
7792 Index Cond: (val = 1)
7793 -> Bitmap Heap Scan on p1_c3
7794 Recheck Cond: (val = 1)
7795 -> Bitmap Index Scan on p1_c3_val2
7796 Index Cond: (val = 1)
7797 -> Bitmap Heap Scan on p1_c4
7798 Recheck Cond: (val = 1)
7799 -> Bitmap Index Scan on p1_c4_val2
7800 Index Cond: (val = 1)
7801 -> Bitmap Heap Scan on p1_c1_c1
7802 Recheck Cond: (val = 1)
7803 -> Bitmap Index Scan on p1_c1_c1_val2
7804 Index Cond: (val = 1)
7805 -> Bitmap Heap Scan on p1_c1_c2
7806 Recheck Cond: (val = 1)
7807 -> Bitmap Index Scan on p1_c1_c2_val2
7808 Index Cond: (val = 1)
7809 -> Bitmap Heap Scan on p1_c3_c1
7810 Recheck Cond: (val = 1)
7811 -> Bitmap Index Scan on p1_c3_c1_val2
7812 Index Cond: (val = 1)
7813 -> Bitmap Heap Scan on p1_c3_c2
7814 Recheck Cond: (val = 1)
7815 -> Bitmap Index Scan on p1_c3_c2_val2
7816 Index Cond: (val = 1)
7819 /*+ BitmapScanRegexp(p1 p1[^_].*)*/
7820 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7821 LOG: available indexes for BitmapScanRegexp(p1):
7822 LOG: available indexes for BitmapScanRegexp(p1_c1):
7823 LOG: available indexes for BitmapScanRegexp(p1_c2):
7824 LOG: available indexes for BitmapScanRegexp(p1_c3):
7825 LOG: available indexes for BitmapScanRegexp(p1_c4):
7826 LOG: available indexes for BitmapScanRegexp(p1_c1_c1):
7827 LOG: available indexes for BitmapScanRegexp(p1_c1_c2):
7828 LOG: available indexes for BitmapScanRegexp(p1_c3_c1):
7829 LOG: available indexes for BitmapScanRegexp(p1_c3_c2):
7832 BitmapScanRegexp(p1 p1[^_].*)
7838 ----------------------------
7842 -> Seq Scan on p1_c1
7844 -> Seq Scan on p1_c2
7846 -> Seq Scan on p1_c3
7848 -> Seq Scan on p1_c4
7850 -> Seq Scan on p1_c1_c1
7852 -> Seq Scan on p1_c1_c2
7854 -> Seq Scan on p1_c3_c1
7856 -> Seq Scan on p1_c3_c2
7860 /*+ BitmapScan(p1 p1_.*val2.*)*/
7861 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7862 LOG: available indexes for BitmapScan(p1):
7863 LOG: available indexes for BitmapScan(p1_c1):
7864 LOG: available indexes for BitmapScan(p1_c2):
7865 LOG: available indexes for BitmapScan(p1_c3):
7866 LOG: available indexes for BitmapScan(p1_c4):
7867 LOG: available indexes for BitmapScan(p1_c1_c1):
7868 LOG: available indexes for BitmapScan(p1_c1_c2):
7869 LOG: available indexes for BitmapScan(p1_c3_c1):
7870 LOG: available indexes for BitmapScan(p1_c3_c2):
7873 BitmapScan(p1 p1_.*val2.*)
7879 ----------------------------
7883 -> Seq Scan on p1_c1
7885 -> Seq Scan on p1_c2
7887 -> Seq Scan on p1_c3
7889 -> Seq Scan on p1_c4
7891 -> Seq Scan on p1_c1_c1
7893 -> Seq Scan on p1_c1_c2
7895 -> Seq Scan on p1_c3_c1
7897 -> Seq Scan on p1_c3_c2
7901 -- search from hint table
7902 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?;', '', 'SeqScan(t1)');
7903 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?;', '', 'IndexScan(t1)');
7904 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN SELECT * FROM t1 WHERE t1.id = ?;', '', 'BitmapScan(t1)');
7905 SELECT * FROM hint_plan.hints ORDER BY id;
7906 id | norm_query_string | application_name | hints
7907 ----+----------------------------------------------------------+------------------+----------------
7908 1 | EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?; | | SeqScan(t1)
7909 2 | EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?; | | IndexScan(t1)
7910 3 | EXPLAIN SELECT * FROM t1 WHERE t1.id = ?; | | BitmapScan(t1)
7913 SET pg_hint_plan.enable_hint_table = on;
7914 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7923 --------------------
7928 SET pg_hint_plan.enable_hint_table = off;
7929 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7931 --------------------------------
7932 Index Scan using t1_pkey on t1
7933 Index Cond: (id = 1)
7936 TRUNCATE hint_plan.hints;
7937 VACUUM ANALYZE hint_plan.hints;
7939 EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = 1;
7941 -------------------------------------
7942 Index Only Scan using t1_pkey on t1
7943 Index Cond: (id = 1)
7946 DO LANGUAGE plpgsql $$
7950 SELECT /*+SeqScan(t1)*/ t1.id INTO id FROM t1 WHERE t1.id = 1;
7961 CONTEXT: SQL statement "SELECT /*+SeqScan(t1)*/ t1.id FROM t1 WHERE t1.id = 1"
7962 PL/pgSQL function inline_code_block line 5 at SQL statement
7963 DROP EXTENSION pg_hint_plan;
7967 -- Explain result includes "Planning time" if COSTS is enabled, but
7968 -- this test needs it enabled for get rows count. So do tests via psql
7969 -- and grep -v the mutable line.
7971 \o results/pg_hint_plan.tmpout
7972 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
7974 \! sql/maskout.sh results/pg_hint_plan.tmpout
7976 ------------------------------------------------------------------------------
7977 Merge Join (cost=xxx rows=1000 width=xxx)
7978 Merge Cond: (t1.id = t2.id)
7979 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
7980 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
7983 \o results/pg_hint_plan.tmpout
7984 /*+ Rows(t1 t2 #99) */
7985 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
7994 \! sql/maskout.sh results/pg_hint_plan.tmpout
7996 ------------------------------------------------------------------------------
7997 Merge Join (cost=xxx rows=99 width=xxx)
7998 Merge Cond: (t1.id = t2.id)
7999 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8000 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8003 \o results/pg_hint_plan.tmpout
8004 /*+ Rows(t1 t2 +99) */
8005 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8014 \! sql/maskout.sh results/pg_hint_plan.tmpout
8016 ------------------------------------------------------------------------------
8017 Merge Join (cost=xxx rows=1099 width=xxx)
8018 Merge Cond: (t1.id = t2.id)
8019 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8020 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8023 \o results/pg_hint_plan.tmpout
8024 /*+ Rows(t1 t2 -99) */
8025 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8034 \! sql/maskout.sh results/pg_hint_plan.tmpout
8036 ------------------------------------------------------------------------------
8037 Merge Join (cost=xxx rows=901 width=xxx)
8038 Merge Cond: (t1.id = t2.id)
8039 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8040 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8043 \o results/pg_hint_plan.tmpout
8044 /*+ Rows(t1 t2 *99) */
8045 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8054 \! sql/maskout.sh results/pg_hint_plan.tmpout
8056 ------------------------------------------------------------------------------
8057 Merge Join (cost=xxx rows=99000 width=xxx)
8058 Merge Cond: (t1.id = t2.id)
8059 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8060 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8063 \o results/pg_hint_plan.tmpout
8064 /*+ Rows(t1 t2 *0.01) */
8065 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8074 \! sql/maskout.sh results/pg_hint_plan.tmpout
8076 ------------------------------------------------------------------------------
8077 Merge Join (cost=xxx rows=10 width=xxx)
8078 Merge Cond: (t1.id = t2.id)
8079 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8080 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8083 \o results/pg_hint_plan.tmpout
8084 /*+ Rows(t1 t2 #aa) */
8085 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8086 INFO: pg_hint_plan: hint syntax error at or near "aa"
8087 DETAIL: Rows hint requires valid number as rows estimation.
8096 \! sql/maskout.sh results/pg_hint_plan.tmpout
8098 ------------------------------------------------------------------------------
8099 Merge Join (cost=xxx rows=1000 width=xxx)
8100 Merge Cond: (t1.id = t2.id)
8101 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8102 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8105 \o results/pg_hint_plan.tmpout
8106 /*+ Rows(t1 t2 /99) */
8107 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8108 INFO: pg_hint_plan: hint syntax error at or near "/99"
8109 DETAIL: Unrecognized rows value type notation.
8118 \! sql/maskout.sh results/pg_hint_plan.tmpout
8120 ------------------------------------------------------------------------------
8121 Merge Join (cost=xxx rows=1000 width=xxx)
8122 Merge Cond: (t1.id = t2.id)
8123 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8124 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8128 \o results/pg_hint_plan.tmpout
8129 /*+ Rows(t1 t2 -99999) */
8130 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8131 WARNING: Force estimate to be at least one row, to avoid possible divide-by-zero when interpolating costs : Rows(t1 t2 -99999)
8140 \! sql/maskout.sh results/pg_hint_plan.tmpout
8142 ------------------------------------------------------------------------------
8143 Merge Join (cost=xxx rows=1 width=xxx)
8144 Merge Cond: (t1.id = t2.id)
8145 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8146 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8149 -- complex join tree
8150 \o results/pg_hint_plan.tmpout
8151 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8153 \! sql/maskout.sh results/pg_hint_plan.tmpout
8155 ------------------------------------------------------------------------------------
8156 Merge Join (cost=xxx rows=10 width=xxx)
8157 Merge Cond: (t1.id = t3.id)
8158 -> Merge Join (cost=xxx rows=1000 width=xxx)
8159 Merge Cond: (t1.id = t2.id)
8160 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8161 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8162 -> Sort (cost=xxx rows=100 width=xxx)
8164 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
8167 \o results/pg_hint_plan.tmpout
8168 /*+ Rows(t1 t2 #22) */
8169 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8178 \! sql/maskout.sh results/pg_hint_plan.tmpout
8180 ------------------------------------------------------------------------------------
8181 Merge Join (cost=xxx rows=1 width=xxx)
8182 Merge Cond: (t1.id = t3.id)
8183 -> Merge Join (cost=xxx rows=22 width=xxx)
8184 Merge Cond: (t1.id = t2.id)
8185 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8186 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8187 -> Sort (cost=xxx rows=100 width=xxx)
8189 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
8192 \o results/pg_hint_plan.tmpout
8193 /*+ Rows(t1 t3 *10) */
8194 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8203 \! sql/maskout.sh results/pg_hint_plan.tmpout
8205 ------------------------------------------------------------------------------------
8206 Merge Join (cost=xxx rows=100 width=xxx)
8207 Merge Cond: (t1.id = t3.id)
8208 -> Merge Join (cost=xxx rows=1000 width=xxx)
8209 Merge Cond: (t1.id = t2.id)
8210 -> Index Scan using t1_pkey on t1 (cost=xxx rows=10000 width=xxx)
8211 -> Index Scan using t2_pkey on t2 (cost=xxx rows=1000 width=xxx)
8212 -> Sort (cost=xxx rows=100 width=xxx)
8214 -> Seq Scan on t3 (cost=xxx rows=100 width=xxx)
8217 \! rm results/pg_hint_plan.tmpout