1 SET search_path TO public;
2 SET client_min_messages TO log;
3 \set SHOW_CONTEXT always
4 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
6 --------------------------------------
8 Merge Cond: (t1.id = t2.id)
9 -> Index Scan using t1_pkey on t1
10 -> Index Scan using t2_pkey on t2
13 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.val = t2.val;
15 --------------------------------
17 Hash Cond: (t2.val = t1.val)
24 SET pg_hint_plan.debug_print TO on;
25 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
27 --------------------------------------
29 Merge Cond: (t1.id = t2.id)
30 -> Index Scan using t1_pkey on t1
31 -> Index Scan using t2_pkey on t2
34 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.val = t2.val;
36 --------------------------------
38 Hash Cond: (t2.val = t1.val)
45 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
46 INFO: pg_hint_plan: hint syntax error at or near "Test (t1 t2) "
47 DETAIL: Unrecognized hint keyword "Test".
49 --------------------------------------
51 Merge Cond: (t1.id = t2.id)
52 -> Index Scan using t1_pkey on t1
53 -> Index Scan using t2_pkey on t2
56 SET pg_hint_plan.enable_hint TO off;
58 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
60 --------------------------------------
62 Merge Cond: (t1.id = t2.id)
63 -> Index Scan using t1_pkey on t1
64 -> Index Scan using t2_pkey on t2
67 SET pg_hint_plan.enable_hint TO on;
68 /*Set(enable_indexscan off)*/
69 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
71 --------------------------------------
73 Merge Cond: (t1.id = t2.id)
74 -> Index Scan using t1_pkey on t1
75 -> Index Scan using t2_pkey on t2
78 --+Set(enable_indexscan off)
79 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
81 --------------------------------------
83 Merge Cond: (t1.id = t2.id)
84 -> Index Scan using t1_pkey on t1
85 -> Index Scan using t2_pkey on t2
88 /*+Set(enable_indexscan off) /* nest comment */ */
89 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
90 INFO: pg_hint_plan: hint syntax error at or near "/* nest comment */ */
91 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;"
92 DETAIL: Nested block comments are not supported.
94 --------------------------------------
96 Merge Cond: (t1.id = t2.id)
97 -> Index Scan using t1_pkey on t1
98 -> Index Scan using t2_pkey on t2
101 /*+Set(enable_indexscan off)*/
102 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
105 Set(enable_indexscan off)
111 ------------------------------
113 Hash Cond: (t1.id = t2.id)
119 EXPLAIN (COSTS false) /*+Set(enable_indexscan off)*/
120 SELECT * FROM t1, t2 WHERE t1.id = t2.id;
123 Set(enable_indexscan off)
129 ------------------------------
131 Hash Cond: (t1.id = t2.id)
137 /*+ Set(enable_indexscan off) Set(enable_hashjoin off) */
138 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
141 Set(enable_hashjoin off)
142 Set(enable_indexscan off)
148 -------------------------------
150 Merge Cond: (t1.id = t2.id)
159 /*+ Set ( enable_indexscan off ) */
160 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
163 Set(enable_indexscan off)
169 ------------------------------
171 Hash Cond: (t1.id = t2.id)
184 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
187 Set(enable_indexscan off)
193 ------------------------------
195 Hash Cond: (t1.id = t2.id)
201 /*+ Set(enable_indexscan off)Set(enable_nestloop off)Set(enable_mergejoin off)
202 Set(enable_seqscan off)
204 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
207 Set(enable_indexscan off)
208 Set(enable_mergejoin off)
209 Set(enable_nestloop off)
210 Set(enable_seqscan off)
216 --------------------------------------------
218 Hash Cond: (t1.id = t2.id)
219 -> Index Scan using t1_pkey on t1
221 -> Index Scan using t2_pkey on t2
224 /*+Set(work_mem "1M")*/
225 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
226 INFO: invalid value for parameter "work_mem": "1M"
227 HINT: Valid units for this parameter are "B", "kB", "MB", "GB", and "TB".
236 --------------------------------------
238 Merge Cond: (t1.id = t2.id)
239 -> Index Scan using t1_pkey on t1
240 -> Index Scan using t2_pkey on t2
243 /*+Set(work_mem "1MB")*/
244 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
253 --------------------------------------
255 Merge Cond: (t1.id = t2.id)
256 -> Index Scan using t1_pkey on t1
257 -> Index Scan using t2_pkey on t2
260 /*+Set(work_mem TO "1MB")*/
261 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
262 INFO: pg_hint_plan: hint syntax error at or near "Set(work_mem TO "1MB")"
263 DETAIL: Set hint requires name and value of GUC parameter.
272 --------------------------------------
274 Merge Cond: (t1.id = t2.id)
275 -> Index Scan using t1_pkey on t1
276 -> Index Scan using t2_pkey on t2
280 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
281 INFO: pg_hint_plan: hint syntax error at or near ""
282 DETAIL: SeqScan hint accepts only one relation.
291 --------------------------------------
293 Merge Cond: (t1.id = t2.id)
294 -> Index Scan using t1_pkey on t1
295 -> Index Scan using t2_pkey on t2
299 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
308 ------------------------------
310 Hash Cond: (t1.id = t2.id)
316 /*+SeqScan(t1)IndexScan(t2)*/
317 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
327 --------------------------------------------
329 Hash Cond: (t1.id = t2.id)
332 -> Index Scan using t2_pkey on t2
336 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
345 ------------------------------------------
348 -> Bitmap Heap Scan on t2
349 Recheck Cond: (id = t1.id)
350 -> Bitmap Index Scan on t2_pkey
351 Index Cond: (id = t1.id)
354 /*+BitmapScan(t2)NoSeqScan(t1)*/
355 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
365 ------------------------------------------
367 -> Index Scan using t1_pkey on t1
368 -> Bitmap Heap Scan on t2
369 Recheck Cond: (id = t1.id)
370 -> Bitmap Index Scan on t2_pkey
371 Index Cond: (id = t1.id)
375 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
384 ------------------------------
386 Hash Cond: (t1.id = t2.id)
392 /*+NoBitmapScan(t1)*/
393 EXPLAIN (COSTS false) SELECT * FROM t1, t4 WHERE t1.val < 10;
402 ----------------------------
411 EXPLAIN (COSTS false) SELECT * FROM t3, t4 WHERE t3.id = t4.id AND t4.ctid = '(1,1)';
420 -----------------------------------------------
422 Merge Cond: (t3.id = t4.id)
423 -> Index Scan using t3_pkey on t3
427 TID Cond: (ctid = '(1,1)'::tid)
431 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)';
440 ---------------------------------------
443 Filter: (ctid = '(1,1)'::tid)
444 -> Index Scan using t2_pkey on t2
445 Index Cond: (id = t1.id)
449 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
458 ------------------------------
460 Hash Cond: (t1.id = t2.id)
467 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
476 --------------------------------------
479 -> Index Scan using t1_pkey on t1
480 Index Cond: (id = t2.id)
483 /*+NoMergeJoin(t1 t2)*/
484 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
493 ------------------------------
495 Hash Cond: (t1.id = t2.id)
501 /*+MergeJoin(t1 t3)*/
502 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
511 -------------------------------------
513 Merge Cond: (t1.val = t3.val)
514 -> Index Scan using t1_val on t1
521 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
530 -------------------------------------
533 -> Index Scan using t1_val on t1
534 Index Cond: (val = t3.val)
537 /*+NoHashJoin(t1 t3)*/
538 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
547 -------------------------------------
550 -> Index Scan using t1_val on t1
551 Index Cond: (val = t3.val)
554 /*+MergeJoin(t4 t1 t2 t3)*/
555 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
558 MergeJoin(t1 t2 t3 t4)
564 --------------------------------------------------
566 Merge Cond: (t1.id = t3.id)
568 Merge Cond: (t1.id = t2.id)
569 -> Index Scan using t1_pkey on t1
570 -> Index Scan using t2_pkey on t2
573 Merge Cond: (t3.id = t4.id)
574 -> Index Scan using t3_pkey on t3
580 /*+HashJoin(t3 t4 t1 t2)*/
581 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
584 HashJoin(t1 t2 t3 t4)
590 --------------------------------------------------------
592 Hash Cond: (t3.id = t1.id)
596 Merge Cond: (t1.id = t4.id)
598 Merge Cond: (t1.id = t2.id)
599 -> Index Scan using t1_pkey on t1
600 -> Index Scan using t2_pkey on t2
606 /*+NestLoop(t2 t3 t4 t1) IndexScan(t3)*/
607 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
611 NestLoop(t1 t2 t3 t4)
617 --------------------------------------------------
620 Merge Cond: (t1.id = t4.id)
622 Merge Cond: (t1.id = t2.id)
623 -> Index Scan using t1_pkey on t1
624 -> Index Scan using t2_pkey on t2
628 -> Index Scan using t3_pkey on t3
629 Index Cond: (id = t1.id)
632 /*+NoNestLoop(t4 t1 t3 t2)*/
633 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
636 NoNestLoop(t1 t2 t3 t4)
642 --------------------------------------------------
644 Merge Cond: (t1.id = t3.id)
646 Merge Cond: (t1.id = t2.id)
647 -> Index Scan using t1_pkey on t1
648 -> Index Scan using t2_pkey on t2
651 Merge Cond: (t3.id = t4.id)
652 -> Index Scan using t3_pkey on t3
659 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
660 INFO: pg_hint_plan: hint syntax error at or near ""
661 DETAIL: Closing parenthesis is necessary.
663 --------------------------------------------------
666 Merge Cond: (t1.id = t4.id)
668 Merge Cond: (t1.id = t2.id)
669 -> Index Scan using t1_pkey on t1
670 -> Index Scan using t2_pkey on t2
674 -> Index Scan using t3_pkey on t3
675 Index Cond: (id = t1.id)
679 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
680 INFO: pg_hint_plan: hint syntax error at or near "Leading( )"
681 DETAIL: Leading hint requires at least two relations.
690 --------------------------------------------------
693 Merge Cond: (t1.id = t4.id)
695 Merge Cond: (t1.id = t2.id)
696 -> Index Scan using t1_pkey on t1
697 -> Index Scan using t2_pkey on t2
701 -> Index Scan using t3_pkey on t3
702 Index Cond: (id = t1.id)
706 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
707 INFO: pg_hint_plan: hint syntax error at or near "Leading( t3 )"
708 DETAIL: Leading hint requires at least two relations.
717 --------------------------------------------------
720 Merge Cond: (t1.id = t4.id)
722 Merge Cond: (t1.id = t2.id)
723 -> Index Scan using t1_pkey on t1
724 -> Index Scan using t2_pkey on t2
728 -> Index Scan using t3_pkey on t3
729 Index Cond: (id = t1.id)
732 /*+Leading( t3 t4 )*/
733 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
742 --------------------------------------------------
746 Merge Cond: (t3.id = t4.id)
747 -> Index Scan using t3_pkey on t3
751 -> Index Scan using t2_pkey on t2
752 Index Cond: (id = t3.id)
753 -> Index Scan using t1_pkey on t1
754 Index Cond: (id = t2.id)
757 /*+Leading(t3 t4 t1)*/
758 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
767 --------------------------------------------------
770 Merge Cond: (t3.id = t1.id)
772 Merge Cond: (t3.id = t4.id)
773 -> Index Scan using t3_pkey on t3
777 -> Index Scan using t1_pkey on t1
778 -> Index Scan using t2_pkey on t2
779 Index Cond: (id = t1.id)
782 /*+Leading(t3 t4 t1 t2)*/
783 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
792 --------------------------------------------------
795 Merge Cond: (t3.id = t1.id)
797 Merge Cond: (t3.id = t4.id)
798 -> Index Scan using t3_pkey on t3
802 -> Index Scan using t1_pkey on t1
803 -> Index Scan using t2_pkey on t2
804 Index Cond: (id = t1.id)
807 /*+Leading(t3 t4 t1 t2 t1)*/
808 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
809 INFO: pg_hint_plan: hint syntax error at or near "Leading(t3 t4 t1 t2 t1)"
810 DETAIL: Relation name "t1" is duplicated.
816 Leading(t3 t4 t1 t2 t1)
819 --------------------------------------------------
822 Merge Cond: (t1.id = t4.id)
824 Merge Cond: (t1.id = t2.id)
825 -> Index Scan using t1_pkey on t1
826 -> Index Scan using t2_pkey on t2
830 -> Index Scan using t3_pkey on t3
831 Index Cond: (id = t1.id)
834 /*+Leading(t3 t4 t4)*/
835 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
836 INFO: pg_hint_plan: hint syntax error at or near "Leading(t3 t4 t4)"
837 DETAIL: Relation name "t4" is duplicated.
846 --------------------------------------------------
849 Merge Cond: (t1.id = t4.id)
851 Merge Cond: (t1.id = t2.id)
852 -> Index Scan using t1_pkey on t1
853 -> Index Scan using t2_pkey on t2
857 -> Index Scan using t3_pkey on t3
858 Index Cond: (id = t1.id)
861 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
863 -----------------------------------------------
865 -> Values Scan on "*VALUES*"
866 -> Index Scan using t1_pkey on t1
867 Index Cond: (id = "*VALUES*".column1)
871 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
880 -----------------------------------------------
882 -> Values Scan on "*VALUES*"
883 -> Index Scan using t1_pkey on t1
884 Index Cond: (id = "*VALUES*".column1)
887 /*+HashJoin(t1 *VALUES*)*/
888 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
891 HashJoin(*VALUES* t1)
897 -------------------------------------------
899 Hash Cond: (t1.id = "*VALUES*".column1)
902 -> Values Scan on "*VALUES*"
905 /*+HashJoin(t1 *VALUES*) IndexScan(t1) IndexScan(*VALUES*)*/
906 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
910 HashJoin(*VALUES* t1)
917 -------------------------------------------
919 Hash Cond: (t1.id = "*VALUES*".column1)
920 -> Index Scan using t1_pkey on t1
922 -> Values Scan on "*VALUES*"
925 -- single table scan hint test
926 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
928 ------------------------------------------------------------------------
929 Index Only Scan using t1_pkey on t1
930 Index Cond: (id = $3)
931 InitPlan 2 (returns $1)
933 InitPlan 1 (returns $0)
935 -> Index Only Scan Backward using t1_pkey on t1 v_1
936 Index Cond: ((id IS NOT NULL) AND (id < 10))
937 InitPlan 4 (returns $3)
939 InitPlan 3 (returns $2)
941 -> Index Only Scan Backward using t1_pkey on t1 v_2
942 Index Cond: ((id IS NOT NULL) AND (id < 10))
946 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
955 ------------------------------------------------------------------------
956 Index Only Scan using t1_pkey on t1
957 Index Cond: (id = $3)
958 InitPlan 1 (returns $1)
960 -> Bitmap Heap Scan on t1 v_1
961 Recheck Cond: (id < 10)
962 -> Bitmap Index Scan on t1_pkey
963 Index Cond: (id < 10)
964 InitPlan 3 (returns $3)
966 InitPlan 2 (returns $2)
968 -> Index Only Scan Backward using t1_pkey on t1 v_2
969 Index Cond: ((id IS NOT NULL) AND (id < 10))
973 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
982 ------------------------------------------------------------------------
983 Index Only Scan using t1_pkey on t1
984 Index Cond: (id = $3)
985 InitPlan 2 (returns $1)
987 InitPlan 1 (returns $0)
989 -> Index Only Scan Backward using t1_pkey on t1 v_1
990 Index Cond: ((id IS NOT NULL) AND (id < 10))
991 InitPlan 3 (returns $3)
993 -> Bitmap Heap Scan on t1 v_2
994 Recheck Cond: (id < 10)
995 -> Bitmap Index Scan on t1_pkey
996 Index Cond: (id < 10)
1000 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
1009 ------------------------------------------------------------------------
1010 Bitmap Heap Scan on t1
1011 Recheck Cond: (id = $3)
1012 InitPlan 2 (returns $1)
1014 InitPlan 1 (returns $0)
1016 -> Index Only Scan Backward using t1_pkey on t1 v_1
1017 Index Cond: ((id IS NOT NULL) AND (id < 10))
1018 InitPlan 4 (returns $3)
1020 InitPlan 3 (returns $2)
1022 -> Index Only Scan Backward using t1_pkey on t1 v_2
1023 Index Cond: ((id IS NOT NULL) AND (id < 10))
1024 -> Bitmap Index Scan on t1_pkey
1025 Index Cond: (id = $3)
1028 /*+BitmapScan(v_1)BitmapScan(v_2)*/
1029 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
1039 --------------------------------------------------
1040 Index Only Scan using t1_pkey on t1
1041 Index Cond: (id = $3)
1042 InitPlan 1 (returns $1)
1044 -> Bitmap Heap Scan on t1 v_1
1045 Recheck Cond: (id < 10)
1046 -> Bitmap Index Scan on t1_pkey
1047 Index Cond: (id < 10)
1048 InitPlan 2 (returns $3)
1050 -> Bitmap Heap Scan on t1 v_2
1051 Recheck Cond: (id < 10)
1052 -> Bitmap Index Scan on t1_pkey
1053 Index Cond: (id < 10)
1056 /*+BitmapScan(v_1)BitmapScan(t1)*/
1057 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
1067 ------------------------------------------------------------------------
1068 Bitmap Heap Scan on t1
1069 Recheck Cond: (id = $3)
1070 InitPlan 1 (returns $1)
1072 -> Bitmap Heap Scan on t1 v_1
1073 Recheck Cond: (id < 10)
1074 -> Bitmap Index Scan on t1_pkey
1075 Index Cond: (id < 10)
1076 InitPlan 3 (returns $3)
1078 InitPlan 2 (returns $2)
1080 -> Index Only Scan Backward using t1_pkey on t1 v_2
1081 Index Cond: ((id IS NOT NULL) AND (id < 10))
1082 -> Bitmap Index Scan on t1_pkey
1083 Index Cond: (id = $3)
1086 /*+BitmapScan(v_2)BitmapScan(t1)*/
1087 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
1097 ------------------------------------------------------------------------
1098 Bitmap Heap Scan on t1
1099 Recheck Cond: (id = $3)
1100 InitPlan 2 (returns $1)
1102 InitPlan 1 (returns $0)
1104 -> Index Only Scan Backward using t1_pkey on t1 v_1
1105 Index Cond: ((id IS NOT NULL) AND (id < 10))
1106 InitPlan 3 (returns $3)
1108 -> Bitmap Heap Scan on t1 v_2
1109 Recheck Cond: (id < 10)
1110 -> Bitmap Index Scan on t1_pkey
1111 Index Cond: (id < 10)
1112 -> Bitmap Index Scan on t1_pkey
1113 Index Cond: (id = $3)
1116 /*+BitmapScan(v_1)BitmapScan(v_2)BitmapScan(t1)*/
1117 EXPLAIN (COSTS false) SELECT (SELECT max(id) FROM t1 v_1 WHERE id < 10), id FROM v1 WHERE v1.id = (SELECT max(id) FROM t1 v_2 WHERE id < 10);
1128 --------------------------------------------------
1129 Bitmap Heap Scan on t1
1130 Recheck Cond: (id = $3)
1131 InitPlan 1 (returns $1)
1133 -> Bitmap Heap Scan on t1 v_1
1134 Recheck Cond: (id < 10)
1135 -> Bitmap Index Scan on t1_pkey
1136 Index Cond: (id < 10)
1137 InitPlan 2 (returns $3)
1139 -> Bitmap Heap Scan on t1 v_2
1140 Recheck Cond: (id < 10)
1141 -> Bitmap Index Scan on t1_pkey
1142 Index Cond: (id < 10)
1143 -> Bitmap Index Scan on t1_pkey
1144 Index Cond: (id = $3)
1147 -- full scan hint pattern test
1148 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1150 -----------------------------------
1152 TID Cond: (ctid = '(1,1)'::tid)
1157 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1166 -------------------------------------------------
1168 Filter: ((id < 10) AND (ctid = '(1,1)'::tid))
1172 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1181 ---------------------------------
1182 Index Scan using t1_pkey on t1
1183 Index Cond: (id < 10)
1184 Filter: (ctid = '(1,1)'::tid)
1188 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1197 ------------------------------------
1198 Bitmap Heap Scan on t1
1199 Recheck Cond: (id < 10)
1200 Filter: (ctid = '(1,1)'::tid)
1201 -> Bitmap Index Scan on t1_pkey
1202 Index Cond: (id < 10)
1206 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1215 -----------------------------------
1217 TID Cond: (ctid = '(1,1)'::tid)
1222 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1231 -----------------------------------
1233 TID Cond: (ctid = '(1,1)'::tid)
1237 /*+NoIndexScan(t1)*/
1238 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1247 -----------------------------------
1249 TID Cond: (ctid = '(1,1)'::tid)
1253 /*+NoBitmapScan(t1)*/
1254 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1263 -----------------------------------
1265 TID Cond: (ctid = '(1,1)'::tid)
1270 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1279 ---------------------------------
1280 Index Scan using t1_pkey on t1
1281 Index Cond: (id < 10)
1282 Filter: (ctid = '(1,1)'::tid)
1285 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1287 -----------------------------------------
1289 Join Filter: (t1.id = t2.id)
1291 TID Cond: (ctid = '(1,1)'::tid)
1293 TID Cond: (ctid = '(1,1)'::tid)
1297 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1306 -----------------------------------------
1308 Join Filter: (t1.id = t2.id)
1310 Filter: (ctid = '(1,1)'::tid)
1312 TID Cond: (ctid = '(1,1)'::tid)
1316 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1325 -----------------------------------------
1327 Join Filter: (t1.id = t2.id)
1329 TID Cond: (ctid = '(1,1)'::tid)
1331 Filter: (ctid = '(1,1)'::tid)
1334 /*+SeqScan(t1) SeqScan(t2)*/
1335 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1345 ---------------------------------------
1347 Join Filter: (t1.id = t2.id)
1349 Filter: (ctid = '(1,1)'::tid)
1351 Filter: (ctid = '(1,1)'::tid)
1354 /*+SeqScan(t1) IndexScan(t2)*/
1355 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1365 ---------------------------------------
1368 Filter: (ctid = '(1,1)'::tid)
1369 -> Index Scan using t2_pkey on t2
1370 Index Cond: (id = t1.id)
1371 Filter: (ctid = '(1,1)'::tid)
1374 /*+SeqScan(t1) BitmapScan(t2)*/
1375 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1385 ------------------------------------------
1388 Filter: (ctid = '(1,1)'::tid)
1389 -> Bitmap Heap Scan on t2
1390 Recheck Cond: (id = t1.id)
1391 Filter: (ctid = '(1,1)'::tid)
1392 -> Bitmap Index Scan on t2_pkey
1393 Index Cond: (id = t1.id)
1396 /*+SeqScan(t1) TidScan(t2)*/
1397 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1407 -----------------------------------------
1409 Join Filter: (t1.id = t2.id)
1411 Filter: (ctid = '(1,1)'::tid)
1413 TID Cond: (ctid = '(1,1)'::tid)
1416 /*+SeqScan(t1) NoSeqScan(t2)*/
1417 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1427 -----------------------------------------
1429 Join Filter: (t1.id = t2.id)
1431 Filter: (ctid = '(1,1)'::tid)
1433 TID Cond: (ctid = '(1,1)'::tid)
1436 /*+SeqScan(t1) NoIndexScan(t2)*/
1437 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1447 -----------------------------------------
1449 Join Filter: (t1.id = t2.id)
1451 Filter: (ctid = '(1,1)'::tid)
1453 TID Cond: (ctid = '(1,1)'::tid)
1456 /*+SeqScan(t1) NoBitmapScan(t2)*/
1457 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1467 -----------------------------------------
1469 Join Filter: (t1.id = t2.id)
1471 Filter: (ctid = '(1,1)'::tid)
1473 TID Cond: (ctid = '(1,1)'::tid)
1476 /*+SeqScan(t1) NoTidScan(t2)*/
1477 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1487 ---------------------------------------
1489 Join Filter: (t1.id = t2.id)
1491 Filter: (ctid = '(1,1)'::tid)
1493 Filter: (ctid = '(1,1)'::tid)
1497 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1506 -----------------------------------------
1509 TID Cond: (ctid = '(1,1)'::tid)
1510 -> Index Scan using t1_pkey on t1
1511 Index Cond: (id = t2.id)
1512 Filter: (ctid = '(1,1)'::tid)
1516 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1525 -----------------------------------------
1528 TID Cond: (ctid = '(1,1)'::tid)
1529 -> Index Scan using t2_pkey on t2
1530 Index Cond: (id = t1.id)
1531 Filter: (ctid = '(1,1)'::tid)
1534 /*+IndexScan(t1) SeqScan(t2)*/
1535 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1545 ---------------------------------------
1548 Filter: (ctid = '(1,1)'::tid)
1549 -> Index Scan using t1_pkey on t1
1550 Index Cond: (id = t2.id)
1551 Filter: (ctid = '(1,1)'::tid)
1554 /*+IndexScan(t1) IndexScan(t2)*/
1555 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1565 ---------------------------------------
1567 -> Index Scan using t2_pkey on t2
1568 Filter: (ctid = '(1,1)'::tid)
1569 -> Index Scan using t1_pkey on t1
1570 Index Cond: (id = t2.id)
1571 Filter: (ctid = '(1,1)'::tid)
1574 /*+IndexScan(t1) BitmapScan(t2)*/
1575 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1585 ------------------------------------------
1587 -> Index Scan using t1_pkey on t1
1588 Filter: (ctid = '(1,1)'::tid)
1589 -> Bitmap Heap Scan on t2
1590 Recheck Cond: (id = t1.id)
1591 Filter: (ctid = '(1,1)'::tid)
1592 -> Bitmap Index Scan on t2_pkey
1593 Index Cond: (id = t1.id)
1596 /*+IndexScan(t1) TidScan(t2)*/
1597 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1607 -----------------------------------------
1610 TID Cond: (ctid = '(1,1)'::tid)
1611 -> Index Scan using t1_pkey on t1
1612 Index Cond: (id = t2.id)
1613 Filter: (ctid = '(1,1)'::tid)
1616 /*+IndexScan(t1) NoSeqScan(t2)*/
1617 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1627 -----------------------------------------
1630 TID Cond: (ctid = '(1,1)'::tid)
1631 -> Index Scan using t1_pkey on t1
1632 Index Cond: (id = t2.id)
1633 Filter: (ctid = '(1,1)'::tid)
1636 /*+IndexScan(t1) NoIndexScan(t2)*/
1637 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1647 -----------------------------------------
1650 TID Cond: (ctid = '(1,1)'::tid)
1651 -> Index Scan using t1_pkey on t1
1652 Index Cond: (id = t2.id)
1653 Filter: (ctid = '(1,1)'::tid)
1656 /*+IndexScan(t1) NoBitmapScan(t2)*/
1657 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1667 -----------------------------------------
1670 TID Cond: (ctid = '(1,1)'::tid)
1671 -> Index Scan using t1_pkey on t1
1672 Index Cond: (id = t2.id)
1673 Filter: (ctid = '(1,1)'::tid)
1676 /*+IndexScan(t1) NoTidScan(t2)*/
1677 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1687 ---------------------------------------
1690 Filter: (ctid = '(1,1)'::tid)
1691 -> Index Scan using t1_pkey on t1
1692 Index Cond: (id = t2.id)
1693 Filter: (ctid = '(1,1)'::tid)
1697 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1706 ------------------------------------------
1709 TID Cond: (ctid = '(1,1)'::tid)
1710 -> Bitmap Heap Scan on t1
1711 Recheck Cond: (id = t2.id)
1712 Filter: (ctid = '(1,1)'::tid)
1713 -> Bitmap Index Scan on t1_pkey
1714 Index Cond: (id = t2.id)
1718 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1727 ------------------------------------------
1730 TID Cond: (ctid = '(1,1)'::tid)
1731 -> Bitmap Heap Scan on t2
1732 Recheck Cond: (id = t1.id)
1733 Filter: (ctid = '(1,1)'::tid)
1734 -> Bitmap Index Scan on t2_pkey
1735 Index Cond: (id = t1.id)
1739 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1748 ------------------------------------------
1751 TID Cond: (ctid = '(1,1)'::tid)
1752 -> Bitmap Heap Scan on t2
1753 Recheck Cond: (id = t1.id)
1754 Filter: (ctid = '(1,1)'::tid)
1755 -> Bitmap Index Scan on t2_pkey
1756 Index Cond: (id = t1.id)
1759 /*+BitmapScan(t1) SeqScan(t2)*/
1760 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1770 ------------------------------------------
1773 Filter: (ctid = '(1,1)'::tid)
1774 -> Bitmap Heap Scan on t1
1775 Recheck Cond: (id = t2.id)
1776 Filter: (ctid = '(1,1)'::tid)
1777 -> Bitmap Index Scan on t1_pkey
1778 Index Cond: (id = t2.id)
1781 /*+BitmapScan(t1) IndexScan(t2)*/
1782 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1792 ------------------------------------------
1794 -> Index Scan using t2_pkey on t2
1795 Filter: (ctid = '(1,1)'::tid)
1796 -> Bitmap Heap Scan on t1
1797 Recheck Cond: (id = t2.id)
1798 Filter: (ctid = '(1,1)'::tid)
1799 -> Bitmap Index Scan on t1_pkey
1800 Index Cond: (id = t2.id)
1803 /*+BitmapScan(t1) BitmapScan(t2)*/
1804 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1814 ------------------------------------------
1816 -> Index Scan using t2_pkey on t2
1817 Filter: (ctid = '(1,1)'::tid)
1818 -> Bitmap Heap Scan on t1
1819 Recheck Cond: (id = t2.id)
1820 Filter: (ctid = '(1,1)'::tid)
1821 -> Bitmap Index Scan on t1_pkey
1822 Index Cond: (id = t2.id)
1825 /*+BitmapScan(t1) TidScan(t2)*/
1826 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1836 ------------------------------------------
1839 TID Cond: (ctid = '(1,1)'::tid)
1840 -> Bitmap Heap Scan on t1
1841 Recheck Cond: (id = t2.id)
1842 Filter: (ctid = '(1,1)'::tid)
1843 -> Bitmap Index Scan on t1_pkey
1844 Index Cond: (id = t2.id)
1847 /*+BitmapScan(t1) NoSeqScan(t2)*/
1848 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1858 ------------------------------------------
1861 TID Cond: (ctid = '(1,1)'::tid)
1862 -> Bitmap Heap Scan on t1
1863 Recheck Cond: (id = t2.id)
1864 Filter: (ctid = '(1,1)'::tid)
1865 -> Bitmap Index Scan on t1_pkey
1866 Index Cond: (id = t2.id)
1869 /*+BitmapScan(t1) NoIndexScan(t2)*/
1870 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1880 ------------------------------------------
1883 TID Cond: (ctid = '(1,1)'::tid)
1884 -> Bitmap Heap Scan on t1
1885 Recheck Cond: (id = t2.id)
1886 Filter: (ctid = '(1,1)'::tid)
1887 -> Bitmap Index Scan on t1_pkey
1888 Index Cond: (id = t2.id)
1891 /*+BitmapScan(t1) NoBitmapScan(t2)*/
1892 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1902 ------------------------------------------
1905 TID Cond: (ctid = '(1,1)'::tid)
1906 -> Bitmap Heap Scan on t1
1907 Recheck Cond: (id = t2.id)
1908 Filter: (ctid = '(1,1)'::tid)
1909 -> Bitmap Index Scan on t1_pkey
1910 Index Cond: (id = t2.id)
1913 /*+BitmapScan(t1) NoTidScan(t2)*/
1914 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1924 ------------------------------------------
1927 Filter: (ctid = '(1,1)'::tid)
1928 -> Bitmap Heap Scan on t1
1929 Recheck Cond: (id = t2.id)
1930 Filter: (ctid = '(1,1)'::tid)
1931 -> Bitmap Index Scan on t1_pkey
1932 Index Cond: (id = t2.id)
1936 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1945 -----------------------------------------
1947 Join Filter: (t1.id = t2.id)
1949 TID Cond: (ctid = '(1,1)'::tid)
1951 TID Cond: (ctid = '(1,1)'::tid)
1955 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1964 -----------------------------------------
1966 Join Filter: (t1.id = t2.id)
1968 TID Cond: (ctid = '(1,1)'::tid)
1970 TID Cond: (ctid = '(1,1)'::tid)
1973 /*+TidScan(t1) SeqScan(t2)*/
1974 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1984 -----------------------------------------
1986 Join Filter: (t1.id = t2.id)
1988 TID Cond: (ctid = '(1,1)'::tid)
1990 Filter: (ctid = '(1,1)'::tid)
1993 /*+TidScan(t1) IndexScan(t2)*/
1994 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2004 -----------------------------------------
2007 TID Cond: (ctid = '(1,1)'::tid)
2008 -> Index Scan using t2_pkey on t2
2009 Index Cond: (id = t1.id)
2010 Filter: (ctid = '(1,1)'::tid)
2013 /*+TidScan(t1) BitmapScan(t2)*/
2014 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2024 ------------------------------------------
2027 TID Cond: (ctid = '(1,1)'::tid)
2028 -> Bitmap Heap Scan on t2
2029 Recheck Cond: (id = t1.id)
2030 Filter: (ctid = '(1,1)'::tid)
2031 -> Bitmap Index Scan on t2_pkey
2032 Index Cond: (id = t1.id)
2035 /*+TidScan(t1) TidScan(t2)*/
2036 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2046 -----------------------------------------
2048 Join Filter: (t1.id = t2.id)
2050 TID Cond: (ctid = '(1,1)'::tid)
2052 TID Cond: (ctid = '(1,1)'::tid)
2055 /*+TidScan(t1) NoSeqScan(t2)*/
2056 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2066 -----------------------------------------
2068 Join Filter: (t1.id = t2.id)
2070 TID Cond: (ctid = '(1,1)'::tid)
2072 TID Cond: (ctid = '(1,1)'::tid)
2075 /*+TidScan(t1) NoIndexScan(t2)*/
2076 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2086 -----------------------------------------
2088 Join Filter: (t1.id = t2.id)
2090 TID Cond: (ctid = '(1,1)'::tid)
2092 TID Cond: (ctid = '(1,1)'::tid)
2095 /*+TidScan(t1) NoBitmapScan(t2)*/
2096 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2106 -----------------------------------------
2108 Join Filter: (t1.id = t2.id)
2110 TID Cond: (ctid = '(1,1)'::tid)
2112 TID Cond: (ctid = '(1,1)'::tid)
2115 /*+TidScan(t1) NoTidScan(t2)*/
2116 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2126 -----------------------------------------
2129 TID Cond: (ctid = '(1,1)'::tid)
2130 -> Index Scan using t2_pkey on t2
2131 Index Cond: (id = t1.id)
2132 Filter: (ctid = '(1,1)'::tid)
2136 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2145 -----------------------------------------
2147 Join Filter: (t1.id = t2.id)
2149 TID Cond: (ctid = '(1,1)'::tid)
2151 TID Cond: (ctid = '(1,1)'::tid)
2155 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2164 -----------------------------------------
2166 Join Filter: (t1.id = t2.id)
2168 TID Cond: (ctid = '(1,1)'::tid)
2170 TID Cond: (ctid = '(1,1)'::tid)
2173 /*+NoSeqScan(t1) SeqScan(t2)*/
2174 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2184 -----------------------------------------
2186 Join Filter: (t1.id = t2.id)
2188 TID Cond: (ctid = '(1,1)'::tid)
2190 Filter: (ctid = '(1,1)'::tid)
2193 /*+NoSeqScan(t1) IndexScan(t2)*/
2194 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2204 -----------------------------------------
2207 TID Cond: (ctid = '(1,1)'::tid)
2208 -> Index Scan using t2_pkey on t2
2209 Index Cond: (id = t1.id)
2210 Filter: (ctid = '(1,1)'::tid)
2213 /*+NoSeqScan(t1) BitmapScan(t2)*/
2214 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2224 ------------------------------------------
2227 TID Cond: (ctid = '(1,1)'::tid)
2228 -> Bitmap Heap Scan on t2
2229 Recheck Cond: (id = t1.id)
2230 Filter: (ctid = '(1,1)'::tid)
2231 -> Bitmap Index Scan on t2_pkey
2232 Index Cond: (id = t1.id)
2235 /*+NoSeqScan(t1) TidScan(t2)*/
2236 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2246 -----------------------------------------
2248 Join Filter: (t1.id = t2.id)
2250 TID Cond: (ctid = '(1,1)'::tid)
2252 TID Cond: (ctid = '(1,1)'::tid)
2255 /*+NoSeqScan(t1) NoSeqScan(t2)*/
2256 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2266 -----------------------------------------
2268 Join Filter: (t1.id = t2.id)
2270 TID Cond: (ctid = '(1,1)'::tid)
2272 TID Cond: (ctid = '(1,1)'::tid)
2275 /*+NoSeqScan(t1) NoIndexScan(t2)*/
2276 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2286 -----------------------------------------
2288 Join Filter: (t1.id = t2.id)
2290 TID Cond: (ctid = '(1,1)'::tid)
2292 TID Cond: (ctid = '(1,1)'::tid)
2295 /*+NoSeqScan(t1) NoBitmapScan(t2)*/
2296 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2306 -----------------------------------------
2308 Join Filter: (t1.id = t2.id)
2310 TID Cond: (ctid = '(1,1)'::tid)
2312 TID Cond: (ctid = '(1,1)'::tid)
2315 /*+NoSeqScan(t1) NoTidScan(t2)*/
2316 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2326 -----------------------------------------
2329 TID Cond: (ctid = '(1,1)'::tid)
2330 -> Index Scan using t2_pkey on t2
2331 Index Cond: (id = t1.id)
2332 Filter: (ctid = '(1,1)'::tid)
2335 /*+NoIndexScan(t1)*/
2336 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2345 -----------------------------------------
2347 Join Filter: (t1.id = t2.id)
2349 TID Cond: (ctid = '(1,1)'::tid)
2351 TID Cond: (ctid = '(1,1)'::tid)
2354 /*+NoIndexScan(t2)*/
2355 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2364 -----------------------------------------
2366 Join Filter: (t1.id = t2.id)
2368 TID Cond: (ctid = '(1,1)'::tid)
2370 TID Cond: (ctid = '(1,1)'::tid)
2373 /*+NoIndexScan(t1) SeqScan(t2)*/
2374 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2384 -----------------------------------------
2386 Join Filter: (t1.id = t2.id)
2388 TID Cond: (ctid = '(1,1)'::tid)
2390 Filter: (ctid = '(1,1)'::tid)
2393 /*+NoIndexScan(t1) IndexScan(t2)*/
2394 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2404 -----------------------------------------
2407 TID Cond: (ctid = '(1,1)'::tid)
2408 -> Index Scan using t2_pkey on t2
2409 Index Cond: (id = t1.id)
2410 Filter: (ctid = '(1,1)'::tid)
2413 /*+NoIndexScan(t1) BitmapScan(t2)*/
2414 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2424 ------------------------------------------
2427 TID Cond: (ctid = '(1,1)'::tid)
2428 -> Bitmap Heap Scan on t2
2429 Recheck Cond: (id = t1.id)
2430 Filter: (ctid = '(1,1)'::tid)
2431 -> Bitmap Index Scan on t2_pkey
2432 Index Cond: (id = t1.id)
2435 /*+NoIndexScan(t1) TidScan(t2)*/
2436 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2446 -----------------------------------------
2448 Join Filter: (t1.id = t2.id)
2450 TID Cond: (ctid = '(1,1)'::tid)
2452 TID Cond: (ctid = '(1,1)'::tid)
2455 /*+NoIndexScan(t1) NoSeqScan(t2)*/
2456 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2466 -----------------------------------------
2468 Join Filter: (t1.id = t2.id)
2470 TID Cond: (ctid = '(1,1)'::tid)
2472 TID Cond: (ctid = '(1,1)'::tid)
2475 /*+NoIndexScan(t1) NoIndexScan(t2)*/
2476 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2486 -----------------------------------------
2488 Join Filter: (t1.id = t2.id)
2490 TID Cond: (ctid = '(1,1)'::tid)
2492 TID Cond: (ctid = '(1,1)'::tid)
2495 /*+NoIndexScan(t1) NoBitmapScan(t2)*/
2496 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2506 -----------------------------------------
2508 Join Filter: (t1.id = t2.id)
2510 TID Cond: (ctid = '(1,1)'::tid)
2512 TID Cond: (ctid = '(1,1)'::tid)
2515 /*+NoIndexScan(t1) NoTidScan(t2)*/
2516 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2526 -----------------------------------------
2529 TID Cond: (ctid = '(1,1)'::tid)
2530 -> Index Scan using t2_pkey on t2
2531 Index Cond: (id = t1.id)
2532 Filter: (ctid = '(1,1)'::tid)
2535 /*+NoBitmapScan(t1)*/
2536 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2545 -----------------------------------------
2547 Join Filter: (t1.id = t2.id)
2549 TID Cond: (ctid = '(1,1)'::tid)
2551 TID Cond: (ctid = '(1,1)'::tid)
2554 /*+NoBitmapScan(t2)*/
2555 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2564 -----------------------------------------
2566 Join Filter: (t1.id = t2.id)
2568 TID Cond: (ctid = '(1,1)'::tid)
2570 TID Cond: (ctid = '(1,1)'::tid)
2573 /*+NoBitmapScan(t1) SeqScan(t2)*/
2574 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2584 -----------------------------------------
2586 Join Filter: (t1.id = t2.id)
2588 TID Cond: (ctid = '(1,1)'::tid)
2590 Filter: (ctid = '(1,1)'::tid)
2593 /*+NoBitmapScan(t1) IndexScan(t2)*/
2594 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2604 -----------------------------------------
2607 TID Cond: (ctid = '(1,1)'::tid)
2608 -> Index Scan using t2_pkey on t2
2609 Index Cond: (id = t1.id)
2610 Filter: (ctid = '(1,1)'::tid)
2613 /*+NoBitmapScan(t1) BitmapScan(t2)*/
2614 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2624 ------------------------------------------
2627 TID Cond: (ctid = '(1,1)'::tid)
2628 -> Bitmap Heap Scan on t2
2629 Recheck Cond: (id = t1.id)
2630 Filter: (ctid = '(1,1)'::tid)
2631 -> Bitmap Index Scan on t2_pkey
2632 Index Cond: (id = t1.id)
2635 /*+NoBitmapScan(t1) TidScan(t2)*/
2636 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2646 -----------------------------------------
2648 Join Filter: (t1.id = t2.id)
2650 TID Cond: (ctid = '(1,1)'::tid)
2652 TID Cond: (ctid = '(1,1)'::tid)
2655 /*+NoBitmapScan(t1) NoSeqScan(t2)*/
2656 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2666 -----------------------------------------
2668 Join Filter: (t1.id = t2.id)
2670 TID Cond: (ctid = '(1,1)'::tid)
2672 TID Cond: (ctid = '(1,1)'::tid)
2675 /*+NoBitmapScan(t1) NoIndexScan(t2)*/
2676 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2686 -----------------------------------------
2688 Join Filter: (t1.id = t2.id)
2690 TID Cond: (ctid = '(1,1)'::tid)
2692 TID Cond: (ctid = '(1,1)'::tid)
2695 /*+NoBitmapScan(t1) NoBitmapScan(t2)*/
2696 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2706 -----------------------------------------
2708 Join Filter: (t1.id = t2.id)
2710 TID Cond: (ctid = '(1,1)'::tid)
2712 TID Cond: (ctid = '(1,1)'::tid)
2715 /*+NoBitmapScan(t1) NoTidScan(t2)*/
2716 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2726 -----------------------------------------
2729 TID Cond: (ctid = '(1,1)'::tid)
2730 -> Index Scan using t2_pkey on t2
2731 Index Cond: (id = t1.id)
2732 Filter: (ctid = '(1,1)'::tid)
2736 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2745 -----------------------------------------
2748 TID Cond: (ctid = '(1,1)'::tid)
2749 -> Index Scan using t1_pkey on t1
2750 Index Cond: (id = t2.id)
2751 Filter: (ctid = '(1,1)'::tid)
2755 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2764 -----------------------------------------
2767 TID Cond: (ctid = '(1,1)'::tid)
2768 -> Index Scan using t2_pkey on t2
2769 Index Cond: (id = t1.id)
2770 Filter: (ctid = '(1,1)'::tid)
2773 /*+NoTidScan(t1) SeqScan(t2)*/
2774 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2784 ---------------------------------------
2787 Filter: (ctid = '(1,1)'::tid)
2788 -> Index Scan using t1_pkey on t1
2789 Index Cond: (id = t2.id)
2790 Filter: (ctid = '(1,1)'::tid)
2793 /*+NoTidScan(t1) IndexScan(t2)*/
2794 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2804 ---------------------------------------
2806 -> Index Scan using t2_pkey on t2
2807 Filter: (ctid = '(1,1)'::tid)
2808 -> Index Scan using t1_pkey on t1
2809 Index Cond: (id = t2.id)
2810 Filter: (ctid = '(1,1)'::tid)
2813 /*+NoTidScan(t1) BitmapScan(t2)*/
2814 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2824 ------------------------------------------
2827 Filter: (ctid = '(1,1)'::tid)
2828 -> Bitmap Heap Scan on t2
2829 Recheck Cond: (id = t1.id)
2830 Filter: (ctid = '(1,1)'::tid)
2831 -> Bitmap Index Scan on t2_pkey
2832 Index Cond: (id = t1.id)
2835 /*+NoTidScan(t1) TidScan(t2)*/
2836 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2846 -----------------------------------------
2849 TID Cond: (ctid = '(1,1)'::tid)
2850 -> Index Scan using t1_pkey on t1
2851 Index Cond: (id = t2.id)
2852 Filter: (ctid = '(1,1)'::tid)
2855 /*+NoTidScan(t1) NoSeqScan(t2)*/
2856 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2866 -----------------------------------------
2869 TID Cond: (ctid = '(1,1)'::tid)
2870 -> Index Scan using t1_pkey on t1
2871 Index Cond: (id = t2.id)
2872 Filter: (ctid = '(1,1)'::tid)
2875 /*+NoTidScan(t1) NoIndexScan(t2)*/
2876 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2886 -----------------------------------------
2889 TID Cond: (ctid = '(1,1)'::tid)
2890 -> Index Scan using t1_pkey on t1
2891 Index Cond: (id = t2.id)
2892 Filter: (ctid = '(1,1)'::tid)
2895 /*+NoTidScan(t1) NoBitmapScan(t2)*/
2896 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2906 -----------------------------------------
2909 TID Cond: (ctid = '(1,1)'::tid)
2910 -> Index Scan using t1_pkey on t1
2911 Index Cond: (id = t2.id)
2912 Filter: (ctid = '(1,1)'::tid)
2915 /*+NoTidScan(t1) NoTidScan(t2)*/
2916 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2926 ---------------------------------------
2929 Filter: (ctid = '(1,1)'::tid)
2930 -> Index Scan using t1_pkey on t1
2931 Index Cond: (id = t2.id)
2932 Filter: (ctid = '(1,1)'::tid)
2936 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)' AND t1.id < 10 AND t2.id < 10;
2938 -----------------------------------------
2940 Join Filter: (t1.id = t2.id)
2942 TID Cond: (ctid = '(1,1)'::tid)
2945 TID Cond: (ctid = '(1,1)'::tid)
2949 /*+BitmapScan(t1) BitmapScan(t2)*/
2950 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)' AND t1.id < 10 AND t2.id < 10;
2960 --------------------------------------------------------
2962 -> Bitmap Heap Scan on t2
2963 Recheck Cond: (id < 10)
2964 Filter: (ctid = '(1,1)'::tid)
2965 -> Bitmap Index Scan on t2_pkey
2966 Index Cond: (id < 10)
2967 -> Bitmap Heap Scan on t1
2968 Recheck Cond: ((id = t2.id) AND (id < 10))
2969 Filter: (ctid = '(1,1)'::tid)
2970 -> Bitmap Index Scan on t1_pkey
2971 Index Cond: ((id = t2.id) AND (id < 10))
2975 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
2977 ------------------------------
2979 Hash Cond: (t1.id = t2.id)
2985 /*+MergeJoin(t1 t2)*/
2986 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
2995 --------------------------------------
2997 Merge Cond: (t1.id = t2.id)
2998 -> Index Scan using t1_pkey on t1
2999 -> Index Scan using t2_pkey on t2
3003 /*+NestLoop(t1 t2)*/
3004 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
3013 ------------------------------
3015 Hash Cond: (t1.id = t2.id)
3021 -- inheritance tables test
3022 SET constraint_exclusion TO off;
3023 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3025 -----------------------------------------------------------------------
3028 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3029 -> Seq Scan on p1_c1
3030 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3031 -> Seq Scan on p1_c2
3032 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3033 -> Seq Scan on p1_c3
3034 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3035 -> Seq Scan on p1_c4
3036 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3037 -> Seq Scan on p1_c1_c1
3038 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3039 -> Seq Scan on p1_c1_c2
3040 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3041 -> Seq Scan on p1_c3_c1
3042 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3043 -> Seq Scan on p1_c3_c2
3044 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3047 SET constraint_exclusion TO on;
3048 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3050 -----------------------------------------------------------------------
3053 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3054 -> Seq Scan on p1_c1
3055 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3056 -> Seq Scan on p1_c1_c1
3057 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3058 -> Seq Scan on p1_c1_c2
3059 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3062 SET constraint_exclusion TO off;
3064 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3073 -----------------------------------------------------------------------
3076 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3077 -> Seq Scan on p1_c1
3078 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3079 -> Seq Scan on p1_c2
3080 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3081 -> Seq Scan on p1_c3
3082 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3083 -> Seq Scan on p1_c4
3084 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3085 -> Seq Scan on p1_c1_c1
3086 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3087 -> Seq Scan on p1_c1_c2
3088 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3089 -> Seq Scan on p1_c3_c1
3090 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3091 -> Seq Scan on p1_c3_c2
3092 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3096 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3105 --------------------------------------------------
3107 -> Index Scan using p1_pkey on p1
3108 Index Cond: ((id >= 50) AND (id <= 51))
3109 Filter: (ctid = '(1,1)'::tid)
3110 -> Index Scan using p1_c1_pkey on p1_c1
3111 Index Cond: ((id >= 50) AND (id <= 51))
3112 Filter: (ctid = '(1,1)'::tid)
3113 -> Index Scan using p1_c2_pkey on p1_c2
3114 Index Cond: ((id >= 50) AND (id <= 51))
3115 Filter: (ctid = '(1,1)'::tid)
3116 -> Index Scan using p1_c3_pkey on p1_c3
3117 Index Cond: ((id >= 50) AND (id <= 51))
3118 Filter: (ctid = '(1,1)'::tid)
3119 -> Index Scan using p1_c4_pkey on p1_c4
3120 Index Cond: ((id >= 50) AND (id <= 51))
3121 Filter: (ctid = '(1,1)'::tid)
3122 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3123 Index Cond: ((id >= 50) AND (id <= 51))
3124 Filter: (ctid = '(1,1)'::tid)
3125 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3126 Index Cond: ((id >= 50) AND (id <= 51))
3127 Filter: (ctid = '(1,1)'::tid)
3128 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
3129 Index Cond: ((id >= 50) AND (id <= 51))
3130 Filter: (ctid = '(1,1)'::tid)
3131 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
3132 Index Cond: ((id >= 50) AND (id <= 51))
3133 Filter: (ctid = '(1,1)'::tid)
3137 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3146 -------------------------------------------------------
3148 -> Bitmap Heap Scan on p1
3149 Recheck Cond: ((id >= 50) AND (id <= 51))
3150 Filter: (ctid = '(1,1)'::tid)
3151 -> Bitmap Index Scan on p1_pkey
3152 Index Cond: ((id >= 50) AND (id <= 51))
3153 -> Bitmap Heap Scan on p1_c1
3154 Recheck Cond: ((id >= 50) AND (id <= 51))
3155 Filter: (ctid = '(1,1)'::tid)
3156 -> Bitmap Index Scan on p1_c1_pkey
3157 Index Cond: ((id >= 50) AND (id <= 51))
3158 -> Bitmap Heap Scan on p1_c2
3159 Recheck Cond: ((id >= 50) AND (id <= 51))
3160 Filter: (ctid = '(1,1)'::tid)
3161 -> Bitmap Index Scan on p1_c2_pkey
3162 Index Cond: ((id >= 50) AND (id <= 51))
3163 -> Bitmap Heap Scan on p1_c3
3164 Recheck Cond: ((id >= 50) AND (id <= 51))
3165 Filter: (ctid = '(1,1)'::tid)
3166 -> Bitmap Index Scan on p1_c3_pkey
3167 Index Cond: ((id >= 50) AND (id <= 51))
3168 -> Bitmap Heap Scan on p1_c4
3169 Recheck Cond: ((id >= 50) AND (id <= 51))
3170 Filter: (ctid = '(1,1)'::tid)
3171 -> Bitmap Index Scan on p1_c4_pkey
3172 Index Cond: ((id >= 50) AND (id <= 51))
3173 -> Bitmap Heap Scan on p1_c1_c1
3174 Recheck Cond: ((id >= 50) AND (id <= 51))
3175 Filter: (ctid = '(1,1)'::tid)
3176 -> Bitmap Index Scan on p1_c1_c1_pkey
3177 Index Cond: ((id >= 50) AND (id <= 51))
3178 -> Bitmap Heap Scan on p1_c1_c2
3179 Recheck Cond: ((id >= 50) AND (id <= 51))
3180 Filter: (ctid = '(1,1)'::tid)
3181 -> Bitmap Index Scan on p1_c1_c2_pkey
3182 Index Cond: ((id >= 50) AND (id <= 51))
3183 -> Bitmap Heap Scan on p1_c3_c1
3184 Recheck Cond: ((id >= 50) AND (id <= 51))
3185 Filter: (ctid = '(1,1)'::tid)
3186 -> Bitmap Index Scan on p1_c3_c1_pkey
3187 Index Cond: ((id >= 50) AND (id <= 51))
3188 -> Bitmap Heap Scan on p1_c3_c2
3189 Recheck Cond: ((id >= 50) AND (id <= 51))
3190 Filter: (ctid = '(1,1)'::tid)
3191 -> Bitmap Index Scan on p1_c3_c2_pkey
3192 Index Cond: ((id >= 50) AND (id <= 51))
3196 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3205 ---------------------------------------------
3208 TID Cond: (ctid = '(1,1)'::tid)
3209 Filter: ((id >= 50) AND (id <= 51))
3210 -> Tid Scan on p1_c1
3211 TID Cond: (ctid = '(1,1)'::tid)
3212 Filter: ((id >= 50) AND (id <= 51))
3213 -> Tid Scan on p1_c2
3214 TID Cond: (ctid = '(1,1)'::tid)
3215 Filter: ((id >= 50) AND (id <= 51))
3216 -> Tid Scan on p1_c3
3217 TID Cond: (ctid = '(1,1)'::tid)
3218 Filter: ((id >= 50) AND (id <= 51))
3219 -> Tid Scan on p1_c4
3220 TID Cond: (ctid = '(1,1)'::tid)
3221 Filter: ((id >= 50) AND (id <= 51))
3222 -> Tid Scan on p1_c1_c1
3223 TID Cond: (ctid = '(1,1)'::tid)
3224 Filter: ((id >= 50) AND (id <= 51))
3225 -> Tid Scan on p1_c1_c2
3226 TID Cond: (ctid = '(1,1)'::tid)
3227 Filter: ((id >= 50) AND (id <= 51))
3228 -> Tid Scan on p1_c3_c1
3229 TID Cond: (ctid = '(1,1)'::tid)
3230 Filter: ((id >= 50) AND (id <= 51))
3231 -> Tid Scan on p1_c3_c2
3232 TID Cond: (ctid = '(1,1)'::tid)
3233 Filter: ((id >= 50) AND (id <= 51))
3236 SET constraint_exclusion TO on;
3238 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3247 -----------------------------------------------------------------------
3250 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3251 -> Seq Scan on p1_c1
3252 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3253 -> Seq Scan on p1_c1_c1
3254 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3255 -> Seq Scan on p1_c1_c2
3256 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3260 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3269 --------------------------------------------------
3271 -> Index Scan using p1_pkey on p1
3272 Index Cond: ((id >= 50) AND (id <= 51))
3273 Filter: (ctid = '(1,1)'::tid)
3274 -> Index Scan using p1_c1_pkey on p1_c1
3275 Index Cond: ((id >= 50) AND (id <= 51))
3276 Filter: (ctid = '(1,1)'::tid)
3277 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3278 Index Cond: ((id >= 50) AND (id <= 51))
3279 Filter: (ctid = '(1,1)'::tid)
3280 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3281 Index Cond: ((id >= 50) AND (id <= 51))
3282 Filter: (ctid = '(1,1)'::tid)
3286 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3295 -------------------------------------------------------
3297 -> Bitmap Heap Scan on p1
3298 Recheck Cond: ((id >= 50) AND (id <= 51))
3299 Filter: (ctid = '(1,1)'::tid)
3300 -> Bitmap Index Scan on p1_pkey
3301 Index Cond: ((id >= 50) AND (id <= 51))
3302 -> Bitmap Heap Scan on p1_c1
3303 Recheck Cond: ((id >= 50) AND (id <= 51))
3304 Filter: (ctid = '(1,1)'::tid)
3305 -> Bitmap Index Scan on p1_c1_pkey
3306 Index Cond: ((id >= 50) AND (id <= 51))
3307 -> Bitmap Heap Scan on p1_c1_c1
3308 Recheck Cond: ((id >= 50) AND (id <= 51))
3309 Filter: (ctid = '(1,1)'::tid)
3310 -> Bitmap Index Scan on p1_c1_c1_pkey
3311 Index Cond: ((id >= 50) AND (id <= 51))
3312 -> Bitmap Heap Scan on p1_c1_c2
3313 Recheck Cond: ((id >= 50) AND (id <= 51))
3314 Filter: (ctid = '(1,1)'::tid)
3315 -> Bitmap Index Scan on p1_c1_c2_pkey
3316 Index Cond: ((id >= 50) AND (id <= 51))
3320 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3329 ---------------------------------------------
3332 TID Cond: (ctid = '(1,1)'::tid)
3333 Filter: ((id >= 50) AND (id <= 51))
3334 -> Tid Scan on p1_c1
3335 TID Cond: (ctid = '(1,1)'::tid)
3336 Filter: ((id >= 50) AND (id <= 51))
3337 -> Tid Scan on p1_c1_c1
3338 TID Cond: (ctid = '(1,1)'::tid)
3339 Filter: ((id >= 50) AND (id <= 51))
3340 -> Tid Scan on p1_c1_c2
3341 TID Cond: (ctid = '(1,1)'::tid)
3342 Filter: ((id >= 50) AND (id <= 51))
3345 SET constraint_exclusion TO off;
3346 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;
3348 -----------------------------------------------------------------------------------
3350 Merge Cond: (p1.id = t1.id)
3355 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3356 -> Seq Scan on p1_c1
3357 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3358 -> Seq Scan on p1_c2
3359 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3360 -> Seq Scan on p1_c3
3361 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3362 -> Seq Scan on p1_c4
3363 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3364 -> Seq Scan on p1_c1_c1
3365 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3366 -> Seq Scan on p1_c1_c2
3367 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3368 -> Seq Scan on p1_c3_c1
3369 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3370 -> Seq Scan on p1_c3_c2
3371 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3372 -> Index Scan using t1_pkey on t1
3373 Index Cond: (id < 10)
3376 SET constraint_exclusion TO on;
3377 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;
3379 -----------------------------------------------------------------------------------
3381 Merge Cond: (p1.id = t1.id)
3386 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3387 -> Seq Scan on p1_c1
3388 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3389 -> Seq Scan on p1_c1_c1
3390 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3391 -> Seq Scan on p1_c1_c2
3392 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3393 -> Index Scan using t1_pkey on t1
3394 Index Cond: (id < 10)
3397 SET constraint_exclusion TO off;
3399 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;
3408 -----------------------------------------------------------------------------------
3410 Merge Cond: (p1.id = t1.id)
3415 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3416 -> Seq Scan on p1_c1
3417 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3418 -> Seq Scan on p1_c2
3419 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3420 -> Seq Scan on p1_c3
3421 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3422 -> Seq Scan on p1_c4
3423 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3424 -> Seq Scan on p1_c1_c1
3425 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3426 -> Seq Scan on p1_c1_c2
3427 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3428 -> Seq Scan on p1_c3_c1
3429 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3430 -> Seq Scan on p1_c3_c2
3431 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3432 -> Index Scan using t1_pkey on t1
3433 Index Cond: (id < 10)
3437 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;
3446 --------------------------------------------------------
3448 Merge Cond: (p1.id = t1.id)
3451 -> Index Scan using p1_pkey on p1
3452 Index Cond: ((id >= 50) AND (id <= 51))
3453 Filter: (ctid = '(1,1)'::tid)
3454 -> Index Scan using p1_c1_pkey on p1_c1
3455 Index Cond: ((id >= 50) AND (id <= 51))
3456 Filter: (ctid = '(1,1)'::tid)
3457 -> Index Scan using p1_c2_pkey on p1_c2
3458 Index Cond: ((id >= 50) AND (id <= 51))
3459 Filter: (ctid = '(1,1)'::tid)
3460 -> Index Scan using p1_c3_pkey on p1_c3
3461 Index Cond: ((id >= 50) AND (id <= 51))
3462 Filter: (ctid = '(1,1)'::tid)
3463 -> Index Scan using p1_c4_pkey on p1_c4
3464 Index Cond: ((id >= 50) AND (id <= 51))
3465 Filter: (ctid = '(1,1)'::tid)
3466 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3467 Index Cond: ((id >= 50) AND (id <= 51))
3468 Filter: (ctid = '(1,1)'::tid)
3469 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3470 Index Cond: ((id >= 50) AND (id <= 51))
3471 Filter: (ctid = '(1,1)'::tid)
3472 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1
3473 Index Cond: ((id >= 50) AND (id <= 51))
3474 Filter: (ctid = '(1,1)'::tid)
3475 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2
3476 Index Cond: ((id >= 50) AND (id <= 51))
3477 Filter: (ctid = '(1,1)'::tid)
3478 -> Index Scan using t1_pkey on t1
3479 Index Cond: (id < 10)
3483 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;
3492 -------------------------------------------------------------------
3494 Merge Cond: (p1.id = t1.id)
3498 -> Bitmap Heap Scan on p1
3499 Recheck Cond: ((id >= 50) AND (id <= 51))
3500 Filter: (ctid = '(1,1)'::tid)
3501 -> Bitmap Index Scan on p1_pkey
3502 Index Cond: ((id >= 50) AND (id <= 51))
3503 -> Bitmap Heap Scan on p1_c1
3504 Recheck Cond: ((id >= 50) AND (id <= 51))
3505 Filter: (ctid = '(1,1)'::tid)
3506 -> Bitmap Index Scan on p1_c1_pkey
3507 Index Cond: ((id >= 50) AND (id <= 51))
3508 -> Bitmap Heap Scan on p1_c2
3509 Recheck Cond: ((id >= 50) AND (id <= 51))
3510 Filter: (ctid = '(1,1)'::tid)
3511 -> Bitmap Index Scan on p1_c2_pkey
3512 Index Cond: ((id >= 50) AND (id <= 51))
3513 -> Bitmap Heap Scan on p1_c3
3514 Recheck Cond: ((id >= 50) AND (id <= 51))
3515 Filter: (ctid = '(1,1)'::tid)
3516 -> Bitmap Index Scan on p1_c3_pkey
3517 Index Cond: ((id >= 50) AND (id <= 51))
3518 -> Bitmap Heap Scan on p1_c4
3519 Recheck Cond: ((id >= 50) AND (id <= 51))
3520 Filter: (ctid = '(1,1)'::tid)
3521 -> Bitmap Index Scan on p1_c4_pkey
3522 Index Cond: ((id >= 50) AND (id <= 51))
3523 -> Bitmap Heap Scan on p1_c1_c1
3524 Recheck Cond: ((id >= 50) AND (id <= 51))
3525 Filter: (ctid = '(1,1)'::tid)
3526 -> Bitmap Index Scan on p1_c1_c1_pkey
3527 Index Cond: ((id >= 50) AND (id <= 51))
3528 -> Bitmap Heap Scan on p1_c1_c2
3529 Recheck Cond: ((id >= 50) AND (id <= 51))
3530 Filter: (ctid = '(1,1)'::tid)
3531 -> Bitmap Index Scan on p1_c1_c2_pkey
3532 Index Cond: ((id >= 50) AND (id <= 51))
3533 -> Bitmap Heap Scan on p1_c3_c1
3534 Recheck Cond: ((id >= 50) AND (id <= 51))
3535 Filter: (ctid = '(1,1)'::tid)
3536 -> Bitmap Index Scan on p1_c3_c1_pkey
3537 Index Cond: ((id >= 50) AND (id <= 51))
3538 -> Bitmap Heap Scan on p1_c3_c2
3539 Recheck Cond: ((id >= 50) AND (id <= 51))
3540 Filter: (ctid = '(1,1)'::tid)
3541 -> Bitmap Index Scan on p1_c3_c2_pkey
3542 Index Cond: ((id >= 50) AND (id <= 51))
3543 -> Index Scan using t1_pkey on t1
3544 Index Cond: (id < 10)
3548 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;
3557 ---------------------------------------------------------
3559 Merge Cond: (p1.id = t1.id)
3564 TID Cond: (ctid = '(1,1)'::tid)
3565 Filter: ((id >= 50) AND (id <= 51))
3566 -> Tid Scan on p1_c1
3567 TID Cond: (ctid = '(1,1)'::tid)
3568 Filter: ((id >= 50) AND (id <= 51))
3569 -> Tid Scan on p1_c2
3570 TID Cond: (ctid = '(1,1)'::tid)
3571 Filter: ((id >= 50) AND (id <= 51))
3572 -> Tid Scan on p1_c3
3573 TID Cond: (ctid = '(1,1)'::tid)
3574 Filter: ((id >= 50) AND (id <= 51))
3575 -> Tid Scan on p1_c4
3576 TID Cond: (ctid = '(1,1)'::tid)
3577 Filter: ((id >= 50) AND (id <= 51))
3578 -> Tid Scan on p1_c1_c1
3579 TID Cond: (ctid = '(1,1)'::tid)
3580 Filter: ((id >= 50) AND (id <= 51))
3581 -> Tid Scan on p1_c1_c2
3582 TID Cond: (ctid = '(1,1)'::tid)
3583 Filter: ((id >= 50) AND (id <= 51))
3584 -> Tid Scan on p1_c3_c1
3585 TID Cond: (ctid = '(1,1)'::tid)
3586 Filter: ((id >= 50) AND (id <= 51))
3587 -> Tid Scan on p1_c3_c2
3588 TID Cond: (ctid = '(1,1)'::tid)
3589 Filter: ((id >= 50) AND (id <= 51))
3590 -> Index Scan using t1_pkey on t1
3591 Index Cond: (id < 10)
3594 /*+NestLoop(p1 t1)*/
3595 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3604 -----------------------------------------------------------------------------
3606 Join Filter: (p1.id = t1.id)
3609 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3610 -> Seq Scan on p1_c1
3611 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3612 -> Seq Scan on p1_c2
3613 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3614 -> Seq Scan on p1_c3
3615 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3616 -> Seq Scan on p1_c4
3617 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3618 -> Seq Scan on p1_c1_c1
3619 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3620 -> Seq Scan on p1_c1_c2
3621 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3622 -> Seq Scan on p1_c3_c1
3623 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3624 -> Seq Scan on p1_c3_c2
3625 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3627 -> Index Scan using t1_pkey on t1
3628 Index Cond: (id < 10)
3631 /*+MergeJoin(p1 t1)*/
3632 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;
3641 -----------------------------------------------------------------------------------
3643 Merge Cond: (p1.id = t1.id)
3648 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3649 -> Seq Scan on p1_c1
3650 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3651 -> Seq Scan on p1_c2
3652 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3653 -> Seq Scan on p1_c3
3654 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3655 -> Seq Scan on p1_c4
3656 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3657 -> Seq Scan on p1_c1_c1
3658 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3659 -> Seq Scan on p1_c1_c2
3660 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3661 -> Seq Scan on p1_c3_c1
3662 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3663 -> Seq Scan on p1_c3_c2
3664 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3665 -> Index Scan using t1_pkey on t1
3666 Index Cond: (id < 10)
3669 /*+HashJoin(p1 t1)*/
3670 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;
3679 -----------------------------------------------------------------------------
3681 Hash Cond: (p1.id = t1.id)
3684 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3685 -> Seq Scan on p1_c1
3686 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3687 -> Seq Scan on p1_c2
3688 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3689 -> Seq Scan on p1_c3
3690 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3691 -> Seq Scan on p1_c4
3692 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3693 -> Seq Scan on p1_c1_c1
3694 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3695 -> Seq Scan on p1_c1_c2
3696 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3697 -> Seq Scan on p1_c3_c1
3698 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3699 -> Seq Scan on p1_c3_c2
3700 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3702 -> Index Scan using t1_pkey on t1
3703 Index Cond: (id < 10)
3706 SET constraint_exclusion TO on;
3708 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;
3717 -----------------------------------------------------------------------------------
3719 Merge Cond: (p1.id = t1.id)
3724 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3725 -> Seq Scan on p1_c1
3726 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3727 -> Seq Scan on p1_c1_c1
3728 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3729 -> Seq Scan on p1_c1_c2
3730 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3731 -> Index Scan using t1_pkey on t1
3732 Index Cond: (id < 10)
3736 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;
3745 --------------------------------------------------------
3747 Merge Cond: (p1.id = t1.id)
3750 -> Index Scan using p1_pkey on p1
3751 Index Cond: ((id >= 50) AND (id <= 51))
3752 Filter: (ctid = '(1,1)'::tid)
3753 -> Index Scan using p1_c1_pkey on p1_c1
3754 Index Cond: ((id >= 50) AND (id <= 51))
3755 Filter: (ctid = '(1,1)'::tid)
3756 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1
3757 Index Cond: ((id >= 50) AND (id <= 51))
3758 Filter: (ctid = '(1,1)'::tid)
3759 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2
3760 Index Cond: ((id >= 50) AND (id <= 51))
3761 Filter: (ctid = '(1,1)'::tid)
3762 -> Index Scan using t1_pkey on t1
3763 Index Cond: (id < 10)
3767 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;
3776 -------------------------------------------------------------------
3778 Merge Cond: (p1.id = t1.id)
3782 -> Bitmap Heap Scan on p1
3783 Recheck Cond: ((id >= 50) AND (id <= 51))
3784 Filter: (ctid = '(1,1)'::tid)
3785 -> Bitmap Index Scan on p1_pkey
3786 Index Cond: ((id >= 50) AND (id <= 51))
3787 -> Bitmap Heap Scan on p1_c1
3788 Recheck Cond: ((id >= 50) AND (id <= 51))
3789 Filter: (ctid = '(1,1)'::tid)
3790 -> Bitmap Index Scan on p1_c1_pkey
3791 Index Cond: ((id >= 50) AND (id <= 51))
3792 -> Bitmap Heap Scan on p1_c1_c1
3793 Recheck Cond: ((id >= 50) AND (id <= 51))
3794 Filter: (ctid = '(1,1)'::tid)
3795 -> Bitmap Index Scan on p1_c1_c1_pkey
3796 Index Cond: ((id >= 50) AND (id <= 51))
3797 -> Bitmap Heap Scan on p1_c1_c2
3798 Recheck Cond: ((id >= 50) AND (id <= 51))
3799 Filter: (ctid = '(1,1)'::tid)
3800 -> Bitmap Index Scan on p1_c1_c2_pkey
3801 Index Cond: ((id >= 50) AND (id <= 51))
3802 -> Index Scan using t1_pkey on t1
3803 Index Cond: (id < 10)
3807 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;
3816 ---------------------------------------------------------
3818 Merge Cond: (p1.id = t1.id)
3823 TID Cond: (ctid = '(1,1)'::tid)
3824 Filter: ((id >= 50) AND (id <= 51))
3825 -> Tid Scan on p1_c1
3826 TID Cond: (ctid = '(1,1)'::tid)
3827 Filter: ((id >= 50) AND (id <= 51))
3828 -> Tid Scan on p1_c1_c1
3829 TID Cond: (ctid = '(1,1)'::tid)
3830 Filter: ((id >= 50) AND (id <= 51))
3831 -> Tid Scan on p1_c1_c2
3832 TID Cond: (ctid = '(1,1)'::tid)
3833 Filter: ((id >= 50) AND (id <= 51))
3834 -> Index Scan using t1_pkey on t1
3835 Index Cond: (id < 10)
3838 /*+NestLoop(p1 t1)*/
3839 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;
3848 -----------------------------------------------------------------------------------
3850 Join Filter: (p1.id = t1.id)
3851 -> Index Scan using t1_pkey on t1
3852 Index Cond: (id < 10)
3856 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3857 -> Seq Scan on p1_c1
3858 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3859 -> Seq Scan on p1_c1_c1
3860 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3861 -> Seq Scan on p1_c1_c2
3862 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3865 /*+MergeJoin(p1 t1)*/
3866 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;
3875 -----------------------------------------------------------------------------------
3877 Merge Cond: (p1.id = t1.id)
3882 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3883 -> Seq Scan on p1_c1
3884 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3885 -> Seq Scan on p1_c1_c1
3886 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3887 -> Seq Scan on p1_c1_c2
3888 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3889 -> Index Scan using t1_pkey on t1
3890 Index Cond: (id < 10)
3893 /*+HashJoin(p1 t1)*/
3894 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;
3903 -----------------------------------------------------------------------------------
3905 Hash Cond: (t1.id = p1.id)
3906 -> Index Scan using t1_pkey on t1
3907 Index Cond: (id < 10)
3911 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3912 -> Seq Scan on p1_c1
3913 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3914 -> Seq Scan on p1_c1_c1
3915 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3916 -> Seq Scan on p1_c1_c2
3917 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3920 SET constraint_exclusion TO off;
3921 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3923 -----------------------------------------------------------------
3925 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3928 SET constraint_exclusion TO on;
3929 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3931 -----------------------------------------------------------------
3933 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3936 SET constraint_exclusion TO off;
3938 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3947 -----------------------------------------------------------------
3949 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3953 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3962 -------------------------------------------
3963 Index Scan using p1_pkey on p1
3964 Index Cond: ((id >= 50) AND (id <= 51))
3965 Filter: (ctid = '(1,1)'::tid)
3969 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3978 -------------------------------------------------
3979 Bitmap Heap Scan on p1
3980 Recheck Cond: ((id >= 50) AND (id <= 51))
3981 Filter: (ctid = '(1,1)'::tid)
3982 -> Bitmap Index Scan on p1_pkey
3983 Index Cond: ((id >= 50) AND (id <= 51))
3987 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3996 ---------------------------------------
3998 TID Cond: (ctid = '(1,1)'::tid)
3999 Filter: ((id >= 50) AND (id <= 51))
4002 /*+NestLoop(p1 t1)*/
4003 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;
4012 -----------------------------------------------------------------------
4014 Join Filter: (p1.id = t1.id)
4016 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4017 -> Index Scan using t1_pkey on t1
4018 Index Cond: (id < 10)
4021 /*+MergeJoin(p1 t1)*/
4022 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;
4031 -----------------------------------------------------------------------------
4033 Merge Cond: (p1.id = t1.id)
4037 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4038 -> Index Scan using t1_pkey on t1
4039 Index Cond: (id < 10)
4042 /*+HashJoin(p1 t1)*/
4043 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;
4052 -----------------------------------------------------------------------------
4054 Hash Cond: (t1.id = p1.id)
4055 -> Index Scan using t1_pkey on t1
4056 Index Cond: (id < 10)
4059 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4062 SET constraint_exclusion TO on;
4064 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4073 -----------------------------------------------------------------
4075 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4079 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4088 -------------------------------------------
4089 Index Scan using p1_pkey on p1
4090 Index Cond: ((id >= 50) AND (id <= 51))
4091 Filter: (ctid = '(1,1)'::tid)
4095 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4104 -------------------------------------------------
4105 Bitmap Heap Scan on p1
4106 Recheck Cond: ((id >= 50) AND (id <= 51))
4107 Filter: (ctid = '(1,1)'::tid)
4108 -> Bitmap Index Scan on p1_pkey
4109 Index Cond: ((id >= 50) AND (id <= 51))
4113 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4122 ---------------------------------------
4124 TID Cond: (ctid = '(1,1)'::tid)
4125 Filter: ((id >= 50) AND (id <= 51))
4128 /*+NestLoop(p1 t1)*/
4129 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;
4138 -----------------------------------------------------------------------
4140 Join Filter: (p1.id = t1.id)
4142 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4143 -> Index Scan using t1_pkey on t1
4144 Index Cond: (id < 10)
4147 /*+MergeJoin(p1 t1)*/
4148 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;
4157 -----------------------------------------------------------------------------
4159 Merge Cond: (p1.id = t1.id)
4163 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4164 -> Index Scan using t1_pkey on t1
4165 Index Cond: (id < 10)
4168 /*+HashJoin(p1 t1)*/
4169 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;
4178 -----------------------------------------------------------------------------
4180 Hash Cond: (t1.id = p1.id)
4181 -> Index Scan using t1_pkey on t1
4182 Index Cond: (id < 10)
4185 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4188 SET constraint_exclusion TO off;
4189 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 Join Filter: (p1.id = t1.id)
4195 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4196 -> Index Scan using t1_pkey on t1
4197 Index Cond: (id < 10)
4200 SET constraint_exclusion TO on;
4201 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;
4203 -----------------------------------------------------------------------
4205 Join Filter: (p1.id = t1.id)
4207 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4208 -> Index Scan using t1_pkey on t1
4209 Index Cond: (id < 10)
4212 SET constraint_exclusion TO off;
4214 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4223 -----------------------------------------------------------------------
4225 Join Filter: (p1.id = t1.id)
4227 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4228 -> Index Scan using t1_pkey on t1
4229 Index Cond: (id < 10)
4233 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;
4242 -------------------------------------------------
4244 Merge Cond: (p1.id = t1.id)
4245 -> Index Scan using p1_pkey on p1
4246 Index Cond: ((id >= 50) AND (id <= 51))
4247 Filter: (ctid = '(1,1)'::tid)
4248 -> Index Scan using t1_pkey on t1
4249 Index Cond: (id < 10)
4253 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;
4262 -------------------------------------------------------
4264 Join Filter: (p1.id = t1.id)
4265 -> Bitmap Heap Scan on p1
4266 Recheck Cond: ((id >= 50) AND (id <= 51))
4267 Filter: (ctid = '(1,1)'::tid)
4268 -> Bitmap Index Scan on p1_pkey
4269 Index Cond: ((id >= 50) AND (id <= 51))
4270 -> Index Scan using t1_pkey on t1
4271 Index Cond: (id < 10)
4275 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;
4284 ---------------------------------------------
4286 Join Filter: (p1.id = t1.id)
4288 TID Cond: (ctid = '(1,1)'::tid)
4289 Filter: ((id >= 50) AND (id <= 51))
4290 -> Index Scan using t1_pkey on t1
4291 Index Cond: (id < 10)
4294 SET constraint_exclusion TO on;
4296 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;
4305 -----------------------------------------------------------------------
4307 Join Filter: (p1.id = t1.id)
4309 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4310 -> Index Scan using t1_pkey on t1
4311 Index Cond: (id < 10)
4315 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;
4324 -------------------------------------------------
4326 Merge Cond: (p1.id = t1.id)
4327 -> Index Scan using p1_pkey on p1
4328 Index Cond: ((id >= 50) AND (id <= 51))
4329 Filter: (ctid = '(1,1)'::tid)
4330 -> Index Scan using t1_pkey on t1
4331 Index Cond: (id < 10)
4335 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;
4344 -------------------------------------------------------
4346 Join Filter: (p1.id = t1.id)
4347 -> Bitmap Heap Scan on p1
4348 Recheck Cond: ((id >= 50) AND (id <= 51))
4349 Filter: (ctid = '(1,1)'::tid)
4350 -> Bitmap Index Scan on p1_pkey
4351 Index Cond: ((id >= 50) AND (id <= 51))
4352 -> Index Scan using t1_pkey on t1
4353 Index Cond: (id < 10)
4357 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;
4366 ---------------------------------------------
4368 Join Filter: (p1.id = t1.id)
4370 TID Cond: (ctid = '(1,1)'::tid)
4371 Filter: ((id >= 50) AND (id <= 51))
4372 -> Index Scan using t1_pkey on t1
4373 Index Cond: (id < 10)
4377 /*+SeqScan("""t1 ) ")IndexScan("t 2 """)HashJoin("""t1 ) "T3"t 2 """)Leading("""t1 ) "T3"t 2 """)Set(application_name"a a a"" a A")*/
4378 EXPLAIN (COSTS false) SELECT * FROM t1 """t1 ) ", t2 "t 2 """, t3 "T3" WHERE """t1 ) ".id = "t 2 """.id AND """t1 ) ".id = "T3".id;
4383 HashJoin("""t1 ) " T3 "t 2 """)
4384 Leading("""t1 ) " T3 "t 2 """)
4385 Set(application_name "a a a"" a A")
4391 ---------------------------------------------------------
4393 Hash Cond: ("t 2 """.id = """t1 ) ".id)
4394 -> Index Scan using t2_pkey on t2 "t 2 """
4397 Hash Cond: ("""t1 ) ".id = "T3".id)
4398 -> Seq Scan on t1 """t1 ) "
4400 -> Seq Scan on t3 "T3"
4403 -- duplicate hint test
4404 /*+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)*/
4405 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
4406 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)"
4407 DETAIL: Conflict scan method hint.
4408 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)"
4409 DETAIL: Conflict scan method hint.
4410 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)"
4411 DETAIL: Conflict scan method hint.
4412 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)"
4413 DETAIL: Conflict scan method hint.
4414 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)"
4415 DETAIL: Conflict scan method hint.
4416 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)"
4417 DETAIL: Conflict scan method hint.
4418 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)"
4419 DETAIL: Conflict join method hint.
4420 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)"
4421 DETAIL: Conflict join method hint.
4422 INFO: pg_hint_plan: hint syntax error at or near "Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4423 DETAIL: Conflict set hint.
4424 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)"
4425 DETAIL: Conflict leading hint.
4432 Set(enable_mergejoin on)
4433 Set(enable_seqscan on)
4445 Set(enable_seqscan off)
4449 -----------------------------------------------
4451 Merge Cond: (t1.id = t2.id)
4455 TID Cond: (ctid = '(1,1)'::tid)
4459 TID Cond: (ctid = '(1,1)'::tid)
4462 -- sub query Leading hint test
4463 SET from_collapse_limit TO 100;
4464 SET geqo_threshold TO 100;
4465 EXPLAIN (COSTS false)
4467 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
4470 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
4471 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4472 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
4473 ) 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 = (
4474 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
4477 ------------------------------------------------------------------------------
4479 InitPlan 1 (returns $0)
4482 Merge Cond: (t1_2.id = t3_2.id)
4484 Merge Cond: (t1_2.id = t2_2.id)
4485 -> Index Only Scan using t1_pkey on t1 t1_2
4486 -> Index Only Scan using t2_pkey on t2 t2_2
4489 -> Seq Scan on t3 t3_2
4490 InitPlan 2 (returns $1)
4493 Merge Cond: (t1_4.id = t3_4.id)
4495 Merge Cond: (t1_4.id = t2_4.id)
4496 -> Index Only Scan using t1_pkey on t1 t1_4
4497 -> Index Only Scan using t2_pkey on t2 t2_4
4500 -> Seq Scan on t3 t3_4
4506 -> Index Only Scan using t1_pkey on t1 t1_1
4507 Index Cond: (id = $1)
4508 -> Index Only Scan using t2_pkey on t2 t2_1
4509 Index Cond: (id = $1)
4510 -> Seq Scan on t3 t3_1
4512 -> Index Only Scan using t1_pkey on t1 t1_3
4513 Index Cond: (id = $1)
4514 -> Index Only Scan using t2_pkey on t2 t2_3
4515 Index Cond: (id = $1)
4516 -> Seq Scan on t3 t3_3
4519 Filter: (max(t1_5.id) = $1)
4521 Merge Cond: (t1_5.id = t3_5.id)
4523 Merge Cond: (t1_5.id = t2_5.id)
4524 -> Index Only Scan using t1_pkey on t1 t1_5
4525 -> Index Only Scan using t2_pkey on t2 t2_5
4528 -> Seq Scan on t3 t3_5
4531 /*+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)*/
4532 EXPLAIN (COSTS false)
4534 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
4537 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
4538 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4539 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
4540 ) 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 = (
4541 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
4547 MergeJoin(t1_3 t3_3)
4555 ------------------------------------------------------------------------------
4557 InitPlan 1 (returns $1)
4560 Merge Cond: (t1_2.id = t3_2.id)
4562 -> Index Only Scan using t2_pkey on t2 t2_2
4563 -> Index Only Scan using t1_pkey on t1 t1_2
4564 Index Cond: (id = t2_2.id)
4567 -> Seq Scan on t3 t3_2
4568 InitPlan 2 (returns $3)
4571 Merge Cond: (t1_4.id = t3_4.id)
4573 -> Index Only Scan using t2_pkey on t2 t2_4
4574 -> Index Only Scan using t1_pkey on t1 t1_4
4575 Index Cond: (id = t2_4.id)
4578 -> Seq Scan on t3 t3_4
4584 -> Index Only Scan using t1_pkey on t1 t1_1
4585 Index Cond: (id = $3)
4586 -> Index Only Scan using t2_pkey on t2 t2_1
4587 Index Cond: (id = $3)
4588 -> Seq Scan on t3 t3_1
4590 -> Index Only Scan using t1_pkey on t1 t1_3
4591 Index Cond: (id = $3)
4592 -> Index Only Scan using t2_pkey on t2 t2_3
4593 Index Cond: (id = $3)
4594 -> Seq Scan on t3 t3_3
4597 Filter: (max(t1_5.id) = $3)
4599 Merge Cond: (t1_5.id = t3_5.id)
4601 -> Index Only Scan using t2_pkey on t2 t2_5
4602 -> Index Only Scan using t1_pkey on t1 t1_5
4603 Index Cond: (id = t2_5.id)
4606 -> Seq Scan on t3 t3_5
4609 /*+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)*/
4610 EXPLAIN (COSTS false)
4612 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
4615 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
4616 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4617 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
4618 ) 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 = (
4619 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
4625 MergeJoin(t1_3 t3_3)
4629 Leading(a t1_1 t1_2 t1_4 t1_5)
4634 ------------------------------------------------------------------------------
4636 InitPlan 1 (returns $1)
4639 Merge Cond: (t1_2.id = t3_2.id)
4641 -> Index Only Scan using t2_pkey on t2 t2_2
4642 -> Index Only Scan using t1_pkey on t1 t1_2
4643 Index Cond: (id = t2_2.id)
4646 -> Seq Scan on t3 t3_2
4647 InitPlan 2 (returns $3)
4650 Merge Cond: (t1_4.id = t3_4.id)
4652 -> Index Only Scan using t2_pkey on t2 t2_4
4653 -> Index Only Scan using t1_pkey on t1 t1_4
4654 Index Cond: (id = t2_4.id)
4657 -> Seq Scan on t3 t3_4
4663 -> Index Only Scan using t1_pkey on t1 t1_1
4664 Index Cond: (id = $3)
4665 -> Index Only Scan using t2_pkey on t2 t2_1
4666 Index Cond: (id = $3)
4667 -> Seq Scan on t3 t3_1
4669 -> Index Only Scan using t1_pkey on t1 t1_3
4670 Index Cond: (id = $3)
4671 -> Index Only Scan using t2_pkey on t2 t2_3
4672 Index Cond: (id = $3)
4673 -> Seq Scan on t3 t3_3
4676 Filter: (max(t1_5.id) = $3)
4678 Merge Cond: (t1_5.id = t3_5.id)
4680 -> Index Only Scan using t2_pkey on t2 t2_5
4681 -> Index Only Scan using t1_pkey on t1 t1_5
4682 Index Cond: (id = t2_5.id)
4685 -> Seq Scan on t3 t3_5
4688 /*+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)*/
4689 EXPLAIN (COSTS false)
4691 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
4694 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
4695 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4696 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
4697 ) 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 = (
4698 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
4704 MergeJoin(t1_3 t3_3)
4708 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)
4713 ------------------------------------------------------------------------------
4715 InitPlan 1 (returns $1)
4718 Merge Cond: (t1_2.id = t3_2.id)
4720 -> Index Only Scan using t2_pkey on t2 t2_2
4721 -> Index Only Scan using t1_pkey on t1 t1_2
4722 Index Cond: (id = t2_2.id)
4725 -> Seq Scan on t3 t3_2
4726 InitPlan 2 (returns $3)
4729 Merge Cond: (t1_4.id = t3_4.id)
4731 -> Index Only Scan using t2_pkey on t2 t2_4
4732 -> Index Only Scan using t1_pkey on t1 t1_4
4733 Index Cond: (id = t2_4.id)
4736 -> Seq Scan on t3 t3_4
4742 -> Index Only Scan using t1_pkey on t1 t1_1
4743 Index Cond: (id = $3)
4744 -> Index Only Scan using t2_pkey on t2 t2_1
4745 Index Cond: (id = $3)
4746 -> Seq Scan on t3 t3_1
4748 -> Index Only Scan using t1_pkey on t1 t1_3
4749 Index Cond: (id = $3)
4750 -> Index Only Scan using t2_pkey on t2 t2_3
4751 Index Cond: (id = $3)
4752 -> Seq Scan on t3 t3_3
4755 Filter: (max(t1_5.id) = $3)
4757 Merge Cond: (t1_5.id = t3_5.id)
4759 -> Index Only Scan using t2_pkey on t2 t2_5
4760 -> Index Only Scan using t1_pkey on t1 t1_5
4761 Index Cond: (id = t2_5.id)
4764 -> Seq Scan on t3 t3_5
4767 /*+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)*/
4768 EXPLAIN (COSTS false)
4770 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
4773 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
4774 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4775 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
4776 ) 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 = (
4777 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
4781 Leading(t3_5 t2_5 t1_5)
4782 Leading(t3_2 t2_2 t1_2)
4783 Leading(t3_4 t2_4 t1_4)
4784 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
4788 MergeJoin(t1_3 t3_3)
4795 ------------------------------------------------------------------------------------------------
4797 InitPlan 1 (returns $0)
4800 Merge Cond: (t2_2.id = t1_2.id)
4802 Merge Cond: (t2_2.id = t3_2.id)
4803 -> Index Only Scan using t2_pkey on t2 t2_2
4806 -> Seq Scan on t3 t3_2
4807 -> Index Only Scan using t1_pkey on t1 t1_2
4808 InitPlan 2 (returns $1)
4811 Merge Cond: (t2_4.id = t1_4.id)
4813 Merge Cond: (t2_4.id = t3_4.id)
4814 -> Index Only Scan using t2_pkey on t2 t2_4
4817 -> Seq Scan on t3 t3_4
4818 -> Index Only Scan using t1_pkey on t1 t1_4
4824 -> Seq Scan on t3 t3_3
4827 Filter: (max(t1_5.id) = $1)
4829 Merge Cond: (t2_5.id = t1_5.id)
4831 Merge Cond: (t2_5.id = t3_5.id)
4832 -> Index Only Scan using t2_pkey on t2 t2_5
4835 -> Seq Scan on t3 t3_5
4836 -> Index Only Scan using t1_pkey on t1 t1_5
4837 -> Index Only Scan using t2_pkey on t2 t2_3
4838 Index Cond: (id = $1)
4839 -> Index Only Scan using t1_pkey on t1 t1_3
4840 Index Cond: (id = $1)
4841 -> Seq Scan on t3 t3_1
4843 -> Index Only Scan using t2_pkey on t2 t2_1
4844 Index Cond: (id = $1)
4845 -> Index Only Scan using t1_pkey on t1 t1_1
4846 Index Cond: (id = $1)
4849 SET from_collapse_limit TO 1;
4850 EXPLAIN (COSTS false)
4852 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
4855 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
4856 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4857 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
4858 ) 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 = (
4859 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
4862 --------------------------------------------------------------------
4864 InitPlan 1 (returns $0)
4867 Merge Cond: (t1_2.id = t3_2.id)
4869 Merge Cond: (t1_2.id = t2_2.id)
4870 -> Index Only Scan using t1_pkey on t1 t1_2
4871 -> Index Only Scan using t2_pkey on t2 t2_2
4874 -> Seq Scan on t3 t3_2
4875 InitPlan 2 (returns $1)
4878 Merge Cond: (t1_4.id = t3_4.id)
4880 Merge Cond: (t1_4.id = t2_4.id)
4881 -> Index Only Scan using t1_pkey on t1 t1_4
4882 -> Index Only Scan using t2_pkey on t2 t2_4
4885 -> Seq Scan on t3 t3_4
4889 -> Index Only Scan using t1_pkey on t1 t1_1
4890 Index Cond: (id = $1)
4891 -> Index Only Scan using t2_pkey on t2 t2_1
4892 Index Cond: (id = $1)
4893 -> Seq Scan on t3 t3_1
4897 -> Index Only Scan using t1_pkey on t1 t1_3
4898 Index Cond: (id = $1)
4899 -> Index Only Scan using t2_pkey on t2 t2_3
4900 Index Cond: (id = $1)
4901 -> Seq Scan on t3 t3_3
4904 Filter: (max(t1_5.id) = $1)
4906 Merge Cond: (t1_5.id = t3_5.id)
4908 Merge Cond: (t1_5.id = t2_5.id)
4909 -> Index Only Scan using t1_pkey on t1 t1_5
4910 -> Index Only Scan using t2_pkey on t2 t2_5
4913 -> Seq Scan on t3 t3_5
4916 /*+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)*/
4917 EXPLAIN (COSTS false)
4919 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
4922 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
4923 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4924 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
4925 ) 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 = (
4926 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
4932 MergeJoin(t1_3 t3_3)
4940 --------------------------------------------------------------------
4942 InitPlan 1 (returns $1)
4945 Merge Cond: (t1_2.id = t3_2.id)
4947 -> Index Only Scan using t2_pkey on t2 t2_2
4948 -> Index Only Scan using t1_pkey on t1 t1_2
4949 Index Cond: (id = t2_2.id)
4952 -> Seq Scan on t3 t3_2
4953 InitPlan 2 (returns $3)
4956 Merge Cond: (t1_4.id = t3_4.id)
4958 -> Index Only Scan using t2_pkey on t2 t2_4
4959 -> Index Only Scan using t1_pkey on t1 t1_4
4960 Index Cond: (id = t2_4.id)
4963 -> Seq Scan on t3 t3_4
4967 -> Index Only Scan using t1_pkey on t1 t1_1
4968 Index Cond: (id = $3)
4969 -> Index Only Scan using t2_pkey on t2 t2_1
4970 Index Cond: (id = $3)
4971 -> Seq Scan on t3 t3_1
4975 -> Index Only Scan using t1_pkey on t1 t1_3
4976 Index Cond: (id = $3)
4977 -> Index Only Scan using t2_pkey on t2 t2_3
4978 Index Cond: (id = $3)
4979 -> Seq Scan on t3 t3_3
4982 Filter: (max(t1_5.id) = $3)
4984 Merge Cond: (t1_5.id = t3_5.id)
4986 -> Index Only Scan using t2_pkey on t2 t2_5
4987 -> Index Only Scan using t1_pkey on t1 t1_5
4988 Index Cond: (id = t2_5.id)
4991 -> Seq Scan on t3 t3_5
4994 /*+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)*/
4995 EXPLAIN (COSTS false)
4997 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
5000 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
5001 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5002 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
5003 ) 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 = (
5004 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
5010 MergeJoin(t1_3 t3_3)
5014 Leading(a t1_1 t1_2 t1_4 t1_5)
5019 --------------------------------------------------------------------
5021 InitPlan 1 (returns $1)
5024 Merge Cond: (t1_2.id = t3_2.id)
5026 -> Index Only Scan using t2_pkey on t2 t2_2
5027 -> Index Only Scan using t1_pkey on t1 t1_2
5028 Index Cond: (id = t2_2.id)
5031 -> Seq Scan on t3 t3_2
5032 InitPlan 2 (returns $3)
5035 Merge Cond: (t1_4.id = t3_4.id)
5037 -> Index Only Scan using t2_pkey on t2 t2_4
5038 -> Index Only Scan using t1_pkey on t1 t1_4
5039 Index Cond: (id = t2_4.id)
5042 -> Seq Scan on t3 t3_4
5046 -> Index Only Scan using t1_pkey on t1 t1_1
5047 Index Cond: (id = $3)
5048 -> Index Only Scan using t2_pkey on t2 t2_1
5049 Index Cond: (id = $3)
5050 -> Seq Scan on t3 t3_1
5054 -> Index Only Scan using t1_pkey on t1 t1_3
5055 Index Cond: (id = $3)
5056 -> Index Only Scan using t2_pkey on t2 t2_3
5057 Index Cond: (id = $3)
5058 -> Seq Scan on t3 t3_3
5061 Filter: (max(t1_5.id) = $3)
5063 Merge Cond: (t1_5.id = t3_5.id)
5065 -> Index Only Scan using t2_pkey on t2 t2_5
5066 -> Index Only Scan using t1_pkey on t1 t1_5
5067 Index Cond: (id = t2_5.id)
5070 -> Seq Scan on t3 t3_5
5073 /*+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)*/
5074 EXPLAIN (COSTS false)
5076 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
5079 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
5080 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5081 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
5082 ) 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 = (
5083 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
5089 MergeJoin(t1_3 t3_3)
5093 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)
5098 --------------------------------------------------------------------
5100 InitPlan 1 (returns $1)
5103 Merge Cond: (t1_2.id = t3_2.id)
5105 -> Index Only Scan using t2_pkey on t2 t2_2
5106 -> Index Only Scan using t1_pkey on t1 t1_2
5107 Index Cond: (id = t2_2.id)
5110 -> Seq Scan on t3 t3_2
5111 InitPlan 2 (returns $3)
5114 Merge Cond: (t1_4.id = t3_4.id)
5116 -> Index Only Scan using t2_pkey on t2 t2_4
5117 -> Index Only Scan using t1_pkey on t1 t1_4
5118 Index Cond: (id = t2_4.id)
5121 -> Seq Scan on t3 t3_4
5125 -> Index Only Scan using t1_pkey on t1 t1_1
5126 Index Cond: (id = $3)
5127 -> Index Only Scan using t2_pkey on t2 t2_1
5128 Index Cond: (id = $3)
5129 -> Seq Scan on t3 t3_1
5133 -> Index Only Scan using t1_pkey on t1 t1_3
5134 Index Cond: (id = $3)
5135 -> Index Only Scan using t2_pkey on t2 t2_3
5136 Index Cond: (id = $3)
5137 -> Seq Scan on t3 t3_3
5140 Filter: (max(t1_5.id) = $3)
5142 Merge Cond: (t1_5.id = t3_5.id)
5144 -> Index Only Scan using t2_pkey on t2 t2_5
5145 -> Index Only Scan using t1_pkey on t1 t1_5
5146 Index Cond: (id = t2_5.id)
5149 -> Seq Scan on t3 t3_5
5152 /*+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)*/
5153 EXPLAIN (COSTS false)
5155 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
5158 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
5159 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5160 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
5161 ) 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 = (
5162 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
5166 MergeJoin(t1_3 t3_3)
5167 Leading(t3_5 t2_5 t1_5)
5168 Leading(t3_2 t2_2 t1_2)
5169 Leading(t3_4 t2_4 t1_4)
5170 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
5180 ------------------------------------------------------------------------------------
5182 InitPlan 1 (returns $0)
5185 Merge Cond: (t2_2.id = t1_2.id)
5187 Merge Cond: (t2_2.id = t3_2.id)
5188 -> Index Only Scan using t2_pkey on t2 t2_2
5191 -> Seq Scan on t3 t3_2
5192 -> Index Only Scan using t1_pkey on t1 t1_2
5193 InitPlan 2 (returns $1)
5196 Merge Cond: (t2_4.id = t1_4.id)
5198 Merge Cond: (t2_4.id = t3_4.id)
5199 -> Index Only Scan using t2_pkey on t2 t2_4
5202 -> Seq Scan on t3 t3_4
5203 -> Index Only Scan using t1_pkey on t1 t1_4
5209 -> Index Only Scan using t1_pkey on t1 t1_3
5210 Index Cond: (id = $1)
5211 -> Index Only Scan using t2_pkey on t2 t2_3
5212 Index Cond: (id = $1)
5213 -> Seq Scan on t3 t3_3
5216 Filter: (max(t1_5.id) = $1)
5218 Merge Cond: (t2_5.id = t1_5.id)
5220 Merge Cond: (t2_5.id = t3_5.id)
5221 -> Index Only Scan using t2_pkey on t2 t2_5
5224 -> Seq Scan on t3 t3_5
5225 -> Index Only Scan using t1_pkey on t1 t1_5
5226 -> Seq Scan on t3 t3_1
5228 -> Index Only Scan using t2_pkey on t2 t2_1
5229 Index Cond: (id = $1)
5230 -> Index Only Scan using t1_pkey on t1 t1_1
5231 Index Cond: (id = $1)
5235 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5237 -------------------------------------------------
5239 Merge Cond: (t1.id = t2.id)
5241 Merge Cond: (t1.id = t1_1.id)
5242 -> Index Scan using t1_pkey on t1
5243 -> Index Scan using t1_pkey on t1 t1_1
5244 -> Index Scan using t2_pkey on t2
5247 /*+NestLoop(t1 t2)*/
5248 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5249 INFO: pg_hint_plan: hint syntax error at or near "NestLoop(t1 t2)"
5250 DETAIL: Relation name "t1" is ambiguous.
5259 -------------------------------------------------
5261 Merge Cond: (t1.id = t2.id)
5263 Merge Cond: (t1.id = t1_1.id)
5264 -> Index Scan using t1_pkey on t1
5265 -> Index Scan using t1_pkey on t1 t1_1
5266 -> Index Scan using t2_pkey on t2
5269 /*+Leading(t1 t2 t1)*/
5270 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5271 INFO: pg_hint_plan: hint syntax error at or near "Leading(t1 t2 t1)"
5272 DETAIL: Relation name "t1" is ambiguous.
5281 -------------------------------------------------
5283 Merge Cond: (t1.id = t2.id)
5285 Merge Cond: (t1.id = t1_1.id)
5286 -> Index Scan using t1_pkey on t1
5287 -> Index Scan using t1_pkey on t1 t1_1
5288 -> Index Scan using t2_pkey on t2
5291 -- identifier length test
5292 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5294 --------------------------------------------------------------------------------------------------------------
5296 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5298 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id)
5299 -> Index Scan using t1_pkey on t1 "123456789012345678901234567890123456789012345678901234567890123"
5300 -> Index Scan using t2_pkey on t2
5307 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5308 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5309 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5310 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5312 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5313 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5316 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5317 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5318 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5322 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5325 ----------------------------------------------------------------------------------------------------
5327 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5329 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5330 -> Index Scan using t2_pkey on t2
5332 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5333 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5340 Leading(1234567890123456789012345678901234567890123456789012345678901234 t2 t3)
5341 SeqScan(1234567890123456789012345678901234567890123456789012345678901234)
5342 MergeJoin(1234567890123456789012345678901234567890123456789012345678901234 t2)
5343 Set(1234567890123456789012345678901234567890123456789012345678901234 1)
5344 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5346 EXPLAIN (COSTS false) SELECT * FROM t1 "1234567890123456789012345678901234567890123456789012345678901234" JOIN t2 ON ("1234567890123456789012345678901234567890123456789012345678901234".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5347 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5348 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5349 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5350 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5351 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5352 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5353 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5356 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5357 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5358 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5359 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5363 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5366 ----------------------------------------------------------------------------------------------------
5368 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5370 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5371 -> Index Scan using t2_pkey on t2
5373 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5374 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5380 SET "123456789012345678901234567890123456789012345678901234567890123" TO 1;
5381 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5382 SET "1234567890123456789012345678901234567890123456789012345678901234" TO 1;
5383 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5384 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5385 SET cursor_tuple_fraction TO 1234567890123456789012345678901234567890123456789012345678901234;
5386 ERROR: 1.23457e+63 is outside the valid range for parameter "cursor_tuple_fraction" (0 .. 1)
5388 /*+ Set(enable_seqscan 100)Set(seq_page_cost on)*/
5389 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
5390 INFO: parameter "enable_seqscan" requires a Boolean value
5391 INFO: parameter "seq_page_cost" requires a numeric value
5397 Set(enable_seqscan 100)
5398 Set(seq_page_cost on)
5401 --------------------------------------
5403 Merge Cond: (t1.id = t2.id)
5404 -> Index Scan using t1_pkey on t1
5405 -> Index Scan using t2_pkey on t2
5408 -- debug log of candidate index to use IndexScan
5409 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5411 ----------------------------------------------------------------------------------------
5412 Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
5413 Index Cond: (id = 1)
5416 /*+IndexScan(t5 t5_id2)*/
5417 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5418 LOG: available indexes for IndexScan(t5): t5_id2
5421 IndexScan(t5 t5_id2)
5427 -------------------------------
5428 Index Scan using t5_id2 on t5
5429 Index Cond: (id = 1)
5432 /*+IndexScan(t5 no_exist)*/
5433 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5434 LOG: available indexes for IndexScan(t5):
5437 IndexScan(t5 no_exist)
5443 --------------------
5448 /*+IndexScan(t5 t5_id1 t5_id2)*/
5449 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5450 LOG: available indexes for IndexScan(t5): t5_id2 t5_id1
5453 IndexScan(t5 t5_id1 t5_id2)
5459 -------------------------------
5460 Index Scan using t5_id2 on t5
5461 Index Cond: (id = 1)
5464 /*+IndexScan(t5 no_exist t5_id2)*/
5465 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5466 LOG: available indexes for IndexScan(t5): t5_id2
5469 IndexScan(t5 no_exist t5_id2)
5475 -------------------------------
5476 Index Scan using t5_id2 on t5
5477 Index Cond: (id = 1)
5480 /*+IndexScan(t5 no_exist5 no_exist2)*/
5481 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5482 LOG: available indexes for IndexScan(t5):
5485 IndexScan(t5 no_exist5 no_exist2)
5491 --------------------
5497 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5499 --------------------------------------------------------
5501 Hash Cond: (t3.val = t2.val)
5505 Hash Cond: (t2.id = t1.id)
5508 -> Index Scan using t1_pkey on t1
5509 Index Cond: (id < 10)
5513 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5514 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1))"
5515 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5524 --------------------------------------------------------
5526 Hash Cond: (t3.val = t2.val)
5530 Hash Cond: (t2.id = t1.id)
5533 -> Index Scan using t1_pkey on t1
5534 Index Cond: (id < 10)
5537 /*+Leading((t1 t2))*/
5538 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5547 --------------------------------------------
5549 Join Filter: (t2.val = t3.val)
5551 Hash Cond: (t1.id = t2.id)
5552 -> Index Scan using t1_pkey on t1
5553 Index Cond: (id < 10)
5559 /*+Leading((t1 t2 t3))*/
5560 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5561 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1 t2 t3))"
5562 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5571 --------------------------------------------------------
5573 Hash Cond: (t3.val = t2.val)
5577 Hash Cond: (t2.id = t1.id)
5580 -> Index Scan using t1_pkey on t1
5581 Index Cond: (id < 10)
5584 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5586 --------------------------------------------
5588 Hash Cond: (t2.id = t1.id)
5591 -> Index Scan using t1_pkey on t1
5592 Index Cond: (id < 10)
5595 /*+Leading((t1 t2))*/
5596 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5605 --------------------------------------
5607 Hash Cond: (t1.id = t2.id)
5608 -> Index Scan using t1_pkey on t1
5609 Index Cond: (id < 10)
5614 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5616 --------------------------------------------------------
5618 Hash Cond: (t3.val = t2.val)
5622 Hash Cond: (t2.id = t1.id)
5625 -> Index Scan using t1_pkey on t1
5626 Index Cond: (id < 10)
5629 /*+Leading(((t1 t2) t3))*/
5630 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5633 Leading(((t1 t2) t3))
5639 --------------------------------------------
5641 Join Filter: (t2.val = t3.val)
5643 Hash Cond: (t1.id = t2.id)
5644 -> Index Scan using t1_pkey on t1
5645 Index Cond: (id < 10)
5651 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;
5653 --------------------------------------------------------
5656 Merge Cond: (t3.id = t4.id)
5658 Join Filter: (t1.val = t3.val)
5659 -> Index Scan using t3_pkey on t3
5661 -> Index Scan using t1_pkey on t1
5662 Index Cond: (id < 10)
5666 -> Index Scan using t2_pkey on t2
5667 Index Cond: (id = t1.id)
5670 /*+Leading((((t1 t2) t3) t4))*/
5671 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;
5674 Leading((((t1 t2) t3) t4))
5680 --------------------------------------------------
5683 Join Filter: (t1.val = t3.val)
5685 Hash Cond: (t1.id = t2.id)
5686 -> Index Scan using t1_pkey on t1
5687 Index Cond: (id < 10)
5691 -> Index Scan using t4_pkey on t4
5692 Index Cond: (id = t3.id)
5695 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5697 --------------------------------------------------------
5699 Hash Cond: (t3.val = t2.val)
5703 Hash Cond: (t2.id = t1.id)
5706 -> Index Scan using t1_pkey on t1
5707 Index Cond: (id < 10)
5710 /*+Leading(((t1 t2) t3))*/
5711 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5714 Leading(((t1 t2) t3))
5720 --------------------------------------------
5722 Join Filter: (t2.val = t3.val)
5724 Hash Cond: (t1.id = t2.id)
5725 -> Index Scan using t1_pkey on t1
5726 Index Cond: (id < 10)
5732 /*+Leading((t1 (t2 t3)))*/
5733 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5736 Leading((t1 (t2 t3)))
5742 --------------------------------------------
5744 Hash Cond: (t1.id = t2.id)
5745 -> Index Scan using t1_pkey on t1
5746 Index Cond: (id < 10)
5749 Hash Cond: (t2.val = t3.val)
5755 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;
5757 --------------------------------------------------------
5760 Merge Cond: (t3.id = t4.id)
5762 Join Filter: (t1.val = t3.val)
5763 -> Index Scan using t3_pkey on t3
5765 -> Index Scan using t1_pkey on t1
5766 Index Cond: (id < 10)
5770 -> Index Scan using t2_pkey on t2
5771 Index Cond: (id = t1.id)
5774 /*+Leading(((t1 t2) (t3 t4)))*/
5775 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;
5778 Leading(((t1 t2) (t3 t4)))
5784 --------------------------------------------
5786 Join Filter: (t1.val = t3.val)
5788 Hash Cond: (t1.id = t2.id)
5789 -> Index Scan using t1_pkey on t1
5790 Index Cond: (id < 10)
5794 Merge Cond: (t3.id = t4.id)
5795 -> Index Scan using t3_pkey on t3
5801 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);
5803 --------------------------------------------------------------------
5805 Hash Cond: (t2.val = t3.val)
5806 InitPlan 1 (returns $1)
5811 -> Index Scan using t2_val on t2 t2_2
5812 Index Cond: (val > 100)
5813 -> Index Only Scan using t1_pkey on t1 t1_2
5814 Index Cond: (id = t2_2.id)
5816 Merge Cond: (t1.id = t2.id)
5817 -> Index Scan using t1_pkey on t1
5818 Index Cond: (id < $1)
5819 -> Index Scan using t2_pkey on t2
5824 /*+Leading(((t1 t2) t3)) Leading(((t3 t1) t2))*/
5825 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);
5826 INFO: pg_hint_plan: hint syntax error at or near "Leading(((t1 t2) t3)) Leading(((t3 t1) t2))"
5827 DETAIL: Conflict leading hint.
5830 Leading(((t3 t1) t2))
5833 Leading(((t1 t2) t3))
5837 --------------------------------------------------------------------
5839 Hash Cond: (t1.id = t2.id)
5840 InitPlan 1 (returns $1)
5845 -> Index Scan using t2_val on t2 t2_2
5846 Index Cond: (val > 100)
5847 -> Index Only Scan using t1_pkey on t1 t1_2
5848 Index Cond: (id = t2_2.id)
5850 Hash Cond: (t3.val = t1.val)
5853 -> Index Scan using t1_pkey on t1
5854 Index Cond: (id < $1)
5859 /*+Leading(((t1 t2) t3)) Leading((t1_2 t2_2))*/
5860 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);
5863 Leading(((t1 t2) t3))
5864 Leading((t1_2 t2_2))
5870 --------------------------------------------------------------
5872 Hash Cond: (t2.val = t3.val)
5873 InitPlan 1 (returns $0)
5876 Merge Cond: (t1_2.id = t2_2.id)
5877 -> Index Only Scan using t1_pkey on t1 t1_2
5880 -> Index Scan using t2_val on t2 t2_2
5881 Index Cond: (val > 100)
5883 Merge Cond: (t1.id = t2.id)
5884 -> Index Scan using t1_pkey on t1
5885 Index Cond: (id < $0)
5886 -> Index Scan using t2_pkey on t2
5891 /*+Leading(((((t1 t2) t3) t1_2) t2_2))*/
5892 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);
5896 Leading(((((t1 t2) t3) t1_2) t2_2))
5901 --------------------------------------------------------------------
5903 Hash Cond: (t2.val = t3.val)
5904 InitPlan 1 (returns $1)
5909 -> Index Scan using t2_val on t2 t2_2
5910 Index Cond: (val > 100)
5911 -> Index Only Scan using t1_pkey on t1 t1_2
5912 Index Cond: (id = t2_2.id)
5914 Merge Cond: (t1.id = t2.id)
5915 -> Index Scan using t1_pkey on t1
5916 Index Cond: (id < $1)
5917 -> Index Scan using t2_pkey on t2
5922 -- Specified outer/inner leading hint and join method hint at the same time
5923 /*+Leading(((t1 t2) t3))*/
5924 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5927 Leading(((t1 t2) t3))
5933 --------------------------------------------
5935 Join Filter: (t2.val = t3.val)
5937 Hash Cond: (t1.id = t2.id)
5938 -> Index Scan using t1_pkey on t1
5939 Index Cond: (id < 10)
5945 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2)*/
5946 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5950 Leading(((t1 t2) t3))
5956 --------------------------------------------
5958 Join Filter: (t2.val = t3.val)
5960 Merge Cond: (t1.id = t2.id)
5961 -> Index Scan using t1_pkey on t1
5962 Index Cond: (id < 10)
5963 -> Index Scan using t2_pkey on t2
5967 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3)*/
5968 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5972 Leading(((t1 t2) t3))
5978 --------------------------------------------------
5980 Merge Cond: (t2.val = t3.val)
5984 Hash Cond: (t1.id = t2.id)
5985 -> Index Scan using t1_pkey on t1
5986 Index Cond: (id < 10)
5994 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t3)*/
5995 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5998 Leading(((t1 t2) t3))
6005 --------------------------------------------
6007 Join Filter: (t2.val = t3.val)
6009 Hash Cond: (t1.id = t2.id)
6010 -> Index Scan using t1_pkey on t1
6011 Index Cond: (id < 10)
6017 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;
6019 --------------------------------------------------------
6022 Merge Cond: (t3.id = t4.id)
6024 Join Filter: (t1.val = t3.val)
6025 -> Index Scan using t3_pkey on t3
6027 -> Index Scan using t1_pkey on t1
6028 Index Cond: (id < 10)
6032 -> Index Scan using t2_pkey on t2
6033 Index Cond: (id = t1.id)
6036 /*+Leading(((t1 t2) t3)) MergeJoin(t3 t4)*/
6037 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;
6040 Leading(((t1 t2) t3))
6047 --------------------------------------------------
6049 Join Filter: (t3.id = t4.id)
6051 Join Filter: (t1.val = t3.val)
6053 Hash Cond: (t1.id = t2.id)
6054 -> Index Scan using t1_pkey on t1
6055 Index Cond: (id < 10)
6062 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3 t4)*/
6063 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t3.id = t4.id AND t1.val = t3.val AND t1.id < 10;
6066 MergeJoin(t1 t2 t3 t4)
6067 Leading(((t1 t2) t3))
6073 --------------------------------------------------------
6075 Merge Cond: (t3.id = t4.id)
6079 Join Filter: (t1.val = t3.val)
6081 Hash Cond: (t1.id = t2.id)
6082 -> Index Scan using t1_pkey on t1
6083 Index Cond: (id < 10)
6092 /*+ Leading ( ( t1 ( t2 t3 ) ) ) */
6093 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6096 Leading((t1 (t2 t3)))
6102 --------------------------------------------
6104 Hash Cond: (t1.id = t2.id)
6105 -> Index Scan using t1_pkey on t1
6106 Index Cond: (id < 10)
6109 Hash Cond: (t2.val = t3.val)
6115 /*+Leading((t1(t2 t3)))*/
6116 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6119 Leading((t1 (t2 t3)))
6125 --------------------------------------------
6127 Hash Cond: (t1.id = t2.id)
6128 -> Index Scan using t1_pkey on t1
6129 Index Cond: (id < 10)
6132 Hash Cond: (t2.val = t3.val)
6138 /*+Leading(("t1(t2" "t3)"))*/
6139 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6143 Leading(("t1(t2" "t3)"))
6148 --------------------------------------------------------
6150 Hash Cond: (t3.val = t2.val)
6154 Hash Cond: (t2.id = t1.id)
6157 -> Index Scan using t1_pkey on t1
6158 Index Cond: (id < 10)
6161 /*+ Leading ( ( ( t1 t2 ) t3 ) ) */
6162 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6165 Leading(((t1 t2) t3))
6171 --------------------------------------------
6173 Join Filter: (t2.val = t3.val)
6175 Hash Cond: (t1.id = t2.id)
6176 -> Index Scan using t1_pkey on t1
6177 Index Cond: (id < 10)
6183 /*+Leading(((t1 t2)t3))*/
6184 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6187 Leading(((t1 t2) t3))
6193 --------------------------------------------
6195 Join Filter: (t2.val = t3.val)
6197 Hash Cond: (t1.id = t2.id)
6198 -> Index Scan using t1_pkey on t1
6199 Index Cond: (id < 10)
6205 /*+Leading(("(t1" "t2)t3"))*/
6206 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6210 Leading(("(t1" "t2)t3"))
6215 --------------------------------------------------------
6217 Hash Cond: (t3.val = t2.val)
6221 Hash Cond: (t2.id = t1.id)
6224 -> Index Scan using t1_pkey on t1
6225 Index Cond: (id < 10)
6228 /*+Leading((t1(t2(t3(t4 t5)))))*/
6229 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;
6232 Leading((t1 (t2 (t3 (t4 t5)))))
6238 ----------------------------------------------------------------------------------------------------------------------------------
6240 Merge Cond: (t1.id = t2.id)
6241 -> Index Scan using t1_pkey on t1
6244 Merge Cond: (t2.id = t3.id)
6245 -> Index Scan using t2_pkey on t2
6248 Merge Cond: (t3.id = t4.id)
6249 -> Index Scan using t3_pkey on t3
6252 Merge Cond: (t4.id = t5.id)
6253 -> Index Scan using t4_pkey on t4
6254 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6257 /*+Leading((t5(t4(t3(t2 t1)))))*/
6258 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;
6261 Leading((t5 (t4 (t3 (t2 t1)))))
6267 --------------------------------------------------------------------------
6269 Hash Cond: (t5.id = t1.id)
6273 Merge Cond: (t4.id = t1.id)
6279 Merge Cond: (t3.id = t1.id)
6285 Merge Cond: (t2.id = t1.id)
6286 -> Index Scan using t2_pkey on t2
6287 -> Index Scan using t1_pkey on t1
6290 /*+Leading(((((t1 t2)t3)t4)t5))*/
6291 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;
6294 Leading(((((t1 t2) t3) t4) t5))
6300 ----------------------------------------------------------------------------------------------
6303 Merge Cond: (t1.id = t4.id)
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
6316 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6317 Index Cond: (id = t1.id)
6320 /*+Leading(((((t5 t4)t3)t2)t1))*/
6321 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;
6324 Leading(((((t5 t4) t3) t2) t1))
6330 ----------------------------------------------------------------------------------------------------------------
6332 Join Filter: (t2.id = t1.id)
6334 Join Filter: (t3.id = t2.id)
6336 Merge Cond: (t4.id = t3.id)
6338 Merge Cond: (t5.id = t4.id)
6339 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6343 -> Index Scan using t3_pkey on t3
6344 -> Index Scan using t2_pkey on t2
6345 Index Cond: (id = t5.id)
6346 -> Index Scan using t1_pkey on t1
6347 Index Cond: (id = t5.id)
6350 /*+Leading(((t1 t2)(t3(t4 t5))))*/
6351 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;
6354 Leading(((t1 t2) (t3 (t4 t5))))
6360 ----------------------------------------------------------------------------------------------------------------------
6362 Merge Cond: (t1.id = t3.id)
6364 Merge Cond: (t1.id = t2.id)
6365 -> Index Scan using t1_pkey on t1
6366 -> Index Scan using t2_pkey on t2
6369 Merge Cond: (t3.id = t4.id)
6370 -> Index Scan using t3_pkey on t3
6373 Merge Cond: (t4.id = t5.id)
6374 -> Index Scan using t4_pkey on t4
6375 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6378 /*+Leading(((t5 t4)(t3(t2 t1))))*/
6379 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;
6382 Leading(((t5 t4) (t3 (t2 t1))))
6388 ----------------------------------------------------------------------------------------------------
6390 Merge Cond: (t4.id = t1.id)
6392 Merge Cond: (t5.id = t4.id)
6393 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6399 Merge Cond: (t3.id = t1.id)
6405 Merge Cond: (t2.id = t1.id)
6406 -> Index Scan using t2_pkey on t2
6407 -> Index Scan using t1_pkey on t1
6410 /*+Leading((((t1 t2)t3)(t4 t5)))*/
6411 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;
6414 Leading((((t1 t2) t3) (t4 t5)))
6420 ----------------------------------------------------------------------------------------------------------
6422 Merge Cond: (t1.id = t4.id)
6424 Merge Cond: (t1.id = t3.id)
6426 Merge Cond: (t1.id = t2.id)
6427 -> Index Scan using t1_pkey on t1
6428 -> Index Scan using t2_pkey on t2
6434 Merge Cond: (t4.id = t5.id)
6435 -> Index Scan using t4_pkey on t4
6436 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6439 /*+Leading((((t5 t4)t3)(t2 t1)))*/
6440 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;
6443 Leading((((t5 t4) t3) (t2 t1)))
6449 ----------------------------------------------------------------------------------------------------------
6451 Merge Cond: (t3.id = t1.id)
6453 Merge Cond: (t4.id = t3.id)
6455 Merge Cond: (t5.id = t4.id)
6456 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6460 -> Index Scan using t3_pkey on t3
6463 Merge Cond: (t2.id = t1.id)
6464 -> Index Scan using t2_pkey on t2
6465 -> Index Scan using t1_pkey on t1
6468 -- inherite table test to specify the index's name
6469 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6471 -----------------------------------------------------------------------
6474 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6475 -> Seq Scan on p2_c1
6476 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6477 -> Seq Scan on p2_c1_c1
6478 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6479 -> Seq Scan on p2_c1_c2
6480 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6483 /*+IndexScan(p2 p2_pkey)*/
6484 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6485 LOG: available indexes for IndexScan(p2): p2_pkey
6486 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6487 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6488 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6491 IndexScan(p2 p2_pkey)
6497 --------------------------------------------------
6499 -> Index Scan using p2_pkey on p2
6500 Index Cond: ((id >= 50) AND (id <= 51))
6501 Filter: (ctid = '(1,1)'::tid)
6502 -> Index Scan using p2_c1_pkey on p2_c1
6503 Index Cond: ((id >= 50) AND (id <= 51))
6504 Filter: (ctid = '(1,1)'::tid)
6505 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6506 Index Cond: ((id >= 50) AND (id <= 51))
6507 Filter: (ctid = '(1,1)'::tid)
6508 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6509 Index Cond: ((id >= 50) AND (id <= 51))
6510 Filter: (ctid = '(1,1)'::tid)
6513 /*+IndexScan(p2 p2_id_val_idx)*/
6514 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6515 LOG: available indexes for IndexScan(p2): p2_id_val_idx
6516 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6517 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
6518 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
6521 IndexScan(p2 p2_id_val_idx)
6527 --------------------------------------------------------
6529 -> Index Scan using p2_id_val_idx on p2
6530 Index Cond: ((id >= 50) AND (id <= 51))
6531 Filter: (ctid = '(1,1)'::tid)
6532 -> Index Scan using p2_c1_id_val_idx on p2_c1
6533 Index Cond: ((id >= 50) AND (id <= 51))
6534 Filter: (ctid = '(1,1)'::tid)
6535 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
6536 Index Cond: ((id >= 50) AND (id <= 51))
6537 Filter: (ctid = '(1,1)'::tid)
6538 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
6539 Index Cond: ((id >= 50) AND (id <= 51))
6540 Filter: (ctid = '(1,1)'::tid)
6543 /*+IndexScan(p2 p2_val_id_idx)*/
6544 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6545 LOG: available indexes for IndexScan(p2): p2_val_id_idx
6546 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_id_idx
6547 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_id_idx
6548 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_id_idx
6551 IndexScan(p2 p2_val_id_idx)
6557 --------------------------------------------------------
6559 -> Index Scan using p2_val_id_idx on p2
6560 Index Cond: ((id >= 50) AND (id <= 51))
6561 Filter: (ctid = '(1,1)'::tid)
6562 -> Index Scan using p2_c1_val_id_idx on p2_c1
6563 Index Cond: ((id >= 50) AND (id <= 51))
6564 Filter: (ctid = '(1,1)'::tid)
6565 -> Index Scan using p2_c1_c1_val_id_idx on p2_c1_c1
6566 Index Cond: ((id >= 50) AND (id <= 51))
6567 Filter: (ctid = '(1,1)'::tid)
6568 -> Index Scan using p2_c1_c2_val_id_idx on p2_c1_c2
6569 Index Cond: ((id >= 50) AND (id <= 51))
6570 Filter: (ctid = '(1,1)'::tid)
6573 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6575 -----------------------------------------------------------------------------------------
6578 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6579 -> Seq Scan on p2_c1
6580 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6581 -> Seq Scan on p2_c2
6582 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6583 -> Seq Scan on p2_c3
6584 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6585 -> Seq Scan on p2_c4
6586 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6587 -> Seq Scan on p2_c1_c1
6588 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6589 -> Seq Scan on p2_c1_c2
6590 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6591 -> Seq Scan on p2_c3_c1
6592 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6593 -> Seq Scan on p2_c3_c2
6594 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6597 -- Inhibit parallel exection to avoid interfaring the hint
6598 set max_parallel_workers_per_gather to 0;
6599 /*+ IndexScan(p2 p2_val)*/
6600 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6601 LOG: available indexes for IndexScan(p2):
6602 LOG: available indexes for IndexScan(p2_c1):
6603 LOG: available indexes for IndexScan(p2_c2):
6604 LOG: available indexes for IndexScan(p2_c3):
6605 LOG: available indexes for IndexScan(p2_c4):
6606 LOG: available indexes for IndexScan(p2_c1_c1):
6607 LOG: available indexes for IndexScan(p2_c1_c2):
6608 LOG: available indexes for IndexScan(p2_c3_c1):
6609 LOG: available indexes for IndexScan(p2_c3_c2):
6612 IndexScan(p2 p2_val)
6618 -----------------------------------------------------------------------------------------
6621 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6622 -> Seq Scan on p2_c1
6623 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6624 -> Seq Scan on p2_c2
6625 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6626 -> Seq Scan on p2_c3
6627 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6628 -> Seq Scan on p2_c4
6629 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6630 -> Seq Scan on p2_c1_c1
6631 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6632 -> Seq Scan on p2_c1_c2
6633 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6634 -> Seq Scan on p2_c3_c1
6635 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6636 -> Seq Scan on p2_c3_c2
6637 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6640 /*+IndexScan(p2 p2_pkey)*/
6641 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6642 LOG: available indexes for IndexScan(p2): p2_pkey
6643 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6644 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6645 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6648 IndexScan(p2 p2_pkey)
6654 --------------------------------------------------
6656 -> Index Scan using p2_pkey on p2
6657 Index Cond: ((id >= 50) AND (id <= 51))
6658 Filter: (ctid = '(1,1)'::tid)
6659 -> Index Scan using p2_c1_pkey on p2_c1
6660 Index Cond: ((id >= 50) AND (id <= 51))
6661 Filter: (ctid = '(1,1)'::tid)
6662 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6663 Index Cond: ((id >= 50) AND (id <= 51))
6664 Filter: (ctid = '(1,1)'::tid)
6665 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6666 Index Cond: ((id >= 50) AND (id <= 51))
6667 Filter: (ctid = '(1,1)'::tid)
6670 /*+IndexScan(p2 p2_id2_val)*/
6671 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6672 LOG: available indexes for IndexScan(p2): p2_id2_val
6673 LOG: available indexes for IndexScan(p2_c1): p2_c1_id2_val
6674 LOG: available indexes for IndexScan(p2_c1_c1):
6675 LOG: available indexes for IndexScan(p2_c1_c2):
6678 IndexScan(p2 p2_id2_val)
6684 -----------------------------------------------------------------------
6686 -> Index Scan using p2_id2_val on p2
6687 Index Cond: ((id >= 50) AND (id <= 51))
6688 Filter: (ctid = '(1,1)'::tid)
6689 -> Index Scan using p2_c1_id2_val on p2_c1
6690 Index Cond: ((id >= 50) AND (id <= 51))
6691 Filter: (ctid = '(1,1)'::tid)
6692 -> Seq Scan on p2_c1_c1
6693 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6694 -> Seq Scan on p2_c1_c2
6695 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6698 /*+IndexScan(p2 p2_val2_id)*/
6699 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6700 LOG: available indexes for IndexScan(p2): p2_val2_id
6701 LOG: available indexes for IndexScan(p2_c1):
6702 LOG: available indexes for IndexScan(p2_c1_c1):
6703 LOG: available indexes for IndexScan(p2_c1_c2):
6706 IndexScan(p2 p2_val2_id)
6712 -----------------------------------------------------------------------
6714 -> Index Scan using p2_val2_id on p2
6715 Index Cond: ((id >= 50) AND (id <= 51))
6716 Filter: (ctid = '(1,1)'::tid)
6717 -> Seq Scan on p2_c1
6718 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6719 -> Seq Scan on p2_c1_c1
6720 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6721 -> Seq Scan on p2_c1_c2
6722 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6725 /*+IndexScan(p2 p2_pkey)*/
6726 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6727 LOG: available indexes for IndexScan(p2): p2_pkey
6728 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6729 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6730 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6733 IndexScan(p2 p2_pkey)
6739 --------------------------------------------------
6741 -> Index Scan using p2_pkey on p2
6742 Index Cond: ((id >= 50) AND (id <= 51))
6743 Filter: (ctid = '(1,1)'::tid)
6744 -> Index Scan using p2_c1_pkey on p2_c1
6745 Index Cond: ((id >= 50) AND (id <= 51))
6746 Filter: (ctid = '(1,1)'::tid)
6747 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6748 Index Cond: ((id >= 50) AND (id <= 51))
6749 Filter: (ctid = '(1,1)'::tid)
6750 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6751 Index Cond: ((id >= 50) AND (id <= 51))
6752 Filter: (ctid = '(1,1)'::tid)
6755 /*+IndexScan(p2 p2_c1_id_val_idx)*/
6756 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6757 LOG: available indexes for IndexScan(p2):
6758 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6759 LOG: available indexes for IndexScan(p2_c1_c1):
6760 LOG: available indexes for IndexScan(p2_c1_c2):
6763 IndexScan(p2 p2_c1_id_val_idx)
6769 -----------------------------------------------------------------------
6772 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6773 -> Index Scan using p2_c1_id_val_idx on p2_c1
6774 Index Cond: ((id >= 50) AND (id <= 51))
6775 Filter: (ctid = '(1,1)'::tid)
6776 -> Seq Scan on p2_c1_c1
6777 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6778 -> Seq Scan on p2_c1_c2
6779 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6782 /*+IndexScan(p2 no_exist)*/
6783 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6784 LOG: available indexes for IndexScan(p2):
6785 LOG: available indexes for IndexScan(p2_c1):
6786 LOG: available indexes for IndexScan(p2_c1_c1):
6787 LOG: available indexes for IndexScan(p2_c1_c2):
6790 IndexScan(p2 no_exist)
6796 -----------------------------------------------------------------------
6799 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6800 -> Seq Scan on p2_c1
6801 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6802 -> Seq Scan on p2_c1_c1
6803 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6804 -> Seq Scan on p2_c1_c2
6805 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6808 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx)*/
6809 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6810 LOG: available indexes for IndexScan(p2): p2_pkey
6811 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6812 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6813 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6816 IndexScan(p2 p2_pkey p2_c1_id_val_idx)
6822 --------------------------------------------------
6824 -> Index Scan using p2_pkey on p2
6825 Index Cond: ((id >= 50) AND (id <= 51))
6826 Filter: (ctid = '(1,1)'::tid)
6827 -> Index Scan using p2_c1_id_val_idx on p2_c1
6828 Index Cond: ((id >= 50) AND (id <= 51))
6829 Filter: (ctid = '(1,1)'::tid)
6830 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6831 Index Cond: ((id >= 50) AND (id <= 51))
6832 Filter: (ctid = '(1,1)'::tid)
6833 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6834 Index Cond: ((id >= 50) AND (id <= 51))
6835 Filter: (ctid = '(1,1)'::tid)
6838 /*+IndexScan(p2 p2_pkey no_exist)*/
6839 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6840 LOG: available indexes for IndexScan(p2): p2_pkey
6841 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6842 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6843 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6846 IndexScan(p2 p2_pkey no_exist)
6852 --------------------------------------------------
6854 -> Index Scan using p2_pkey on p2
6855 Index Cond: ((id >= 50) AND (id <= 51))
6856 Filter: (ctid = '(1,1)'::tid)
6857 -> Index Scan using p2_c1_pkey on p2_c1
6858 Index Cond: ((id >= 50) AND (id <= 51))
6859 Filter: (ctid = '(1,1)'::tid)
6860 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6861 Index Cond: ((id >= 50) AND (id <= 51))
6862 Filter: (ctid = '(1,1)'::tid)
6863 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6864 Index Cond: ((id >= 50) AND (id <= 51))
6865 Filter: (ctid = '(1,1)'::tid)
6868 /*+IndexScan(p2 p2_c1_id_val_idx no_exist)*/
6869 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6870 LOG: available indexes for IndexScan(p2):
6871 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6872 LOG: available indexes for IndexScan(p2_c1_c1):
6873 LOG: available indexes for IndexScan(p2_c1_c2):
6876 IndexScan(p2 p2_c1_id_val_idx no_exist)
6882 -----------------------------------------------------------------------
6885 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6886 -> Index Scan using p2_c1_id_val_idx on p2_c1
6887 Index Cond: ((id >= 50) AND (id <= 51))
6888 Filter: (ctid = '(1,1)'::tid)
6889 -> Seq Scan on p2_c1_c1
6890 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6891 -> Seq Scan on p2_c1_c2
6892 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6895 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)*/
6896 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6897 LOG: available indexes for IndexScan(p2): p2_pkey
6898 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6899 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6900 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6903 IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)
6909 --------------------------------------------------
6911 -> Index Scan using p2_pkey on p2
6912 Index Cond: ((id >= 50) AND (id <= 51))
6913 Filter: (ctid = '(1,1)'::tid)
6914 -> Index Scan using p2_c1_id_val_idx on p2_c1
6915 Index Cond: ((id >= 50) AND (id <= 51))
6916 Filter: (ctid = '(1,1)'::tid)
6917 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1
6918 Index Cond: ((id >= 50) AND (id <= 51))
6919 Filter: (ctid = '(1,1)'::tid)
6920 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2
6921 Index Cond: ((id >= 50) AND (id <= 51))
6922 Filter: (ctid = '(1,1)'::tid)
6925 /*+IndexScan(p2 p2_val_idx)*/
6926 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6927 LOG: available indexes for IndexScan(p2): p2_val_idx
6928 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx
6929 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx
6930 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx
6931 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx
6932 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx
6933 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx
6934 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx
6935 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx
6938 IndexScan(p2 p2_val_idx)
6944 -------------------------------------------------------------------
6946 -> Index Scan using p2_val_idx on p2
6947 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6948 Filter: (ctid = '(1,1)'::tid)
6949 -> Index Scan using p2_c1_val_idx on p2_c1
6950 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6951 Filter: (ctid = '(1,1)'::tid)
6952 -> Index Scan using p2_c2_val_idx on p2_c2
6953 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6954 Filter: (ctid = '(1,1)'::tid)
6955 -> Index Scan using p2_c3_val_idx on p2_c3
6956 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6957 Filter: (ctid = '(1,1)'::tid)
6958 -> Index Scan using p2_c4_val_idx on p2_c4
6959 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6960 Filter: (ctid = '(1,1)'::tid)
6961 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
6962 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6963 Filter: (ctid = '(1,1)'::tid)
6964 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
6965 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6966 Filter: (ctid = '(1,1)'::tid)
6967 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
6968 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6969 Filter: (ctid = '(1,1)'::tid)
6970 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
6971 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
6972 Filter: (ctid = '(1,1)'::tid)
6975 /*+IndexScan(p2 p2_expr)*/
6976 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6977 LOG: available indexes for IndexScan(p2): p2_expr
6978 LOG: available indexes for IndexScan(p2_c1): p2_c1_expr_idx
6979 LOG: available indexes for IndexScan(p2_c2): p2_c2_expr_idx
6980 LOG: available indexes for IndexScan(p2_c3): p2_c3_expr_idx
6981 LOG: available indexes for IndexScan(p2_c4): p2_c4_expr_idx
6982 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_expr_idx
6983 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_expr_idx
6984 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_expr_idx
6985 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_expr_idx
6988 IndexScan(p2 p2_expr)
6994 -----------------------------------------------------------------------------------------
6997 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6998 -> Seq Scan on p2_c1
6999 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7000 -> Seq Scan on p2_c2
7001 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7002 -> Seq Scan on p2_c3
7003 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7004 -> Seq Scan on p2_c4
7005 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7006 -> Seq Scan on p2_c1_c1
7007 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7008 -> Seq Scan on p2_c1_c2
7009 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7010 -> Seq Scan on p2_c3_c1
7011 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7012 -> Seq Scan on p2_c3_c2
7013 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7016 /*+IndexScan(p2 p2_val_idx6)*/
7017 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7018 LOG: available indexes for IndexScan(p2): p2_val_idx6
7019 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx6
7020 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx6
7021 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx6
7022 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx6
7023 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx6
7024 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx6
7025 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx6
7026 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx6
7029 IndexScan(p2 p2_val_idx6)
7035 -----------------------------------------------------------------------------------------
7038 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7039 -> Seq Scan on p2_c1
7040 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7041 -> Seq Scan on p2_c2
7042 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7043 -> Seq Scan on p2_c3
7044 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7045 -> Seq Scan on p2_c4
7046 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7047 -> Seq Scan on p2_c1_c1
7048 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7049 -> Seq Scan on p2_c1_c2
7050 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7051 -> Seq Scan on p2_c3_c1
7052 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7053 -> Seq Scan on p2_c3_c2
7054 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7057 /*+IndexScan(p2 p2_val_idx p2_val_idx6)*/
7058 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7059 LOG: available indexes for IndexScan(p2): p2_val_idx6 p2_val_idx
7060 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx6 p2_c1_val_idx
7061 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx6 p2_c2_val_idx
7062 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx6 p2_c3_val_idx
7063 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx6 p2_c4_val_idx
7064 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx6 p2_c1_c1_val_idx
7065 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx6 p2_c1_c2_val_idx
7066 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx6 p2_c3_c1_val_idx
7067 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx6 p2_c3_c2_val_idx
7070 IndexScan(p2 p2_val_idx p2_val_idx6)
7076 -------------------------------------------------------------------
7078 -> Index Scan using p2_val_idx on p2
7079 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7080 Filter: (ctid = '(1,1)'::tid)
7081 -> Index Scan using p2_c1_val_idx on p2_c1
7082 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7083 Filter: (ctid = '(1,1)'::tid)
7084 -> Index Scan using p2_c2_val_idx on p2_c2
7085 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7086 Filter: (ctid = '(1,1)'::tid)
7087 -> Index Scan using p2_c3_val_idx on p2_c3
7088 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7089 Filter: (ctid = '(1,1)'::tid)
7090 -> Index Scan using p2_c4_val_idx on p2_c4
7091 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7092 Filter: (ctid = '(1,1)'::tid)
7093 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1
7094 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7095 Filter: (ctid = '(1,1)'::tid)
7096 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2
7097 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7098 Filter: (ctid = '(1,1)'::tid)
7099 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1
7100 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7101 Filter: (ctid = '(1,1)'::tid)
7102 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2
7103 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7104 Filter: (ctid = '(1,1)'::tid)
7107 -- regular expression
7109 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7111 ---------------------------------------------------------------------------------------------
7112 Index Only Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
7113 Index Cond: (id = 1)
7116 /*+ IndexScanRegexp(t5 t5_[^i].*)*/
7117 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7118 LOG: available indexes for IndexScanRegexp(t5): t5_val t5_pkey
7121 IndexScanRegexp(t5 t5_[^i].*)
7127 --------------------------------
7128 Index Scan using t5_pkey on t5
7129 Index Cond: (id = 1)
7132 /*+ IndexScanRegexp(t5 t5_id[0-9].*)*/
7133 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7134 LOG: available indexes for IndexScanRegexp(t5): t5_id3 t5_id2 t5_id1
7137 IndexScanRegexp(t5 t5_id[0-9].*)
7143 -------------------------------
7144 Index Scan using t5_id3 on t5
7145 Index Cond: (id = 1)
7148 /*+ IndexScanRegexp(t5 t5[^_].*)*/
7149 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7150 LOG: available indexes for IndexScanRegexp(t5):
7153 IndexScanRegexp(t5 t5[^_].*)
7159 --------------------
7164 /*+ IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7165 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7166 LOG: available indexes for IndexScanRegexp(t5):
7169 IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7175 --------------------
7180 /*+ IndexScan(t5 t5_id[0-9].*)*/
7181 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7182 LOG: available indexes for IndexScan(t5):
7185 IndexScan(t5 t5_id[0-9].*)
7191 --------------------
7196 /*+ IndexOnlyScanRegexp(t5 t5_[^i].*)*/
7197 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7198 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_val t5_pkey
7201 IndexOnlyScanRegexp(t5 t5_[^i].*)
7207 -------------------------------------
7208 Index Only Scan using t5_pkey on t5
7209 Index Cond: (id = 1)
7212 /*+ IndexOnlyScanRegexp(t5 t5_id[0-9].*)*/
7213 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7214 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_id3 t5_id2 t5_id1
7217 IndexOnlyScanRegexp(t5 t5_id[0-9].*)
7223 ------------------------------------
7224 Index Only Scan using t5_id3 on t5
7225 Index Cond: (id = 1)
7228 /*+ IndexOnlyScanRegexp(t5 t5[^_].*)*/
7229 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7230 LOG: available indexes for IndexOnlyScanRegexp(t5):
7233 IndexOnlyScanRegexp(t5 t5[^_].*)
7239 --------------------
7244 /*+ IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7245 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7246 LOG: available indexes for IndexOnlyScanRegexp(t5):
7249 IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7255 --------------------
7260 /*+ IndexOnlyScan(t5 t5_id[0-9].*)*/
7261 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7262 LOG: available indexes for IndexOnlyScan(t5):
7265 IndexOnlyScan(t5 t5_id[0-9].*)
7271 --------------------
7276 /*+ BitmapScanRegexp(t5 t5_[^i].*)*/
7277 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7278 LOG: available indexes for BitmapScanRegexp(t5): t5_val t5_pkey
7281 BitmapScanRegexp(t5 t5_[^i].*)
7287 ------------------------------------
7288 Bitmap Heap Scan on t5
7289 Recheck Cond: (id = 1)
7290 -> Bitmap Index Scan on t5_pkey
7291 Index Cond: (id = 1)
7294 /*+ BitmapScanRegexp(t5 t5_id[0-9].*)*/
7295 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7296 LOG: available indexes for BitmapScanRegexp(t5): t5_id3 t5_id2 t5_id1
7299 BitmapScanRegexp(t5 t5_id[0-9].*)
7305 -----------------------------------
7306 Bitmap Heap Scan on t5
7307 Recheck Cond: (id = 1)
7308 -> Bitmap Index Scan on t5_id3
7309 Index Cond: (id = 1)
7312 /*+ BitmapScanRegexp(t5 t5[^_].*)*/
7313 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7314 LOG: available indexes for BitmapScanRegexp(t5):
7317 BitmapScanRegexp(t5 t5[^_].*)
7323 --------------------
7328 /*+ BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7329 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7330 LOG: available indexes for BitmapScanRegexp(t5):
7333 BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7339 --------------------
7344 /*+ BitmapScan(t5 t5_id[0-9].*)*/
7345 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7346 LOG: available indexes for BitmapScan(t5):
7349 BitmapScan(t5 t5_id[0-9].*)
7355 --------------------
7361 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7363 ----------------------------
7367 -> Seq Scan on p1_c1
7369 -> Seq Scan on p1_c2
7371 -> Seq Scan on p1_c3
7373 -> Seq Scan on p1_c4
7375 -> Seq Scan on p1_c1_c1
7377 -> Seq Scan on p1_c1_c2
7379 -> Seq Scan on p1_c3_c1
7381 -> Seq Scan on p1_c3_c2
7385 /*+ IndexScanRegexp(p1 p1_.*[^0-9]$)*/
7386 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7387 LOG: available indexes for IndexScanRegexp(p1): p1_pkey
7388 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_pkey
7389 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_pkey
7390 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_pkey
7391 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_pkey
7392 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7393 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7394 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7395 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7398 IndexScanRegexp(p1 p1_.*[^0-9]$)
7404 ----------------------------
7408 -> Seq Scan on p1_c1
7410 -> Seq Scan on p1_c2
7412 -> Seq Scan on p1_c3
7414 -> Seq Scan on p1_c4
7416 -> Seq Scan on p1_c1_c1
7418 -> Seq Scan on p1_c1_c2
7420 -> Seq Scan on p1_c3_c1
7422 -> Seq Scan on p1_c3_c2
7426 /*+ IndexScanRegexp(p1 p1_.*val2.*)*/
7427 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7428 LOG: available indexes for IndexScanRegexp(p1): p1_val2
7429 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_val2
7430 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_val2
7431 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_val2
7432 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_val2
7433 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_val2
7434 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_val2
7435 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_val2
7436 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_val2
7439 IndexScanRegexp(p1 p1_.*val2.*)
7445 --------------------------------------------------
7447 -> Index Scan using p1_val2 on p1
7448 Index Cond: (val = 1)
7449 -> Index Scan using p1_c1_val2 on p1_c1
7450 Index Cond: (val = 1)
7451 -> Index Scan using p1_c2_val2 on p1_c2
7452 Index Cond: (val = 1)
7453 -> Index Scan using p1_c3_val2 on p1_c3
7454 Index Cond: (val = 1)
7455 -> Index Scan using p1_c4_val2 on p1_c4
7456 Index Cond: (val = 1)
7457 -> Index Scan using p1_c1_c1_val2 on p1_c1_c1
7458 Index Cond: (val = 1)
7459 -> Index Scan using p1_c1_c2_val2 on p1_c1_c2
7460 Index Cond: (val = 1)
7461 -> Index Scan using p1_c3_c1_val2 on p1_c3_c1
7462 Index Cond: (val = 1)
7463 -> Index Scan using p1_c3_c2_val2 on p1_c3_c2
7464 Index Cond: (val = 1)
7467 /*+ IndexScanRegexp(p1 p1[^_].*)*/
7468 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7469 LOG: available indexes for IndexScanRegexp(p1):
7470 LOG: available indexes for IndexScanRegexp(p1_c1):
7471 LOG: available indexes for IndexScanRegexp(p1_c2):
7472 LOG: available indexes for IndexScanRegexp(p1_c3):
7473 LOG: available indexes for IndexScanRegexp(p1_c4):
7474 LOG: available indexes for IndexScanRegexp(p1_c1_c1):
7475 LOG: available indexes for IndexScanRegexp(p1_c1_c2):
7476 LOG: available indexes for IndexScanRegexp(p1_c3_c1):
7477 LOG: available indexes for IndexScanRegexp(p1_c3_c2):
7480 IndexScanRegexp(p1 p1[^_].*)
7486 ----------------------------
7490 -> Seq Scan on p1_c1
7492 -> Seq Scan on p1_c2
7494 -> Seq Scan on p1_c3
7496 -> Seq Scan on p1_c4
7498 -> Seq Scan on p1_c1_c1
7500 -> Seq Scan on p1_c1_c2
7502 -> Seq Scan on p1_c3_c1
7504 -> Seq Scan on p1_c3_c2
7508 /*+ IndexScan(p1 p1_.*val2.*)*/
7509 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7510 LOG: available indexes for IndexScan(p1):
7511 LOG: available indexes for IndexScan(p1_c1):
7512 LOG: available indexes for IndexScan(p1_c2):
7513 LOG: available indexes for IndexScan(p1_c3):
7514 LOG: available indexes for IndexScan(p1_c4):
7515 LOG: available indexes for IndexScan(p1_c1_c1):
7516 LOG: available indexes for IndexScan(p1_c1_c2):
7517 LOG: available indexes for IndexScan(p1_c3_c1):
7518 LOG: available indexes for IndexScan(p1_c3_c2):
7521 IndexScan(p1 p1_.*val2.*)
7527 ----------------------------
7531 -> Seq Scan on p1_c1
7533 -> Seq Scan on p1_c2
7535 -> Seq Scan on p1_c3
7537 -> Seq Scan on p1_c4
7539 -> Seq Scan on p1_c1_c1
7541 -> Seq Scan on p1_c1_c2
7543 -> Seq Scan on p1_c3_c1
7545 -> Seq Scan on p1_c3_c2
7549 /*+ IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)*/
7550 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7551 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_pkey
7552 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_pkey
7553 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_pkey
7554 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_pkey
7555 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_pkey
7556 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7557 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7558 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7559 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7562 IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)
7568 ----------------------------
7572 -> Seq Scan on p1_c1
7574 -> Seq Scan on p1_c2
7576 -> Seq Scan on p1_c3
7578 -> Seq Scan on p1_c4
7580 -> Seq Scan on p1_c1_c1
7582 -> Seq Scan on p1_c1_c2
7584 -> Seq Scan on p1_c3_c1
7586 -> Seq Scan on p1_c3_c2
7590 /*+ IndexOnlyScanRegexp(p1 p1_.*val2.*)*/
7591 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7592 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_val2
7593 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_val2
7594 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_val2
7595 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_val2
7596 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_val2
7597 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_val2
7598 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_val2
7599 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_val2
7600 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_val2
7603 IndexOnlyScanRegexp(p1 p1_.*val2.*)
7609 -------------------------------------------------------
7611 -> Index Only Scan using p1_val2 on p1
7612 Index Cond: (val = 1)
7613 -> Index Only Scan using p1_c1_val2 on p1_c1
7614 Index Cond: (val = 1)
7615 -> Index Only Scan using p1_c2_val2 on p1_c2
7616 Index Cond: (val = 1)
7617 -> Index Only Scan using p1_c3_val2 on p1_c3
7618 Index Cond: (val = 1)
7619 -> Index Only Scan using p1_c4_val2 on p1_c4
7620 Index Cond: (val = 1)
7621 -> Index Only Scan using p1_c1_c1_val2 on p1_c1_c1
7622 Index Cond: (val = 1)
7623 -> Index Only Scan using p1_c1_c2_val2 on p1_c1_c2
7624 Index Cond: (val = 1)
7625 -> Index Only Scan using p1_c3_c1_val2 on p1_c3_c1
7626 Index Cond: (val = 1)
7627 -> Index Only Scan using p1_c3_c2_val2 on p1_c3_c2
7628 Index Cond: (val = 1)
7631 /*+ IndexOnlyScanRegexp(p1 p1[^_].*)*/
7632 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7633 LOG: available indexes for IndexOnlyScanRegexp(p1):
7634 LOG: available indexes for IndexOnlyScanRegexp(p1_c1):
7635 LOG: available indexes for IndexOnlyScanRegexp(p1_c2):
7636 LOG: available indexes for IndexOnlyScanRegexp(p1_c3):
7637 LOG: available indexes for IndexOnlyScanRegexp(p1_c4):
7638 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1):
7639 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2):
7640 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1):
7641 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2):
7644 IndexOnlyScanRegexp(p1 p1[^_].*)
7650 ----------------------------
7654 -> Seq Scan on p1_c1
7656 -> Seq Scan on p1_c2
7658 -> Seq Scan on p1_c3
7660 -> Seq Scan on p1_c4
7662 -> Seq Scan on p1_c1_c1
7664 -> Seq Scan on p1_c1_c2
7666 -> Seq Scan on p1_c3_c1
7668 -> Seq Scan on p1_c3_c2
7672 /*+ IndexOnlyScan(p1 p1_.*val2.*)*/
7673 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7674 LOG: available indexes for IndexOnlyScan(p1):
7675 LOG: available indexes for IndexOnlyScan(p1_c1):
7676 LOG: available indexes for IndexOnlyScan(p1_c2):
7677 LOG: available indexes for IndexOnlyScan(p1_c3):
7678 LOG: available indexes for IndexOnlyScan(p1_c4):
7679 LOG: available indexes for IndexOnlyScan(p1_c1_c1):
7680 LOG: available indexes for IndexOnlyScan(p1_c1_c2):
7681 LOG: available indexes for IndexOnlyScan(p1_c3_c1):
7682 LOG: available indexes for IndexOnlyScan(p1_c3_c2):
7685 IndexOnlyScan(p1 p1_.*val2.*)
7691 ----------------------------
7695 -> Seq Scan on p1_c1
7697 -> Seq Scan on p1_c2
7699 -> Seq Scan on p1_c3
7701 -> Seq Scan on p1_c4
7703 -> Seq Scan on p1_c1_c1
7705 -> Seq Scan on p1_c1_c2
7707 -> Seq Scan on p1_c3_c1
7709 -> Seq Scan on p1_c3_c2
7713 /*+ BitmapScanRegexp(p1 p1_.*[^0-9]$)*/
7714 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7715 LOG: available indexes for BitmapScanRegexp(p1): p1_pkey
7716 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_pkey
7717 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_pkey
7718 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_pkey
7719 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_pkey
7720 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7721 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7722 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7723 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7726 BitmapScanRegexp(p1 p1_.*[^0-9]$)
7732 ----------------------------
7736 -> Seq Scan on p1_c1
7738 -> Seq Scan on p1_c2
7740 -> Seq Scan on p1_c3
7742 -> Seq Scan on p1_c4
7744 -> Seq Scan on p1_c1_c1
7746 -> Seq Scan on p1_c1_c2
7748 -> Seq Scan on p1_c3_c1
7750 -> Seq Scan on p1_c3_c2
7754 /*+ BitmapScanRegexp(p1 p1_.*val2.*)*/
7755 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7756 LOG: available indexes for BitmapScanRegexp(p1): p1_val2
7757 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_val2
7758 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_val2
7759 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_val2
7760 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_val2
7761 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_val2
7762 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_val2
7763 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_val2
7764 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_val2
7767 BitmapScanRegexp(p1 p1_.*val2.*)
7773 ------------------------------------------------
7775 -> Bitmap Heap Scan on p1
7776 Recheck Cond: (val = 1)
7777 -> Bitmap Index Scan on p1_val2
7778 Index Cond: (val = 1)
7779 -> Bitmap Heap Scan on p1_c1
7780 Recheck Cond: (val = 1)
7781 -> Bitmap Index Scan on p1_c1_val2
7782 Index Cond: (val = 1)
7783 -> Bitmap Heap Scan on p1_c2
7784 Recheck Cond: (val = 1)
7785 -> Bitmap Index Scan on p1_c2_val2
7786 Index Cond: (val = 1)
7787 -> Bitmap Heap Scan on p1_c3
7788 Recheck Cond: (val = 1)
7789 -> Bitmap Index Scan on p1_c3_val2
7790 Index Cond: (val = 1)
7791 -> Bitmap Heap Scan on p1_c4
7792 Recheck Cond: (val = 1)
7793 -> Bitmap Index Scan on p1_c4_val2
7794 Index Cond: (val = 1)
7795 -> Bitmap Heap Scan on p1_c1_c1
7796 Recheck Cond: (val = 1)
7797 -> Bitmap Index Scan on p1_c1_c1_val2
7798 Index Cond: (val = 1)
7799 -> Bitmap Heap Scan on p1_c1_c2
7800 Recheck Cond: (val = 1)
7801 -> Bitmap Index Scan on p1_c1_c2_val2
7802 Index Cond: (val = 1)
7803 -> Bitmap Heap Scan on p1_c3_c1
7804 Recheck Cond: (val = 1)
7805 -> Bitmap Index Scan on p1_c3_c1_val2
7806 Index Cond: (val = 1)
7807 -> Bitmap Heap Scan on p1_c3_c2
7808 Recheck Cond: (val = 1)
7809 -> Bitmap Index Scan on p1_c3_c2_val2
7810 Index Cond: (val = 1)
7813 /*+ BitmapScanRegexp(p1 p1[^_].*)*/
7814 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7815 LOG: available indexes for BitmapScanRegexp(p1):
7816 LOG: available indexes for BitmapScanRegexp(p1_c1):
7817 LOG: available indexes for BitmapScanRegexp(p1_c2):
7818 LOG: available indexes for BitmapScanRegexp(p1_c3):
7819 LOG: available indexes for BitmapScanRegexp(p1_c4):
7820 LOG: available indexes for BitmapScanRegexp(p1_c1_c1):
7821 LOG: available indexes for BitmapScanRegexp(p1_c1_c2):
7822 LOG: available indexes for BitmapScanRegexp(p1_c3_c1):
7823 LOG: available indexes for BitmapScanRegexp(p1_c3_c2):
7826 BitmapScanRegexp(p1 p1[^_].*)
7832 ----------------------------
7836 -> Seq Scan on p1_c1
7838 -> Seq Scan on p1_c2
7840 -> Seq Scan on p1_c3
7842 -> Seq Scan on p1_c4
7844 -> Seq Scan on p1_c1_c1
7846 -> Seq Scan on p1_c1_c2
7848 -> Seq Scan on p1_c3_c1
7850 -> Seq Scan on p1_c3_c2
7854 /*+ BitmapScan(p1 p1_.*val2.*)*/
7855 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7856 LOG: available indexes for BitmapScan(p1):
7857 LOG: available indexes for BitmapScan(p1_c1):
7858 LOG: available indexes for BitmapScan(p1_c2):
7859 LOG: available indexes for BitmapScan(p1_c3):
7860 LOG: available indexes for BitmapScan(p1_c4):
7861 LOG: available indexes for BitmapScan(p1_c1_c1):
7862 LOG: available indexes for BitmapScan(p1_c1_c2):
7863 LOG: available indexes for BitmapScan(p1_c3_c1):
7864 LOG: available indexes for BitmapScan(p1_c3_c2):
7867 BitmapScan(p1 p1_.*val2.*)
7873 ----------------------------
7877 -> Seq Scan on p1_c1
7879 -> Seq Scan on p1_c2
7881 -> Seq Scan on p1_c3
7883 -> Seq Scan on p1_c4
7885 -> Seq Scan on p1_c1_c1
7887 -> Seq Scan on p1_c1_c2
7889 -> Seq Scan on p1_c3_c1
7891 -> Seq Scan on p1_c3_c2
7895 -- search from hint table
7896 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?;', '', 'SeqScan(t1)');
7897 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?;', '', 'IndexScan(t1)');
7898 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN SELECT * FROM t1 WHERE t1.id = ?;', '', 'BitmapScan(t1)');
7899 SELECT * FROM hint_plan.hints ORDER BY id;
7900 id | norm_query_string | application_name | hints
7901 ----+----------------------------------------------------------+------------------+----------------
7902 1 | EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?; | | SeqScan(t1)
7903 2 | EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?; | | IndexScan(t1)
7904 3 | EXPLAIN SELECT * FROM t1 WHERE t1.id = ?; | | BitmapScan(t1)
7907 SET pg_hint_plan.enable_hint_table = on;
7908 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7917 --------------------
7922 SET pg_hint_plan.enable_hint_table = off;
7923 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
7925 --------------------------------
7926 Index Scan using t1_pkey on t1
7927 Index Cond: (id = 1)
7930 TRUNCATE hint_plan.hints;
7931 VACUUM ANALYZE hint_plan.hints;
7933 EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = 1;
7935 -------------------------------------
7936 Index Only Scan using t1_pkey on t1
7937 Index Cond: (id = 1)
7941 CREATE FUNCTION testfunc() RETURNS RECORD AS $$
7945 SELECT /*+ SeqScan(t1) */ * INTO ret FROM t1 LIMIT 1;
7948 $$ LANGUAGE plpgsql;
7957 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 LIMIT 1"
7958 PL/pgSQL function testfunc() line 5 at SQL statement
7965 DROP FUNCTION testfunc();
7966 CREATE FUNCTION testfunc() RETURNS void AS $$
7968 EXECUTE format('/*+ SeqScan(t1) */ SELECT * FROM t1');
7970 $$ LANGUAGE plpgsql;
7979 CONTEXT: SQL statement "/*+ SeqScan(t1) */ SELECT * FROM t1"
7980 PL/pgSQL function testfunc() line 3 at EXECUTE
7986 -- This should not use SeqScan(t1)
7987 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8001 DROP FUNCTION testfunc();
8002 CREATE FUNCTION testfunc() RETURNS void AS $$
8004 PERFORM 1, /*+ SeqScan(t1) */ * from t1;
8006 $$ LANGUAGE plpgsql;
8015 CONTEXT: SQL statement "SELECT 1, /*+ SeqScan(t1) */ * from t1"
8016 PL/pgSQL function testfunc() line 3 at PERFORM
8023 DROP FUNCTION testfunc();
8024 CREATE FUNCTION testfunc() RETURNS int AS $$
8030 FOR v IN SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id LOOP
8035 $$ LANGUAGE plpgsql;
8044 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id"
8045 PL/pgSQL function testfunc() line 7 at FOR over SELECT rows
8052 DROP FUNCTION testfunc();
8053 CREATE FUNCTION testfunc() RETURNS int AS $$
8060 FOR v IN EXECUTE 'SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id' LOOP
8065 $$ LANGUAGE plpgsql;
8074 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id"
8075 PL/pgSQL function testfunc() line 8 at FOR over EXECUTE statement
8082 DROP FUNCTION testfunc();
8083 CREATE FUNCTION testfunc() RETURNS int AS $$
8085 ref CURSOR FOR SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8090 sum := sum + rec.val;
8094 $$ LANGUAGE plpgsql;
8103 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8104 PL/pgSQL function testfunc() line 7 at FOR over cursor
8111 DROP FUNCTION testfunc();
8112 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8114 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8116 $$ LANGUAGE plpgsql;
8117 SELECT * FROM testfunc() LIMIT 1;
8125 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8126 PL/pgSQL function testfunc() line 3 at RETURN QUERY
8132 -- Test for error exit from inner SQL statement.
8133 DROP FUNCTION testfunc();
8134 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8136 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id;
8138 $$ LANGUAGE plpgsql;
8139 SELECT * FROM testfunc() LIMIT 1;
8140 ERROR: relation "ttx" does not exist
8141 LINE 1: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8143 QUERY: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8144 CONTEXT: PL/pgSQL function testfunc() line 3 at RETURN QUERY
8145 -- this should not use SeqScan(t1) hint.
8146 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8159 DROP FUNCTION testfunc();
8160 DROP EXTENSION pg_hint_plan;
8161 CREATE FUNCTION reset_stats_and_wait() RETURNS void AS $$
8167 PERFORM pg_stat_reset();
8168 PERFORM pg_sleep(0.5);
8169 SELECT sum(seq_scan + idx_scan) from pg_stat_user_tables into rows;
8172 $$ LANGUAGE plpgsql;
8173 -- Dynamic query in pl/pgsql
8174 CREATE OR REPLACE FUNCTION dynsql1(x int) RETURNS int AS $$
8177 EXECUTE '/*+ IndexScan(t1) */ SELECT count(*) FROM t1 WHERE id < $1'
8181 $$ VOLATILE LANGUAGE plpgsql;
8183 SET pg_hint_plan.enable_hint = false;
8184 SELECT reset_stats_and_wait();
8185 reset_stats_and_wait
8186 ----------------------
8190 SELECT dynsql1(9000);
8202 SELECT relname, seq_scan > 0 as seq_scan, idx_scan > 0 as idx_scan FROM pg_stat_user_tables WHERE schemaname = 'public' AND relname = 't1';
8203 relname | seq_scan | idx_scan
8204 ---------+----------+----------
8208 SET pg_hint_plan.enable_hint = true;
8209 SELECT reset_stats_and_wait();
8210 reset_stats_and_wait
8211 ----------------------
8215 SELECT dynsql1(9000);
8223 CONTEXT: SQL statement "/*+ IndexScan(t1) */ SELECT count(*) FROM t1 WHERE id < $1"
8224 PL/pgSQL function dynsql1(integer) line 4 at EXECUTE
8236 SELECT relname, seq_scan > 0 as seq_scan, idx_scan > 0 as idx_scan FROM pg_stat_user_tables WHERE schemaname = 'public' AND relname = 't1';
8237 relname | seq_scan | idx_scan
8238 ---------+----------+----------
8242 -- Looped dynamic query in pl/pgsql
8243 CREATE OR REPLACE FUNCTION dynsql2(x int, OUT r int) AS $$
8249 FOR c IN SELECT f.f FROM (VALUES ('p1_c1'), ('p1_c2')) f(f) LOOP
8250 FOR s IN EXECUTE '/*+ IndexScan(' || c || ' ' || c || '_pkey) */ SELECT sum(val) FROM ' || c || ' WHERE id < ' || x LOOP
8255 $$ VOLATILE LANGUAGE plpgsql;
8256 SET pg_hint_plan.enable_hint = false;
8257 SELECT reset_stats_and_wait();
8258 reset_stats_and_wait
8259 ----------------------
8263 SELECT dynsql2(9000);
8275 -- one of the index scans happened while planning.
8276 SELECT relname, seq_scan, idx_scan FROM pg_stat_user_tables WHERE schemaname = 'public' AND (relname = 'p1_c1' OR relname = 'p1_c2');
8277 relname | seq_scan | idx_scan
8278 ---------+----------+----------
8283 SET pg_hint_plan.enable_hint = true;
8284 SELECT reset_stats_and_wait();
8285 reset_stats_and_wait
8286 ----------------------
8290 SELECT dynsql2(9000);
8291 LOG: available indexes for IndexScan(p1_c1): p1_c1_pkey
8292 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8293 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8294 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_pkey
8295 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8296 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8297 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_pkey
8298 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8299 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8302 IndexScan(p1_c1 p1_c1_pkey)
8307 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8308 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8309 LOG: available indexes for IndexScan(p1_c2): p1_c2_pkey
8310 CONTEXT: SQL statement "/*+ IndexScan(p1_c2 p1_c2_pkey) */ SELECT sum(val) FROM p1_c2 WHERE id < 9000"
8311 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8314 IndexScan(p1_c2 p1_c2_pkey)
8319 CONTEXT: SQL statement "/*+ IndexScan(p1_c2 p1_c2_pkey) */ SELECT sum(val) FROM p1_c2 WHERE id < 9000"
8320 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8332 -- the index scan happened while planning.
8333 SELECT relname, seq_scan, idx_scan FROM pg_stat_user_tables WHERE schemaname = 'public' AND (relname = 'p1_c1' OR relname = 'p1_c2');
8334 relname | seq_scan | idx_scan
8335 ---------+----------+----------
8340 -- Subqueries on inheritance tables under UNION
8341 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8343 SELECT val::int FROM p2 WHERE id < 1000;
8345 -----------------------------------------
8349 Filter: (val < 1000)
8350 -> Seq Scan on p1_c1
8351 Filter: (val < 1000)
8352 -> Seq Scan on p1_c2
8353 Filter: (val < 1000)
8354 -> Seq Scan on p1_c3
8355 Filter: (val < 1000)
8356 -> Seq Scan on p1_c4
8357 Filter: (val < 1000)
8358 -> Seq Scan on p1_c1_c1
8359 Filter: (val < 1000)
8360 -> Seq Scan on p1_c1_c2
8361 Filter: (val < 1000)
8362 -> Seq Scan on p1_c3_c1
8363 Filter: (val < 1000)
8364 -> Seq Scan on p1_c3_c2
8365 Filter: (val < 1000)
8370 -> Seq Scan on p2_c1
8372 -> Seq Scan on p2_c2
8374 -> Seq Scan on p2_c3
8376 -> Seq Scan on p2_c4
8378 -> Seq Scan on p2_c1_c1
8380 -> Seq Scan on p2_c1_c2
8382 -> Seq Scan on p2_c3_c1
8384 -> Seq Scan on p2_c3_c2
8388 /*+ IndexScan(p1 p1_val2) */
8389 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8391 SELECT val::int FROM p2 WHERE id < 1000;
8392 LOG: available indexes for IndexScan(p1): p1_val3 p1_val2 p1_val1
8393 LOG: available indexes for IndexScan(p1_c1): p1_c1_val3 p1_c1_val2 p1_c1_val1
8394 LOG: available indexes for IndexScan(p1_c2): p1_c2_val3 p1_c2_val2 p1_c2_val1
8395 LOG: available indexes for IndexScan(p1_c3): p1_c3_val3 p1_c3_val2 p1_c3_val1
8396 LOG: available indexes for IndexScan(p1_c4): p1_c4_val3 p1_c4_val2 p1_c4_val1
8397 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_val3 p1_c1_c1_val2 p1_c1_c1_val1
8398 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_val3 p1_c1_c2_val2 p1_c1_c2_val1
8399 LOG: available indexes for IndexScan(p1_c3_c1): p1_c3_c1_val3 p1_c3_c1_val2 p1_c3_c1_val1
8400 LOG: available indexes for IndexScan(p1_c3_c2): p1_c3_c2_val3 p1_c3_c2_val2 p1_c3_c2_val1
8403 IndexScan(p1 p1_val2)
8409 --------------------------------------------------------
8412 -> Index Scan using p1_val3 on p1
8413 Index Cond: (val < 1000)
8414 -> Index Scan using p1_c1_val3 on p1_c1
8415 Index Cond: (val < 1000)
8416 -> Index Scan using p1_c2_val3 on p1_c2
8417 Index Cond: (val < 1000)
8418 -> Index Scan using p1_c3_val3 on p1_c3
8419 Index Cond: (val < 1000)
8420 -> Index Scan using p1_c4_val3 on p1_c4
8421 Index Cond: (val < 1000)
8422 -> Index Scan using p1_c1_c1_val3 on p1_c1_c1
8423 Index Cond: (val < 1000)
8424 -> Index Scan using p1_c1_c2_val3 on p1_c1_c2
8425 Index Cond: (val < 1000)
8426 -> Index Scan using p1_c3_c1_val3 on p1_c3_c1
8427 Index Cond: (val < 1000)
8428 -> Index Scan using p1_c3_c2_val3 on p1_c3_c2
8429 Index Cond: (val < 1000)
8434 -> Seq Scan on p2_c1
8436 -> Seq Scan on p2_c2
8438 -> Seq Scan on p2_c3
8440 -> Seq Scan on p2_c4
8442 -> Seq Scan on p2_c1_c1
8444 -> Seq Scan on p2_c1_c2
8446 -> Seq Scan on p2_c3_c1
8448 -> Seq Scan on p2_c3_c2
8452 /*+ IndexScan(p1 p1_val2) IndexScan(p2 p2_id_val_idx) */
8453 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8455 SELECT val::int FROM p2 WHERE id < 1000;
8456 LOG: available indexes for IndexScan(p1): p1_val3 p1_val2 p1_val1
8457 LOG: available indexes for IndexScan(p1_c1): p1_c1_val3 p1_c1_val2 p1_c1_val1
8458 LOG: available indexes for IndexScan(p1_c2): p1_c2_val3 p1_c2_val2 p1_c2_val1
8459 LOG: available indexes for IndexScan(p1_c3): p1_c3_val3 p1_c3_val2 p1_c3_val1
8460 LOG: available indexes for IndexScan(p1_c4): p1_c4_val3 p1_c4_val2 p1_c4_val1
8461 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_val3 p1_c1_c1_val2 p1_c1_c1_val1
8462 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_val3 p1_c1_c2_val2 p1_c1_c2_val1
8463 LOG: available indexes for IndexScan(p1_c3_c1): p1_c3_c1_val3 p1_c3_c1_val2 p1_c3_c1_val1
8464 LOG: available indexes for IndexScan(p1_c3_c2): p1_c3_c2_val3 p1_c3_c2_val2 p1_c3_c2_val1
8465 LOG: available indexes for IndexScan(p2): p2_id_val_idx
8466 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
8467 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
8468 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
8469 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
8470 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
8471 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
8472 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
8473 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
8476 IndexScan(p1 p1_val2)
8477 IndexScan(p2 p2_id_val_idx)
8483 --------------------------------------------------------------------
8486 -> Index Scan using p1_val3 on p1
8487 Index Cond: (val < 1000)
8488 -> Index Scan using p1_c1_val3 on p1_c1
8489 Index Cond: (val < 1000)
8490 -> Index Scan using p1_c2_val3 on p1_c2
8491 Index Cond: (val < 1000)
8492 -> Index Scan using p1_c3_val3 on p1_c3
8493 Index Cond: (val < 1000)
8494 -> Index Scan using p1_c4_val3 on p1_c4
8495 Index Cond: (val < 1000)
8496 -> Index Scan using p1_c1_c1_val3 on p1_c1_c1
8497 Index Cond: (val < 1000)
8498 -> Index Scan using p1_c1_c2_val3 on p1_c1_c2
8499 Index Cond: (val < 1000)
8500 -> Index Scan using p1_c3_c1_val3 on p1_c3_c1
8501 Index Cond: (val < 1000)
8502 -> Index Scan using p1_c3_c2_val3 on p1_c3_c2
8503 Index Cond: (val < 1000)
8506 -> Index Scan using p2_id_val_idx on p2
8507 Index Cond: (id < 1000)
8508 -> Index Scan using p2_c1_id_val_idx on p2_c1
8509 Index Cond: (id < 1000)
8510 -> Index Scan using p2_c2_id_val_idx on p2_c2
8511 Index Cond: (id < 1000)
8512 -> Index Scan using p2_c3_id_val_idx on p2_c3
8513 Index Cond: (id < 1000)
8514 -> Index Scan using p2_c4_id_val_idx on p2_c4
8515 Index Cond: (id < 1000)
8516 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
8517 Index Cond: (id < 1000)
8518 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
8519 Index Cond: (id < 1000)
8520 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1
8521 Index Cond: (id < 1000)
8522 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2
8523 Index Cond: (id < 1000)
8527 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8529 SELECT val::int FROM p2 WHERE id < 1000;
8531 -----------------------------------------------
8537 Filter: (val < 1000)
8538 -> Seq Scan on p1_c1
8539 Filter: (val < 1000)
8540 -> Seq Scan on p1_c2
8541 Filter: (val < 1000)
8542 -> Seq Scan on p1_c3
8543 Filter: (val < 1000)
8544 -> Seq Scan on p1_c4
8545 Filter: (val < 1000)
8546 -> Seq Scan on p1_c1_c1
8547 Filter: (val < 1000)
8548 -> Seq Scan on p1_c1_c2
8549 Filter: (val < 1000)
8550 -> Seq Scan on p1_c3_c1
8551 Filter: (val < 1000)
8552 -> Seq Scan on p1_c3_c2
8553 Filter: (val < 1000)
8558 -> Seq Scan on p2_c1
8560 -> Seq Scan on p2_c2
8562 -> Seq Scan on p2_c3
8564 -> Seq Scan on p2_c4
8566 -> Seq Scan on p2_c1_c1
8568 -> Seq Scan on p2_c1_c2
8570 -> Seq Scan on p2_c3_c1
8572 -> Seq Scan on p2_c3_c2
8576 /*+ IndexScan(p2 p2_id_val_idx) */
8577 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8579 SELECT val::int FROM p2 WHERE id < 1000;
8580 LOG: available indexes for IndexScan(p2): p2_id_val_idx
8581 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
8582 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
8583 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
8584 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
8585 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
8586 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
8587 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
8588 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
8591 IndexScan(p2 p2_id_val_idx)
8597 --------------------------------------------------------------------------
8603 Filter: (val < 1000)
8604 -> Seq Scan on p1_c1
8605 Filter: (val < 1000)
8606 -> Seq Scan on p1_c2
8607 Filter: (val < 1000)
8608 -> Seq Scan on p1_c3
8609 Filter: (val < 1000)
8610 -> Seq Scan on p1_c4
8611 Filter: (val < 1000)
8612 -> Seq Scan on p1_c1_c1
8613 Filter: (val < 1000)
8614 -> Seq Scan on p1_c1_c2
8615 Filter: (val < 1000)
8616 -> Seq Scan on p1_c3_c1
8617 Filter: (val < 1000)
8618 -> Seq Scan on p1_c3_c2
8619 Filter: (val < 1000)
8622 -> Index Scan using p2_id_val_idx on p2
8623 Index Cond: (id < 1000)
8624 -> Index Scan using p2_c1_id_val_idx on p2_c1
8625 Index Cond: (id < 1000)
8626 -> Index Scan using p2_c2_id_val_idx on p2_c2
8627 Index Cond: (id < 1000)
8628 -> Index Scan using p2_c3_id_val_idx on p2_c3
8629 Index Cond: (id < 1000)
8630 -> Index Scan using p2_c4_id_val_idx on p2_c4
8631 Index Cond: (id < 1000)
8632 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
8633 Index Cond: (id < 1000)
8634 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
8635 Index Cond: (id < 1000)
8636 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1
8637 Index Cond: (id < 1000)
8638 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2
8639 Index Cond: (id < 1000)
8642 /*+ IndexScan(p1 p1_val2) IndexScan(p2 p2_id_val_idx) */
8643 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8645 SELECT val::int FROM p2 WHERE id < 1000;
8646 LOG: available indexes for IndexScan(p1): p1_val3 p1_val2 p1_val1
8647 LOG: available indexes for IndexScan(p1_c1): p1_c1_val3 p1_c1_val2 p1_c1_val1
8648 LOG: available indexes for IndexScan(p1_c2): p1_c2_val3 p1_c2_val2 p1_c2_val1
8649 LOG: available indexes for IndexScan(p1_c3): p1_c3_val3 p1_c3_val2 p1_c3_val1
8650 LOG: available indexes for IndexScan(p1_c4): p1_c4_val3 p1_c4_val2 p1_c4_val1
8651 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_val3 p1_c1_c1_val2 p1_c1_c1_val1
8652 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_val3 p1_c1_c2_val2 p1_c1_c2_val1
8653 LOG: available indexes for IndexScan(p1_c3_c1): p1_c3_c1_val3 p1_c3_c1_val2 p1_c3_c1_val1
8654 LOG: available indexes for IndexScan(p1_c3_c2): p1_c3_c2_val3 p1_c3_c2_val2 p1_c3_c2_val1
8655 LOG: available indexes for IndexScan(p2): p2_id_val_idx
8656 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
8657 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
8658 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
8659 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
8660 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
8661 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
8662 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
8663 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
8666 IndexScan(p1 p1_val2)
8667 IndexScan(p2 p2_id_val_idx)
8673 --------------------------------------------------------------------------
8678 -> Index Scan using p1_val3 on p1
8679 Index Cond: (val < 1000)
8680 -> Index Scan using p1_c1_val3 on p1_c1
8681 Index Cond: (val < 1000)
8682 -> Index Scan using p1_c2_val3 on p1_c2
8683 Index Cond: (val < 1000)
8684 -> Index Scan using p1_c3_val3 on p1_c3
8685 Index Cond: (val < 1000)
8686 -> Index Scan using p1_c4_val3 on p1_c4
8687 Index Cond: (val < 1000)
8688 -> Index Scan using p1_c1_c1_val3 on p1_c1_c1
8689 Index Cond: (val < 1000)
8690 -> Index Scan using p1_c1_c2_val3 on p1_c1_c2
8691 Index Cond: (val < 1000)
8692 -> Index Scan using p1_c3_c1_val3 on p1_c3_c1
8693 Index Cond: (val < 1000)
8694 -> Index Scan using p1_c3_c2_val3 on p1_c3_c2
8695 Index Cond: (val < 1000)
8698 -> Index Scan using p2_id_val_idx on p2
8699 Index Cond: (id < 1000)
8700 -> Index Scan using p2_c1_id_val_idx on p2_c1
8701 Index Cond: (id < 1000)
8702 -> Index Scan using p2_c2_id_val_idx on p2_c2
8703 Index Cond: (id < 1000)
8704 -> Index Scan using p2_c3_id_val_idx on p2_c3
8705 Index Cond: (id < 1000)
8706 -> Index Scan using p2_c4_id_val_idx on p2_c4
8707 Index Cond: (id < 1000)
8708 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1
8709 Index Cond: (id < 1000)
8710 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2
8711 Index Cond: (id < 1000)
8712 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1
8713 Index Cond: (id < 1000)
8714 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2
8715 Index Cond: (id < 1000)
8721 -- Explain result includes "Planning time" if COSTS is enabled, but
8722 -- this test needs it enabled for get rows count. So do tests via psql
8723 -- and grep -v the mutable line.
8725 \o results/pg_hint_plan.tmpout
8726 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8728 \! sql/maskout.sh results/pg_hint_plan.tmpout
8730 ------------------------------------------------------------------------------
8731 Merge Join (cost=xxx..xxx rows=1000 width=xxx)
8732 Merge Cond: (t1.id = t2.id)
8733 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8734 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8736 \o results/pg_hint_plan.tmpout
8737 /*+ Rows(t1 t2 #99) */
8738 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8747 \! sql/maskout.sh results/pg_hint_plan.tmpout
8749 ------------------------------------------------------------------------------
8750 Merge Join (cost=xxx..xxx rows=99 width=xxx)
8751 Merge Cond: (t1.id = t2.id)
8752 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8753 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8755 \o results/pg_hint_plan.tmpout
8756 /*+ Rows(t1 t2 +99) */
8757 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8766 \! sql/maskout.sh results/pg_hint_plan.tmpout
8768 ------------------------------------------------------------------------------
8769 Merge Join (cost=xxx..xxx rows=1099 width=xxx)
8770 Merge Cond: (t1.id = t2.id)
8771 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8772 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8774 \o results/pg_hint_plan.tmpout
8775 /*+ Rows(t1 t2 -99) */
8776 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8785 \! sql/maskout.sh results/pg_hint_plan.tmpout
8787 ------------------------------------------------------------------------------
8788 Merge Join (cost=xxx..xxx rows=901 width=xxx)
8789 Merge Cond: (t1.id = t2.id)
8790 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8791 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8793 \o results/pg_hint_plan.tmpout
8794 /*+ Rows(t1 t2 *99) */
8795 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8804 \! sql/maskout.sh results/pg_hint_plan.tmpout
8806 ------------------------------------------------------------------------------
8807 Merge Join (cost=xxx..xxx rows=99000 width=xxx)
8808 Merge Cond: (t1.id = t2.id)
8809 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8810 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8812 \o results/pg_hint_plan.tmpout
8813 /*+ Rows(t1 t2 *0.01) */
8814 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8823 \! sql/maskout.sh results/pg_hint_plan.tmpout
8825 ------------------------------------------------------------------------------
8826 Merge Join (cost=xxx..xxx rows=10 width=xxx)
8827 Merge Cond: (t1.id = t2.id)
8828 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8829 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8831 \o results/pg_hint_plan.tmpout
8832 /*+ Rows(t1 t2 #aa) */
8833 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8834 INFO: pg_hint_plan: hint syntax error at or near "aa"
8835 DETAIL: Rows hint requires valid number as rows estimation.
8844 \! sql/maskout.sh results/pg_hint_plan.tmpout
8846 ------------------------------------------------------------------------------
8847 Merge Join (cost=xxx..xxx rows=1000 width=xxx)
8848 Merge Cond: (t1.id = t2.id)
8849 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8850 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8852 \o results/pg_hint_plan.tmpout
8853 /*+ Rows(t1 t2 /99) */
8854 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8855 INFO: pg_hint_plan: hint syntax error at or near "/99"
8856 DETAIL: Unrecognized rows value type notation.
8865 \! sql/maskout.sh results/pg_hint_plan.tmpout
8867 ------------------------------------------------------------------------------
8868 Merge Join (cost=xxx..xxx rows=1000 width=xxx)
8869 Merge Cond: (t1.id = t2.id)
8870 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8871 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8874 \o results/pg_hint_plan.tmpout
8875 /*+ Rows(t1 t2 -99999) */
8876 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8877 WARNING: Force estimate to be at least one row, to avoid possible divide-by-zero when interpolating costs : Rows(t1 t2 -99999)
8886 \! sql/maskout.sh results/pg_hint_plan.tmpout
8888 ------------------------------------------------------------------------------
8889 Merge Join (cost=xxx..xxx rows=1 width=xxx)
8890 Merge Cond: (t1.id = t2.id)
8891 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8892 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8894 -- complex join tree
8895 \o results/pg_hint_plan.tmpout
8896 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8898 \! sql/maskout.sh results/pg_hint_plan.tmpout
8900 ------------------------------------------------------------------------------------
8901 Merge Join (cost=xxx..xxx rows=10 width=xxx)
8902 Merge Cond: (t1.id = t3.id)
8903 -> Merge Join (cost=xxx..xxx rows=1000 width=xxx)
8904 Merge Cond: (t1.id = t2.id)
8905 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8906 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8907 -> Sort (cost=xxx..xxx rows=100 width=xxx)
8909 -> Seq Scan on t3 (cost=xxx..xxx rows=100 width=xxx)
8911 \o results/pg_hint_plan.tmpout
8912 /*+ Rows(t1 t2 #22) */
8913 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8922 \! sql/maskout.sh results/pg_hint_plan.tmpout
8924 ------------------------------------------------------------------------------------
8925 Merge Join (cost=xxx..xxx rows=1 width=xxx)
8926 Merge Cond: (t1.id = t3.id)
8927 -> Merge Join (cost=xxx..xxx rows=22 width=xxx)
8928 Merge Cond: (t1.id = t2.id)
8929 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8930 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8931 -> Sort (cost=xxx..xxx rows=100 width=xxx)
8933 -> Seq Scan on t3 (cost=xxx..xxx rows=100 width=xxx)
8935 \o results/pg_hint_plan.tmpout
8936 /*+ Rows(t1 t3 *10) */
8937 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
8946 set max_parallel_workers_per_gather to DEFAULT;
8947 \! sql/maskout.sh results/pg_hint_plan.tmpout
8949 ------------------------------------------------------------------------------------
8950 Merge Join (cost=xxx..xxx rows=100 width=xxx)
8951 Merge Cond: (t1.id = t3.id)
8952 -> Merge Join (cost=xxx..xxx rows=1000 width=xxx)
8953 Merge Cond: (t1.id = t2.id)
8954 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8955 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8956 -> Sort (cost=xxx..xxx rows=100 width=xxx)
8958 -> Seq Scan on t3 (cost=xxx..xxx rows=100 width=xxx)
8960 \! rm results/pg_hint_plan.tmpout
8962 set client_min_messages to 'DEBUG1';
8963 set pg_hint_plan.debug_level to 'verbose';
8964 /*+ SeqScan( */ SELECT 1;
8965 INFO: pg_hint_plan: hint syntax error at or near ""
8966 DETAIL: Closing parenthesis is necessary.
8972 /*+ SeqScan(t1) */ SELECT * FROM t1 LIMIT 0;
8984 set pg_hint_plan.message_level to 'DEBUG1';
8985 set pg_hint_plan.parse_messages to 'NOTICE';
8986 /*+ SeqScan( */ SELECT 1;
8987 NOTICE: pg_hint_plan: hint syntax error at or near ""
8988 DETAIL: Closing parenthesis is necessary.
8994 /*+ SeqScan(t1) */ SELECT * FROM t1 LIMIT 0;
8995 DEBUG: pg_hint_plan: