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 -------------------------------------------
21 -> Index Scan using t1_val on t1
22 Index Cond: (val = t2.val)
26 SET pg_hint_plan.debug_print TO on;
27 SELECT setting <> 'off' FROM pg_settings WHERE name = 'compute_query_id';
33 SHOW pg_hint_plan.enable_hint_table;
34 pg_hint_plan.enable_hint_table
35 --------------------------------
39 /* query-id related test */
40 SET compute_query_id to off;
41 SET pg_hint_plan.enable_hint_table to on; -- error
42 ERROR: table hint is not activated because queryid is not available
43 HINT: Set compute_query_id to on or auto to use hint table.
44 SET compute_query_id to on;
45 SET pg_hint_plan.enable_hint_table to on;
46 SET compute_query_id to off;
47 SELECT 1; -- gets warining
48 WARNING: hint table feature is deactivated because queryid is not available
49 HINT: Set compute_query_id to "auto" or "on" to use hint table.
61 SET compute_query_id to on;
62 SELECT 1; -- reactivated
63 LOG: hint table feature is reactivated
69 SET compute_query_id to off;
70 SELECT 1; -- gets warining
71 WARNING: hint table feature is deactivated because queryid is not available
72 HINT: Set compute_query_id to "auto" or "on" to use hint table.
78 SET pg_hint_plan.enable_hint_table to off;
79 SET compute_query_id to on;
80 SET pg_hint_plan.enable_hint_table to on;
81 SELECT 1; -- no warining
87 RESET compute_query_id;
88 RESET pg_hint_plan.enable_hint_table;
89 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
91 --------------------------------------
93 Merge Cond: (t1.id = t2.id)
94 -> Index Scan using t1_pkey on t1
95 -> Index Scan using t2_pkey on t2
98 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.val = t2.val;
100 -------------------------------------------
106 -> Index Scan using t1_val on t1
107 Index Cond: (val = t2.val)
111 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
112 INFO: pg_hint_plan: hint syntax error at or near "Test (t1 t2) "
113 DETAIL: Unrecognized hint keyword "Test".
115 --------------------------------------
117 Merge Cond: (t1.id = t2.id)
118 -> Index Scan using t1_pkey on t1
119 -> Index Scan using t2_pkey on t2
122 SET pg_hint_plan.enable_hint TO off;
124 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
126 --------------------------------------
128 Merge Cond: (t1.id = t2.id)
129 -> Index Scan using t1_pkey on t1
130 -> Index Scan using t2_pkey on t2
133 SET pg_hint_plan.enable_hint TO on;
134 /*Set(enable_indexscan off)*/
135 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
137 --------------------------------------
139 Merge Cond: (t1.id = t2.id)
140 -> Index Scan using t1_pkey on t1
141 -> Index Scan using t2_pkey on t2
144 --+Set(enable_indexscan off)
145 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
147 --------------------------------------
149 Merge Cond: (t1.id = t2.id)
150 -> Index Scan using t1_pkey on t1
151 -> Index Scan using t2_pkey on t2
154 /*+Set(enable_indexscan off) /* nest comment */ */
155 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
156 INFO: pg_hint_plan: hint syntax error at or near "/* nest comment */ */
157 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;"
158 DETAIL: Nested block comments are not supported.
160 --------------------------------------
162 Merge Cond: (t1.id = t2.id)
163 -> Index Scan using t1_pkey on t1
164 -> Index Scan using t2_pkey on t2
167 /*+Set(enable_indexscan off)*/
168 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
171 Set(enable_indexscan off)
177 ------------------------------
179 Hash Cond: (t1.id = t2.id)
185 EXPLAIN (COSTS false) /*+Set(enable_indexscan off)*/
186 SELECT * FROM t1, t2 WHERE t1.id = t2.id;
189 Set(enable_indexscan off)
195 ------------------------------
197 Hash Cond: (t1.id = t2.id)
203 /*+ Set(enable_indexscan off) Set(enable_hashjoin off) */
204 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
207 Set(enable_hashjoin off)
208 Set(enable_indexscan off)
214 -------------------------------
216 Merge Cond: (t1.id = t2.id)
225 /*+ Set ( enable_indexscan off ) */
226 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
229 Set(enable_indexscan off)
235 ------------------------------
237 Hash Cond: (t1.id = t2.id)
250 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
253 Set(enable_indexscan off)
259 ------------------------------
261 Hash Cond: (t1.id = t2.id)
267 /*+ Set(enable_indexscan off)Set(enable_nestloop off)Set(enable_mergejoin off)
268 Set(enable_seqscan off)
270 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
273 Set(enable_indexscan off)
274 Set(enable_mergejoin off)
275 Set(enable_nestloop off)
276 Set(enable_seqscan off)
282 --------------------------------------------
284 Hash Cond: (t1.id = t2.id)
285 -> Index Scan using t1_pkey on t1
287 -> Index Scan using t2_pkey on t2
290 /*+Set(work_mem "1M")*/
291 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
292 INFO: invalid value for parameter "work_mem": "1M"
293 HINT: Valid units for this parameter are "B", "kB", "MB", "GB", and "TB".
302 --------------------------------------
304 Merge Cond: (t1.id = t2.id)
305 -> Index Scan using t1_pkey on t1
306 -> Index Scan using t2_pkey on t2
309 /*+Set(work_mem "1MB")*/
310 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
319 --------------------------------------
321 Merge Cond: (t1.id = t2.id)
322 -> Index Scan using t1_pkey on t1
323 -> Index Scan using t2_pkey on t2
326 /*+Set(work_mem TO "1MB")*/
327 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
328 INFO: pg_hint_plan: hint syntax error at or near "Set(work_mem TO "1MB")"
329 DETAIL: Set hint requires name and value of GUC parameter.
338 --------------------------------------
340 Merge Cond: (t1.id = t2.id)
341 -> Index Scan using t1_pkey on t1
342 -> Index Scan using t2_pkey on t2
345 /*+SeqScan() */ SELECT 1;
346 INFO: pg_hint_plan: hint syntax error at or near " "
347 DETAIL: SeqScan hint requires a relation.
361 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
362 INFO: pg_hint_plan: hint syntax error at or near ""
363 DETAIL: SeqScan hint accepts only one relation.
372 --------------------------------------
374 Merge Cond: (t1.id = t2.id)
375 -> Index Scan using t1_pkey on t1
376 -> Index Scan using t2_pkey on t2
380 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
389 ------------------------------
391 Hash Cond: (t1.id = t2.id)
397 /*+SeqScan(t1)IndexScan(t2)*/
398 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
408 --------------------------------------------
410 Hash Cond: (t1.id = t2.id)
413 -> Index Scan using t2_pkey on t2
417 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
426 ------------------------------------------
429 -> Bitmap Heap Scan on t2
430 Recheck Cond: (id = t1.id)
431 -> Bitmap Index Scan on t2_pkey
432 Index Cond: (id = t1.id)
435 /*+BitmapScan(t2)NoSeqScan(t1)*/
436 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
446 ------------------------------------------
448 -> Index Scan using t1_pkey on t1
449 -> Bitmap Heap Scan on t2
450 Recheck Cond: (id = t1.id)
451 -> Bitmap Index Scan on t2_pkey
452 Index Cond: (id = t1.id)
456 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
465 ------------------------------
467 Hash Cond: (t1.id = t2.id)
473 /*+NoBitmapScan(t1)*/
474 EXPLAIN (COSTS false) SELECT * FROM t1, t4 WHERE t1.val < 10;
483 ----------------------------
492 EXPLAIN (COSTS false) SELECT * FROM t3, t4 WHERE t3.id = t4.id AND t4.ctid = '(1,1)';
501 -----------------------------------------------
503 Merge Cond: (t3.id = t4.id)
504 -> Index Scan using t3_pkey on t3
508 TID Cond: (ctid = '(1,1)'::tid)
512 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)';
521 ---------------------------------------
524 Filter: (ctid = '(1,1)'::tid)
525 -> Index Scan using t2_pkey on t2
526 Index Cond: (id = t1.id)
529 /*+ NestLoop() */ SELECT 1;
530 INFO: pg_hint_plan: hint syntax error at or near " "
531 DETAIL: NestLoop hint requires at least two relations.
544 /*+ NestLoop(x) */ SELECT 1;
545 INFO: pg_hint_plan: hint syntax error at or near " "
546 DETAIL: NestLoop hint requires at least two relations.
560 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
569 ------------------------------
571 Hash Cond: (t1.id = t2.id)
578 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
587 --------------------------------------
590 -> Index Scan using t1_pkey on t1
591 Index Cond: (id = t2.id)
594 /*+NoMergeJoin(t1 t2)*/
595 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
604 ------------------------------
606 Hash Cond: (t1.id = t2.id)
612 /*+MergeJoin(t1 t3)*/
613 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
622 -------------------------------------
624 Merge Cond: (t1.val = t3.val)
625 -> Index Scan using t1_val on t1
632 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
641 -------------------------------------
644 -> Index Scan using t1_val on t1
645 Index Cond: (val = t3.val)
648 /*+NoHashJoin(t1 t3)*/
649 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
658 -------------------------------------
661 -> Index Scan using t1_val on t1
662 Index Cond: (val = t3.val)
665 /*+MergeJoin(t4 t1 t2 t3)*/
666 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
669 MergeJoin(t1 t2 t3 t4)
675 --------------------------------------------------
677 Merge Cond: (t1.id = t3.id)
679 Merge Cond: (t1.id = t2.id)
680 -> Index Scan using t1_pkey on t1
681 -> Index Scan using t2_pkey on t2
684 Merge Cond: (t3.id = t4.id)
685 -> Index Scan using t3_pkey on t3
691 /*+HashJoin(t3 t4 t1 t2)*/
692 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
695 HashJoin(t1 t2 t3 t4)
701 --------------------------------------------------------
703 Hash Cond: (t3.id = t1.id)
707 Merge Cond: (t1.id = t4.id)
709 Merge Cond: (t1.id = t2.id)
710 -> Index Scan using t1_pkey on t1
711 -> Index Scan using t2_pkey on t2
717 /*+NestLoop(t2 t3 t4 t1) IndexScan(t3)*/
718 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
722 NestLoop(t1 t2 t3 t4)
728 --------------------------------------------------
731 Merge Cond: (t1.id = t4.id)
733 Merge Cond: (t1.id = t2.id)
734 -> Index Scan using t1_pkey on t1
735 -> Index Scan using t2_pkey on t2
739 -> Index Scan using t3_pkey on t3
740 Index Cond: (id = t1.id)
743 /*+NoNestLoop(t4 t1 t3 t2)*/
744 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
747 NoNestLoop(t1 t2 t3 t4)
753 --------------------------------------------------
755 Merge Cond: (t1.id = t3.id)
757 Merge Cond: (t1.id = t2.id)
758 -> Index Scan using t1_pkey on t1
759 -> Index Scan using t2_pkey on t2
762 Merge Cond: (t3.id = t4.id)
763 -> Index Scan using t3_pkey on t3
770 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
771 INFO: pg_hint_plan: hint syntax error at or near ""
772 DETAIL: Closing parenthesis is necessary.
774 --------------------------------------------------
777 Merge Cond: (t1.id = t4.id)
779 Merge Cond: (t1.id = t2.id)
780 -> Index Scan using t1_pkey on t1
781 -> Index Scan using t2_pkey on t2
785 -> Index Scan using t3_pkey on t3
786 Index Cond: (id = t1.id)
790 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
791 INFO: pg_hint_plan: hint syntax error at or near "Leading( )"
792 DETAIL: Leading hint requires at least two relations.
801 --------------------------------------------------
804 Merge Cond: (t1.id = t4.id)
806 Merge Cond: (t1.id = t2.id)
807 -> Index Scan using t1_pkey on t1
808 -> Index Scan using t2_pkey on t2
812 -> Index Scan using t3_pkey on t3
813 Index Cond: (id = t1.id)
817 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
818 INFO: pg_hint_plan: hint syntax error at or near "Leading( t3 )"
819 DETAIL: Leading hint requires at least two relations.
828 --------------------------------------------------
831 Merge Cond: (t1.id = t4.id)
833 Merge Cond: (t1.id = t2.id)
834 -> Index Scan using t1_pkey on t1
835 -> Index Scan using t2_pkey on t2
839 -> Index Scan using t3_pkey on t3
840 Index Cond: (id = t1.id)
843 /*+Leading( t3 t4 )*/
844 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
853 --------------------------------------------------
857 Merge Cond: (t3.id = t4.id)
858 -> Index Scan using t3_pkey on t3
862 -> Index Scan using t2_pkey on t2
863 Index Cond: (id = t3.id)
864 -> Index Scan using t1_pkey on t1
865 Index Cond: (id = t2.id)
868 /*+Leading(t3 t4 t1)*/
869 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
878 --------------------------------------------------
881 Merge Cond: (t3.id = t1.id)
883 Merge Cond: (t3.id = t4.id)
884 -> Index Scan using t3_pkey on t3
888 -> Index Scan using t1_pkey on t1
889 -> Index Scan using t2_pkey on t2
890 Index Cond: (id = t1.id)
893 /*+Leading(t3 t4 t1 t2)*/
894 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
903 --------------------------------------------------
906 Merge Cond: (t3.id = t1.id)
908 Merge Cond: (t3.id = t4.id)
909 -> Index Scan using t3_pkey on t3
913 -> Index Scan using t1_pkey on t1
914 -> Index Scan using t2_pkey on t2
915 Index Cond: (id = t1.id)
918 /*+Leading(t3 t4 t1 t2 t1)*/
919 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
920 INFO: pg_hint_plan: hint syntax error at or near "Leading(t3 t4 t1 t2 t1)"
921 DETAIL: Relation name "t1" is duplicated.
927 Leading(t3 t4 t1 t2 t1)
930 --------------------------------------------------
933 Merge Cond: (t1.id = t4.id)
935 Merge Cond: (t1.id = t2.id)
936 -> Index Scan using t1_pkey on t1
937 -> Index Scan using t2_pkey on t2
941 -> Index Scan using t3_pkey on t3
942 Index Cond: (id = t1.id)
945 /*+Leading(t3 t4 t4)*/
946 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
947 INFO: pg_hint_plan: hint syntax error at or near "Leading(t3 t4 t4)"
948 DETAIL: Relation name "t4" is duplicated.
957 --------------------------------------------------
960 Merge Cond: (t1.id = t4.id)
962 Merge Cond: (t1.id = t2.id)
963 -> Index Scan using t1_pkey on t1
964 -> Index Scan using t2_pkey on t2
968 -> Index Scan using t3_pkey on t3
969 Index Cond: (id = t1.id)
972 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
974 -----------------------------------------------
976 -> Values Scan on "*VALUES*"
977 -> Index Scan using t1_pkey on t1
978 Index Cond: (id = "*VALUES*".column1)
982 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
991 -----------------------------------------------
993 -> Values Scan on "*VALUES*"
994 -> Index Scan using t1_pkey on t1
995 Index Cond: (id = "*VALUES*".column1)
998 /*+HashJoin(t1 *VALUES*)*/
999 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
1002 HashJoin(*VALUES* t1)
1008 -------------------------------------------
1010 Hash Cond: (t1.id = "*VALUES*".column1)
1013 -> Values Scan on "*VALUES*"
1016 /*+HashJoin(t1 *VALUES*) IndexScan(t1) IndexScan(*VALUES*)*/
1017 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
1021 HashJoin(*VALUES* t1)
1028 -------------------------------------------
1030 Hash Cond: (t1.id = "*VALUES*".column1)
1031 -> Index Scan using t1_pkey on t1
1033 -> Values Scan on "*VALUES*"
1036 -- single table scan hint test
1037 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 2 (returns $1)
1044 InitPlan 1 (returns $0)
1046 -> Index Only Scan Backward using t1_pkey on t1 v_1
1047 Index Cond: ((id IS NOT NULL) AND (id < 10))
1048 InitPlan 4 (returns $3)
1050 InitPlan 3 (returns $2)
1052 -> Index Only Scan Backward using t1_pkey on t1 v_2
1053 Index Cond: ((id IS NOT NULL) AND (id < 10))
1056 /*+BitmapScan(v_1)*/
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);
1066 ------------------------------------------------------------------------
1067 Index Only Scan using t1_pkey on t1
1068 Index Cond: (id = $3)
1069 InitPlan 1 (returns $1)
1071 -> Bitmap Heap Scan on t1 v_1
1072 Recheck Cond: (id < 10)
1073 -> Bitmap Index Scan on t1_pkey
1074 Index Cond: (id < 10)
1075 InitPlan 3 (returns $3)
1077 InitPlan 2 (returns $2)
1079 -> Index Only Scan Backward using t1_pkey on t1 v_2
1080 Index Cond: ((id IS NOT NULL) AND (id < 10))
1083 /*+BitmapScan(v_2)*/
1084 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);
1093 ------------------------------------------------------------------------
1094 Index Only Scan using t1_pkey on t1
1095 Index Cond: (id = $3)
1096 InitPlan 2 (returns $1)
1098 InitPlan 1 (returns $0)
1100 -> Index Only Scan Backward using t1_pkey on t1 v_1
1101 Index Cond: ((id IS NOT NULL) AND (id < 10))
1102 InitPlan 3 (returns $3)
1104 -> Bitmap Heap Scan on t1 v_2
1105 Recheck Cond: (id < 10)
1106 -> Bitmap Index Scan on t1_pkey
1107 Index Cond: (id < 10)
1111 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);
1120 ------------------------------------------------------------------------
1121 Bitmap Heap Scan on t1
1122 Recheck Cond: (id = $3)
1123 InitPlan 2 (returns $1)
1125 InitPlan 1 (returns $0)
1127 -> Index Only Scan Backward using t1_pkey on t1 v_1
1128 Index Cond: ((id IS NOT NULL) AND (id < 10))
1129 InitPlan 4 (returns $3)
1131 InitPlan 3 (returns $2)
1133 -> Index Only Scan Backward using t1_pkey on t1 v_2
1134 Index Cond: ((id IS NOT NULL) AND (id < 10))
1135 -> Bitmap Index Scan on t1_pkey
1136 Index Cond: (id = $3)
1139 /*+BitmapScan(v_1)BitmapScan(v_2)*/
1140 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);
1150 --------------------------------------------------
1151 Index Only Scan using t1_pkey on t1
1152 Index Cond: (id = $3)
1153 InitPlan 1 (returns $1)
1155 -> Bitmap Heap Scan on t1 v_1
1156 Recheck Cond: (id < 10)
1157 -> Bitmap Index Scan on t1_pkey
1158 Index Cond: (id < 10)
1159 InitPlan 2 (returns $3)
1161 -> Bitmap Heap Scan on t1 v_2
1162 Recheck Cond: (id < 10)
1163 -> Bitmap Index Scan on t1_pkey
1164 Index Cond: (id < 10)
1167 /*+BitmapScan(v_1)BitmapScan(t1)*/
1168 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);
1178 ------------------------------------------------------------------------
1179 Bitmap Heap Scan on t1
1180 Recheck Cond: (id = $3)
1181 InitPlan 1 (returns $1)
1183 -> Bitmap Heap Scan on t1 v_1
1184 Recheck Cond: (id < 10)
1185 -> Bitmap Index Scan on t1_pkey
1186 Index Cond: (id < 10)
1187 InitPlan 3 (returns $3)
1189 InitPlan 2 (returns $2)
1191 -> Index Only Scan Backward using t1_pkey on t1 v_2
1192 Index Cond: ((id IS NOT NULL) AND (id < 10))
1193 -> Bitmap Index Scan on t1_pkey
1194 Index Cond: (id = $3)
1197 /*+BitmapScan(v_2)BitmapScan(t1)*/
1198 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);
1208 ------------------------------------------------------------------------
1209 Bitmap Heap Scan on t1
1210 Recheck Cond: (id = $3)
1211 InitPlan 2 (returns $1)
1213 InitPlan 1 (returns $0)
1215 -> Index Only Scan Backward using t1_pkey on t1 v_1
1216 Index Cond: ((id IS NOT NULL) AND (id < 10))
1217 InitPlan 3 (returns $3)
1219 -> Bitmap Heap Scan on t1 v_2
1220 Recheck Cond: (id < 10)
1221 -> Bitmap Index Scan on t1_pkey
1222 Index Cond: (id < 10)
1223 -> Bitmap Index Scan on t1_pkey
1224 Index Cond: (id = $3)
1227 /*+BitmapScan(v_1)BitmapScan(v_2)BitmapScan(t1)*/
1228 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);
1239 --------------------------------------------------
1240 Bitmap Heap Scan on t1
1241 Recheck Cond: (id = $3)
1242 InitPlan 1 (returns $1)
1244 -> Bitmap Heap Scan on t1 v_1
1245 Recheck Cond: (id < 10)
1246 -> Bitmap Index Scan on t1_pkey
1247 Index Cond: (id < 10)
1248 InitPlan 2 (returns $3)
1250 -> Bitmap Heap Scan on t1 v_2
1251 Recheck Cond: (id < 10)
1252 -> Bitmap Index Scan on t1_pkey
1253 Index Cond: (id < 10)
1254 -> Bitmap Index Scan on t1_pkey
1255 Index Cond: (id = $3)
1258 -- full scan hint pattern test
1259 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1261 -----------------------------------
1263 TID Cond: (ctid = '(1,1)'::tid)
1268 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1277 -------------------------------------------------
1279 Filter: ((id < 10) AND (ctid = '(1,1)'::tid))
1283 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1292 ---------------------------------
1293 Index Scan using t1_pkey on t1
1294 Index Cond: (id < 10)
1295 Filter: (ctid = '(1,1)'::tid)
1299 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1308 ------------------------------------
1309 Bitmap Heap Scan on t1
1310 Recheck Cond: (id < 10)
1311 Filter: (ctid = '(1,1)'::tid)
1312 -> Bitmap Index Scan on t1_pkey
1313 Index Cond: (id < 10)
1317 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1326 -----------------------------------
1328 TID Cond: (ctid = '(1,1)'::tid)
1333 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1342 -----------------------------------
1344 TID Cond: (ctid = '(1,1)'::tid)
1348 /*+NoIndexScan(t1)*/
1349 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1358 -----------------------------------
1360 TID Cond: (ctid = '(1,1)'::tid)
1364 /*+NoBitmapScan(t1)*/
1365 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1374 -----------------------------------
1376 TID Cond: (ctid = '(1,1)'::tid)
1381 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE id < 10 AND ctid = '(1,1)';
1390 ---------------------------------
1391 Index Scan using t1_pkey on t1
1392 Index Cond: (id < 10)
1393 Filter: (ctid = '(1,1)'::tid)
1396 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1398 -----------------------------------------
1400 Join Filter: (t1.id = t2.id)
1402 TID Cond: (ctid = '(1,1)'::tid)
1404 TID Cond: (ctid = '(1,1)'::tid)
1408 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1417 -----------------------------------------
1419 Join Filter: (t1.id = t2.id)
1421 Filter: (ctid = '(1,1)'::tid)
1423 TID Cond: (ctid = '(1,1)'::tid)
1427 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1436 -----------------------------------------
1438 Join Filter: (t1.id = t2.id)
1440 TID Cond: (ctid = '(1,1)'::tid)
1442 Filter: (ctid = '(1,1)'::tid)
1445 /*+SeqScan(t1) SeqScan(t2)*/
1446 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1456 ---------------------------------------
1458 Join Filter: (t1.id = t2.id)
1460 Filter: (ctid = '(1,1)'::tid)
1462 Filter: (ctid = '(1,1)'::tid)
1465 /*+SeqScan(t1) IndexScan(t2)*/
1466 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1476 ---------------------------------------
1479 Filter: (ctid = '(1,1)'::tid)
1480 -> Index Scan using t2_pkey on t2
1481 Index Cond: (id = t1.id)
1482 Filter: (ctid = '(1,1)'::tid)
1485 /*+SeqScan(t1) BitmapScan(t2)*/
1486 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1496 ------------------------------------------
1499 Filter: (ctid = '(1,1)'::tid)
1500 -> Bitmap Heap Scan on t2
1501 Recheck Cond: (id = t1.id)
1502 Filter: (ctid = '(1,1)'::tid)
1503 -> Bitmap Index Scan on t2_pkey
1504 Index Cond: (id = t1.id)
1507 /*+SeqScan(t1) TidScan(t2)*/
1508 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1518 -----------------------------------------
1520 Join Filter: (t1.id = t2.id)
1522 Filter: (ctid = '(1,1)'::tid)
1524 TID Cond: (ctid = '(1,1)'::tid)
1527 /*+SeqScan(t1) NoSeqScan(t2)*/
1528 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1538 -----------------------------------------
1540 Join Filter: (t1.id = t2.id)
1542 Filter: (ctid = '(1,1)'::tid)
1544 TID Cond: (ctid = '(1,1)'::tid)
1547 /*+SeqScan(t1) NoIndexScan(t2)*/
1548 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1558 -----------------------------------------
1560 Join Filter: (t1.id = t2.id)
1562 Filter: (ctid = '(1,1)'::tid)
1564 TID Cond: (ctid = '(1,1)'::tid)
1567 /*+SeqScan(t1) NoBitmapScan(t2)*/
1568 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1578 -----------------------------------------
1580 Join Filter: (t1.id = t2.id)
1582 Filter: (ctid = '(1,1)'::tid)
1584 TID Cond: (ctid = '(1,1)'::tid)
1587 /*+SeqScan(t1) NoTidScan(t2)*/
1588 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1598 ---------------------------------------
1600 Join Filter: (t1.id = t2.id)
1602 Filter: (ctid = '(1,1)'::tid)
1604 Filter: (ctid = '(1,1)'::tid)
1608 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1617 -----------------------------------------
1620 TID Cond: (ctid = '(1,1)'::tid)
1621 -> Index Scan using t1_pkey on t1
1622 Index Cond: (id = t2.id)
1623 Filter: (ctid = '(1,1)'::tid)
1627 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1636 -----------------------------------------
1639 TID Cond: (ctid = '(1,1)'::tid)
1640 -> Index Scan using t2_pkey on t2
1641 Index Cond: (id = t1.id)
1642 Filter: (ctid = '(1,1)'::tid)
1645 /*+IndexScan(t1) SeqScan(t2)*/
1646 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1656 ---------------------------------------
1659 Filter: (ctid = '(1,1)'::tid)
1660 -> Index Scan using t1_pkey on t1
1661 Index Cond: (id = t2.id)
1662 Filter: (ctid = '(1,1)'::tid)
1665 /*+IndexScan(t1) IndexScan(t2)*/
1666 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1676 ---------------------------------------
1678 -> Index Scan using t2_pkey on t2
1679 Filter: (ctid = '(1,1)'::tid)
1680 -> Index Scan using t1_pkey on t1
1681 Index Cond: (id = t2.id)
1682 Filter: (ctid = '(1,1)'::tid)
1685 /*+IndexScan(t1) BitmapScan(t2)*/
1686 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1696 ------------------------------------------
1698 -> Index Scan using t1_pkey on t1
1699 Filter: (ctid = '(1,1)'::tid)
1700 -> Bitmap Heap Scan on t2
1701 Recheck Cond: (id = t1.id)
1702 Filter: (ctid = '(1,1)'::tid)
1703 -> Bitmap Index Scan on t2_pkey
1704 Index Cond: (id = t1.id)
1707 /*+IndexScan(t1) TidScan(t2)*/
1708 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1718 -----------------------------------------
1721 TID Cond: (ctid = '(1,1)'::tid)
1722 -> Index Scan using t1_pkey on t1
1723 Index Cond: (id = t2.id)
1724 Filter: (ctid = '(1,1)'::tid)
1727 /*+IndexScan(t1) NoSeqScan(t2)*/
1728 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1738 -----------------------------------------
1741 TID Cond: (ctid = '(1,1)'::tid)
1742 -> Index Scan using t1_pkey on t1
1743 Index Cond: (id = t2.id)
1744 Filter: (ctid = '(1,1)'::tid)
1747 /*+IndexScan(t1) NoIndexScan(t2)*/
1748 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1758 -----------------------------------------
1761 TID Cond: (ctid = '(1,1)'::tid)
1762 -> Index Scan using t1_pkey on t1
1763 Index Cond: (id = t2.id)
1764 Filter: (ctid = '(1,1)'::tid)
1767 /*+IndexScan(t1) NoBitmapScan(t2)*/
1768 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1778 -----------------------------------------
1781 TID Cond: (ctid = '(1,1)'::tid)
1782 -> Index Scan using t1_pkey on t1
1783 Index Cond: (id = t2.id)
1784 Filter: (ctid = '(1,1)'::tid)
1787 /*+IndexScan(t1) NoTidScan(t2)*/
1788 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1798 ---------------------------------------
1801 Filter: (ctid = '(1,1)'::tid)
1802 -> Index Scan using t1_pkey on t1
1803 Index Cond: (id = t2.id)
1804 Filter: (ctid = '(1,1)'::tid)
1808 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1817 ------------------------------------------
1820 TID Cond: (ctid = '(1,1)'::tid)
1821 -> Bitmap Heap Scan on t1
1822 Recheck Cond: (id = t2.id)
1823 Filter: (ctid = '(1,1)'::tid)
1824 -> Bitmap Index Scan on t1_pkey
1825 Index Cond: (id = t2.id)
1829 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1838 ------------------------------------------
1841 TID Cond: (ctid = '(1,1)'::tid)
1842 -> Bitmap Heap Scan on t2
1843 Recheck Cond: (id = t1.id)
1844 Filter: (ctid = '(1,1)'::tid)
1845 -> Bitmap Index Scan on t2_pkey
1846 Index Cond: (id = t1.id)
1850 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1859 ------------------------------------------
1862 TID Cond: (ctid = '(1,1)'::tid)
1863 -> Bitmap Heap Scan on t2
1864 Recheck Cond: (id = t1.id)
1865 Filter: (ctid = '(1,1)'::tid)
1866 -> Bitmap Index Scan on t2_pkey
1867 Index Cond: (id = t1.id)
1870 /*+BitmapScan(t1) SeqScan(t2)*/
1871 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1881 ------------------------------------------
1884 Filter: (ctid = '(1,1)'::tid)
1885 -> Bitmap Heap Scan on t1
1886 Recheck Cond: (id = t2.id)
1887 Filter: (ctid = '(1,1)'::tid)
1888 -> Bitmap Index Scan on t1_pkey
1889 Index Cond: (id = t2.id)
1892 /*+BitmapScan(t1) IndexScan(t2)*/
1893 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1903 ------------------------------------------
1905 -> Index Scan using t2_pkey on t2
1906 Filter: (ctid = '(1,1)'::tid)
1907 -> Bitmap Heap Scan on t1
1908 Recheck Cond: (id = t2.id)
1909 Filter: (ctid = '(1,1)'::tid)
1910 -> Bitmap Index Scan on t1_pkey
1911 Index Cond: (id = t2.id)
1914 /*+BitmapScan(t1) BitmapScan(t2)*/
1915 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1925 ------------------------------------------
1927 -> Index Scan using t2_pkey on t2
1928 Filter: (ctid = '(1,1)'::tid)
1929 -> Bitmap Heap Scan on t1
1930 Recheck Cond: (id = t2.id)
1931 Filter: (ctid = '(1,1)'::tid)
1932 -> Bitmap Index Scan on t1_pkey
1933 Index Cond: (id = t2.id)
1936 /*+BitmapScan(t1) TidScan(t2)*/
1937 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1947 ------------------------------------------
1950 TID Cond: (ctid = '(1,1)'::tid)
1951 -> Bitmap Heap Scan on t1
1952 Recheck Cond: (id = t2.id)
1953 Filter: (ctid = '(1,1)'::tid)
1954 -> Bitmap Index Scan on t1_pkey
1955 Index Cond: (id = t2.id)
1958 /*+BitmapScan(t1) NoSeqScan(t2)*/
1959 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1969 ------------------------------------------
1972 TID Cond: (ctid = '(1,1)'::tid)
1973 -> Bitmap Heap Scan on t1
1974 Recheck Cond: (id = t2.id)
1975 Filter: (ctid = '(1,1)'::tid)
1976 -> Bitmap Index Scan on t1_pkey
1977 Index Cond: (id = t2.id)
1980 /*+BitmapScan(t1) NoIndexScan(t2)*/
1981 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
1991 ------------------------------------------
1994 TID Cond: (ctid = '(1,1)'::tid)
1995 -> Bitmap Heap Scan on t1
1996 Recheck Cond: (id = t2.id)
1997 Filter: (ctid = '(1,1)'::tid)
1998 -> Bitmap Index Scan on t1_pkey
1999 Index Cond: (id = t2.id)
2002 /*+BitmapScan(t1) NoBitmapScan(t2)*/
2003 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2013 ------------------------------------------
2016 TID Cond: (ctid = '(1,1)'::tid)
2017 -> Bitmap Heap Scan on t1
2018 Recheck Cond: (id = t2.id)
2019 Filter: (ctid = '(1,1)'::tid)
2020 -> Bitmap Index Scan on t1_pkey
2021 Index Cond: (id = t2.id)
2024 /*+BitmapScan(t1) NoTidScan(t2)*/
2025 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2035 ------------------------------------------
2038 Filter: (ctid = '(1,1)'::tid)
2039 -> Bitmap Heap Scan on t1
2040 Recheck Cond: (id = t2.id)
2041 Filter: (ctid = '(1,1)'::tid)
2042 -> Bitmap Index Scan on t1_pkey
2043 Index Cond: (id = t2.id)
2047 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2056 -----------------------------------------
2058 Join Filter: (t1.id = t2.id)
2060 TID Cond: (ctid = '(1,1)'::tid)
2062 TID Cond: (ctid = '(1,1)'::tid)
2066 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2075 -----------------------------------------
2077 Join Filter: (t1.id = t2.id)
2079 TID Cond: (ctid = '(1,1)'::tid)
2081 TID Cond: (ctid = '(1,1)'::tid)
2084 /*+TidScan(t1) SeqScan(t2)*/
2085 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2095 -----------------------------------------
2097 Join Filter: (t1.id = t2.id)
2099 TID Cond: (ctid = '(1,1)'::tid)
2101 Filter: (ctid = '(1,1)'::tid)
2104 /*+TidScan(t1) IndexScan(t2)*/
2105 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2115 -----------------------------------------
2118 TID Cond: (ctid = '(1,1)'::tid)
2119 -> Index Scan using t2_pkey on t2
2120 Index Cond: (id = t1.id)
2121 Filter: (ctid = '(1,1)'::tid)
2124 /*+TidScan(t1) BitmapScan(t2)*/
2125 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2135 ------------------------------------------
2138 TID Cond: (ctid = '(1,1)'::tid)
2139 -> Bitmap Heap Scan on t2
2140 Recheck Cond: (id = t1.id)
2141 Filter: (ctid = '(1,1)'::tid)
2142 -> Bitmap Index Scan on t2_pkey
2143 Index Cond: (id = t1.id)
2146 /*+TidScan(t1) TidScan(t2)*/
2147 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2157 -----------------------------------------
2159 Join Filter: (t1.id = t2.id)
2161 TID Cond: (ctid = '(1,1)'::tid)
2163 TID Cond: (ctid = '(1,1)'::tid)
2166 /*+TidScan(t1) NoSeqScan(t2)*/
2167 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2177 -----------------------------------------
2179 Join Filter: (t1.id = t2.id)
2181 TID Cond: (ctid = '(1,1)'::tid)
2183 TID Cond: (ctid = '(1,1)'::tid)
2186 /*+TidScan(t1) NoIndexScan(t2)*/
2187 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2197 -----------------------------------------
2199 Join Filter: (t1.id = t2.id)
2201 TID Cond: (ctid = '(1,1)'::tid)
2203 TID Cond: (ctid = '(1,1)'::tid)
2206 /*+TidScan(t1) NoBitmapScan(t2)*/
2207 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2217 -----------------------------------------
2219 Join Filter: (t1.id = t2.id)
2221 TID Cond: (ctid = '(1,1)'::tid)
2223 TID Cond: (ctid = '(1,1)'::tid)
2226 /*+TidScan(t1) NoTidScan(t2)*/
2227 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2237 -----------------------------------------
2240 TID Cond: (ctid = '(1,1)'::tid)
2241 -> Index Scan using t2_pkey on t2
2242 Index Cond: (id = t1.id)
2243 Filter: (ctid = '(1,1)'::tid)
2247 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2256 -----------------------------------------
2258 Join Filter: (t1.id = t2.id)
2260 TID Cond: (ctid = '(1,1)'::tid)
2262 TID Cond: (ctid = '(1,1)'::tid)
2266 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2275 -----------------------------------------
2277 Join Filter: (t1.id = t2.id)
2279 TID Cond: (ctid = '(1,1)'::tid)
2281 TID Cond: (ctid = '(1,1)'::tid)
2284 /*+NoSeqScan(t1) SeqScan(t2)*/
2285 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2295 -----------------------------------------
2297 Join Filter: (t1.id = t2.id)
2299 TID Cond: (ctid = '(1,1)'::tid)
2301 Filter: (ctid = '(1,1)'::tid)
2304 /*+NoSeqScan(t1) IndexScan(t2)*/
2305 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2315 -----------------------------------------
2318 TID Cond: (ctid = '(1,1)'::tid)
2319 -> Index Scan using t2_pkey on t2
2320 Index Cond: (id = t1.id)
2321 Filter: (ctid = '(1,1)'::tid)
2324 /*+NoSeqScan(t1) BitmapScan(t2)*/
2325 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2335 ------------------------------------------
2338 TID Cond: (ctid = '(1,1)'::tid)
2339 -> Bitmap Heap Scan on t2
2340 Recheck Cond: (id = t1.id)
2341 Filter: (ctid = '(1,1)'::tid)
2342 -> Bitmap Index Scan on t2_pkey
2343 Index Cond: (id = t1.id)
2346 /*+NoSeqScan(t1) TidScan(t2)*/
2347 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2357 -----------------------------------------
2359 Join Filter: (t1.id = t2.id)
2361 TID Cond: (ctid = '(1,1)'::tid)
2363 TID Cond: (ctid = '(1,1)'::tid)
2366 /*+NoSeqScan(t1) NoSeqScan(t2)*/
2367 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2377 -----------------------------------------
2379 Join Filter: (t1.id = t2.id)
2381 TID Cond: (ctid = '(1,1)'::tid)
2383 TID Cond: (ctid = '(1,1)'::tid)
2386 /*+NoSeqScan(t1) NoIndexScan(t2)*/
2387 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2397 -----------------------------------------
2399 Join Filter: (t1.id = t2.id)
2401 TID Cond: (ctid = '(1,1)'::tid)
2403 TID Cond: (ctid = '(1,1)'::tid)
2406 /*+NoSeqScan(t1) NoBitmapScan(t2)*/
2407 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2417 -----------------------------------------
2419 Join Filter: (t1.id = t2.id)
2421 TID Cond: (ctid = '(1,1)'::tid)
2423 TID Cond: (ctid = '(1,1)'::tid)
2426 /*+NoSeqScan(t1) NoTidScan(t2)*/
2427 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2437 -----------------------------------------
2440 TID Cond: (ctid = '(1,1)'::tid)
2441 -> Index Scan using t2_pkey on t2
2442 Index Cond: (id = t1.id)
2443 Filter: (ctid = '(1,1)'::tid)
2446 /*+NoIndexScan(t1)*/
2447 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2456 -----------------------------------------
2458 Join Filter: (t1.id = t2.id)
2460 TID Cond: (ctid = '(1,1)'::tid)
2462 TID Cond: (ctid = '(1,1)'::tid)
2465 /*+NoIndexScan(t2)*/
2466 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2475 -----------------------------------------
2477 Join Filter: (t1.id = t2.id)
2479 TID Cond: (ctid = '(1,1)'::tid)
2481 TID Cond: (ctid = '(1,1)'::tid)
2484 /*+NoIndexScan(t1) SeqScan(t2)*/
2485 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2495 -----------------------------------------
2497 Join Filter: (t1.id = t2.id)
2499 TID Cond: (ctid = '(1,1)'::tid)
2501 Filter: (ctid = '(1,1)'::tid)
2504 /*+NoIndexScan(t1) IndexScan(t2)*/
2505 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2515 -----------------------------------------
2518 TID Cond: (ctid = '(1,1)'::tid)
2519 -> Index Scan using t2_pkey on t2
2520 Index Cond: (id = t1.id)
2521 Filter: (ctid = '(1,1)'::tid)
2524 /*+NoIndexScan(t1) BitmapScan(t2)*/
2525 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2535 ------------------------------------------
2538 TID Cond: (ctid = '(1,1)'::tid)
2539 -> Bitmap Heap Scan on t2
2540 Recheck Cond: (id = t1.id)
2541 Filter: (ctid = '(1,1)'::tid)
2542 -> Bitmap Index Scan on t2_pkey
2543 Index Cond: (id = t1.id)
2546 /*+NoIndexScan(t1) TidScan(t2)*/
2547 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2557 -----------------------------------------
2559 Join Filter: (t1.id = t2.id)
2561 TID Cond: (ctid = '(1,1)'::tid)
2563 TID Cond: (ctid = '(1,1)'::tid)
2566 /*+NoIndexScan(t1) NoSeqScan(t2)*/
2567 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2577 -----------------------------------------
2579 Join Filter: (t1.id = t2.id)
2581 TID Cond: (ctid = '(1,1)'::tid)
2583 TID Cond: (ctid = '(1,1)'::tid)
2586 /*+NoIndexScan(t1) NoIndexScan(t2)*/
2587 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2597 -----------------------------------------
2599 Join Filter: (t1.id = t2.id)
2601 TID Cond: (ctid = '(1,1)'::tid)
2603 TID Cond: (ctid = '(1,1)'::tid)
2606 /*+NoIndexScan(t1) NoBitmapScan(t2)*/
2607 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2617 -----------------------------------------
2619 Join Filter: (t1.id = t2.id)
2621 TID Cond: (ctid = '(1,1)'::tid)
2623 TID Cond: (ctid = '(1,1)'::tid)
2626 /*+NoIndexScan(t1) NoTidScan(t2)*/
2627 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2637 -----------------------------------------
2640 TID Cond: (ctid = '(1,1)'::tid)
2641 -> Index Scan using t2_pkey on t2
2642 Index Cond: (id = t1.id)
2643 Filter: (ctid = '(1,1)'::tid)
2646 /*+NoBitmapScan(t1)*/
2647 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2656 -----------------------------------------
2658 Join Filter: (t1.id = t2.id)
2660 TID Cond: (ctid = '(1,1)'::tid)
2662 TID Cond: (ctid = '(1,1)'::tid)
2665 /*+NoBitmapScan(t2)*/
2666 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2675 -----------------------------------------
2677 Join Filter: (t1.id = t2.id)
2679 TID Cond: (ctid = '(1,1)'::tid)
2681 TID Cond: (ctid = '(1,1)'::tid)
2684 /*+NoBitmapScan(t1) SeqScan(t2)*/
2685 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2695 -----------------------------------------
2697 Join Filter: (t1.id = t2.id)
2699 TID Cond: (ctid = '(1,1)'::tid)
2701 Filter: (ctid = '(1,1)'::tid)
2704 /*+NoBitmapScan(t1) IndexScan(t2)*/
2705 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2715 -----------------------------------------
2718 TID Cond: (ctid = '(1,1)'::tid)
2719 -> Index Scan using t2_pkey on t2
2720 Index Cond: (id = t1.id)
2721 Filter: (ctid = '(1,1)'::tid)
2724 /*+NoBitmapScan(t1) BitmapScan(t2)*/
2725 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2735 ------------------------------------------
2738 TID Cond: (ctid = '(1,1)'::tid)
2739 -> Bitmap Heap Scan on t2
2740 Recheck Cond: (id = t1.id)
2741 Filter: (ctid = '(1,1)'::tid)
2742 -> Bitmap Index Scan on t2_pkey
2743 Index Cond: (id = t1.id)
2746 /*+NoBitmapScan(t1) TidScan(t2)*/
2747 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2757 -----------------------------------------
2759 Join Filter: (t1.id = t2.id)
2761 TID Cond: (ctid = '(1,1)'::tid)
2763 TID Cond: (ctid = '(1,1)'::tid)
2766 /*+NoBitmapScan(t1) NoSeqScan(t2)*/
2767 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2777 -----------------------------------------
2779 Join Filter: (t1.id = t2.id)
2781 TID Cond: (ctid = '(1,1)'::tid)
2783 TID Cond: (ctid = '(1,1)'::tid)
2786 /*+NoBitmapScan(t1) NoIndexScan(t2)*/
2787 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2797 -----------------------------------------
2799 Join Filter: (t1.id = t2.id)
2801 TID Cond: (ctid = '(1,1)'::tid)
2803 TID Cond: (ctid = '(1,1)'::tid)
2806 /*+NoBitmapScan(t1) NoBitmapScan(t2)*/
2807 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2817 -----------------------------------------
2819 Join Filter: (t1.id = t2.id)
2821 TID Cond: (ctid = '(1,1)'::tid)
2823 TID Cond: (ctid = '(1,1)'::tid)
2826 /*+NoBitmapScan(t1) NoTidScan(t2)*/
2827 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2837 -----------------------------------------
2840 TID Cond: (ctid = '(1,1)'::tid)
2841 -> Index Scan using t2_pkey on t2
2842 Index Cond: (id = t1.id)
2843 Filter: (ctid = '(1,1)'::tid)
2847 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2856 -----------------------------------------
2859 TID Cond: (ctid = '(1,1)'::tid)
2860 -> Index Scan using t1_pkey on t1
2861 Index Cond: (id = t2.id)
2862 Filter: (ctid = '(1,1)'::tid)
2866 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2875 -----------------------------------------
2878 TID Cond: (ctid = '(1,1)'::tid)
2879 -> Index Scan using t2_pkey on t2
2880 Index Cond: (id = t1.id)
2881 Filter: (ctid = '(1,1)'::tid)
2884 /*+NoTidScan(t1) SeqScan(t2)*/
2885 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2895 ---------------------------------------
2898 Filter: (ctid = '(1,1)'::tid)
2899 -> Index Scan using t1_pkey on t1
2900 Index Cond: (id = t2.id)
2901 Filter: (ctid = '(1,1)'::tid)
2904 /*+NoTidScan(t1) IndexScan(t2)*/
2905 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2915 ---------------------------------------
2917 -> Index Scan using t2_pkey on t2
2918 Filter: (ctid = '(1,1)'::tid)
2919 -> Index Scan using t1_pkey on t1
2920 Index Cond: (id = t2.id)
2921 Filter: (ctid = '(1,1)'::tid)
2924 /*+NoTidScan(t1) BitmapScan(t2)*/
2925 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2935 ------------------------------------------
2938 Filter: (ctid = '(1,1)'::tid)
2939 -> Bitmap Heap Scan on t2
2940 Recheck Cond: (id = t1.id)
2941 Filter: (ctid = '(1,1)'::tid)
2942 -> Bitmap Index Scan on t2_pkey
2943 Index Cond: (id = t1.id)
2946 /*+NoTidScan(t1) TidScan(t2)*/
2947 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2957 -----------------------------------------
2960 TID Cond: (ctid = '(1,1)'::tid)
2961 -> Index Scan using t1_pkey on t1
2962 Index Cond: (id = t2.id)
2963 Filter: (ctid = '(1,1)'::tid)
2966 /*+NoTidScan(t1) NoSeqScan(t2)*/
2967 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2977 -----------------------------------------
2980 TID Cond: (ctid = '(1,1)'::tid)
2981 -> Index Scan using t1_pkey on t1
2982 Index Cond: (id = t2.id)
2983 Filter: (ctid = '(1,1)'::tid)
2986 /*+NoTidScan(t1) NoIndexScan(t2)*/
2987 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
2997 -----------------------------------------
3000 TID Cond: (ctid = '(1,1)'::tid)
3001 -> Index Scan using t1_pkey on t1
3002 Index Cond: (id = t2.id)
3003 Filter: (ctid = '(1,1)'::tid)
3006 /*+NoTidScan(t1) NoBitmapScan(t2)*/
3007 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
3017 -----------------------------------------
3020 TID Cond: (ctid = '(1,1)'::tid)
3021 -> Index Scan using t1_pkey on t1
3022 Index Cond: (id = t2.id)
3023 Filter: (ctid = '(1,1)'::tid)
3026 /*+NoTidScan(t1) NoTidScan(t2)*/
3027 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
3037 ---------------------------------------
3040 Filter: (ctid = '(1,1)'::tid)
3041 -> Index Scan using t1_pkey on t1
3042 Index Cond: (id = t2.id)
3043 Filter: (ctid = '(1,1)'::tid)
3047 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;
3049 -----------------------------------------
3051 Join Filter: (t1.id = t2.id)
3053 TID Cond: (ctid = '(1,1)'::tid)
3056 TID Cond: (ctid = '(1,1)'::tid)
3060 /*+BitmapScan(t1) BitmapScan(t2)*/
3061 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;
3071 --------------------------------------------------------
3073 -> Bitmap Heap Scan on t2
3074 Recheck Cond: (id < 10)
3075 Filter: (ctid = '(1,1)'::tid)
3076 -> Bitmap Index Scan on t2_pkey
3077 Index Cond: (id < 10)
3078 -> Bitmap Heap Scan on t1
3079 Recheck Cond: ((id = t2.id) AND (id < 10))
3080 Filter: (ctid = '(1,1)'::tid)
3081 -> Bitmap Index Scan on t1_pkey
3082 Index Cond: ((id = t2.id) AND (id < 10))
3086 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
3088 ------------------------------
3090 Hash Cond: (t1.id = t2.id)
3096 /*+MergeJoin(t1 t2)*/
3097 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
3106 --------------------------------------
3108 Merge Cond: (t1.id = t2.id)
3109 -> Index Scan using t1_pkey on t1
3110 -> Index Scan using t2_pkey on t2
3114 /*+NestLoop(t1 t2)*/
3115 EXPLAIN (COSTS false) SELECT * FROM t1 FULL OUTER JOIN t2 ON (t1.id = t2.id);
3124 ------------------------------
3126 Hash Cond: (t1.id = t2.id)
3132 -- inheritance tables test
3133 SET constraint_exclusion TO off;
3134 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3136 -----------------------------------------------------------------------
3138 -> Seq Scan on p1 p1_1
3139 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3140 -> Seq Scan on p1_c1 p1_2
3141 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3142 -> Seq Scan on p1_c2 p1_3
3143 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3144 -> Seq Scan on p1_c3 p1_4
3145 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3146 -> Seq Scan on p1_c4 p1_5
3147 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3148 -> Seq Scan on p1_c1_c1 p1_6
3149 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3150 -> Seq Scan on p1_c1_c2 p1_7
3151 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3152 -> Seq Scan on p1_c3_c1 p1_8
3153 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3154 -> Seq Scan on p1_c3_c2 p1_9
3155 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3158 SET constraint_exclusion TO on;
3159 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3161 -----------------------------------------------------------------------
3163 -> Seq Scan on p1 p1_1
3164 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3165 -> Seq Scan on p1_c1 p1_2
3166 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3167 -> Seq Scan on p1_c1_c1 p1_3
3168 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3169 -> Seq Scan on p1_c1_c2 p1_4
3170 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3173 SET constraint_exclusion TO off;
3175 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3184 -----------------------------------------------------------------------
3186 -> Seq Scan on p1 p1_1
3187 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3188 -> Seq Scan on p1_c1 p1_2
3189 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3190 -> Seq Scan on p1_c2 p1_3
3191 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3192 -> Seq Scan on p1_c3 p1_4
3193 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3194 -> Seq Scan on p1_c4 p1_5
3195 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3196 -> Seq Scan on p1_c1_c1 p1_6
3197 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3198 -> Seq Scan on p1_c1_c2 p1_7
3199 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3200 -> Seq Scan on p1_c3_c1 p1_8
3201 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3202 -> Seq Scan on p1_c3_c2 p1_9
3203 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3207 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3216 -------------------------------------------------------
3218 -> Index Scan using p1_pkey on p1 p1_1
3219 Index Cond: ((id >= 50) AND (id <= 51))
3220 Filter: (ctid = '(1,1)'::tid)
3221 -> Index Scan using p1_c1_pkey on p1_c1 p1_2
3222 Index Cond: ((id >= 50) AND (id <= 51))
3223 Filter: (ctid = '(1,1)'::tid)
3224 -> Index Scan using p1_c2_pkey on p1_c2 p1_3
3225 Index Cond: ((id >= 50) AND (id <= 51))
3226 Filter: (ctid = '(1,1)'::tid)
3227 -> Index Scan using p1_c3_pkey on p1_c3 p1_4
3228 Index Cond: ((id >= 50) AND (id <= 51))
3229 Filter: (ctid = '(1,1)'::tid)
3230 -> Index Scan using p1_c4_pkey on p1_c4 p1_5
3231 Index Cond: ((id >= 50) AND (id <= 51))
3232 Filter: (ctid = '(1,1)'::tid)
3233 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_6
3234 Index Cond: ((id >= 50) AND (id <= 51))
3235 Filter: (ctid = '(1,1)'::tid)
3236 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_7
3237 Index Cond: ((id >= 50) AND (id <= 51))
3238 Filter: (ctid = '(1,1)'::tid)
3239 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1 p1_8
3240 Index Cond: ((id >= 50) AND (id <= 51))
3241 Filter: (ctid = '(1,1)'::tid)
3242 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2 p1_9
3243 Index Cond: ((id >= 50) AND (id <= 51))
3244 Filter: (ctid = '(1,1)'::tid)
3248 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3257 -------------------------------------------------------
3259 -> Bitmap Heap Scan on p1 p1_1
3260 Recheck Cond: ((id >= 50) AND (id <= 51))
3261 Filter: (ctid = '(1,1)'::tid)
3262 -> Bitmap Index Scan on p1_pkey
3263 Index Cond: ((id >= 50) AND (id <= 51))
3264 -> Bitmap Heap Scan on p1_c1 p1_2
3265 Recheck Cond: ((id >= 50) AND (id <= 51))
3266 Filter: (ctid = '(1,1)'::tid)
3267 -> Bitmap Index Scan on p1_c1_pkey
3268 Index Cond: ((id >= 50) AND (id <= 51))
3269 -> Bitmap Heap Scan on p1_c2 p1_3
3270 Recheck Cond: ((id >= 50) AND (id <= 51))
3271 Filter: (ctid = '(1,1)'::tid)
3272 -> Bitmap Index Scan on p1_c2_pkey
3273 Index Cond: ((id >= 50) AND (id <= 51))
3274 -> Bitmap Heap Scan on p1_c3 p1_4
3275 Recheck Cond: ((id >= 50) AND (id <= 51))
3276 Filter: (ctid = '(1,1)'::tid)
3277 -> Bitmap Index Scan on p1_c3_pkey
3278 Index Cond: ((id >= 50) AND (id <= 51))
3279 -> Bitmap Heap Scan on p1_c4 p1_5
3280 Recheck Cond: ((id >= 50) AND (id <= 51))
3281 Filter: (ctid = '(1,1)'::tid)
3282 -> Bitmap Index Scan on p1_c4_pkey
3283 Index Cond: ((id >= 50) AND (id <= 51))
3284 -> Bitmap Heap Scan on p1_c1_c1 p1_6
3285 Recheck Cond: ((id >= 50) AND (id <= 51))
3286 Filter: (ctid = '(1,1)'::tid)
3287 -> Bitmap Index Scan on p1_c1_c1_pkey
3288 Index Cond: ((id >= 50) AND (id <= 51))
3289 -> Bitmap Heap Scan on p1_c1_c2 p1_7
3290 Recheck Cond: ((id >= 50) AND (id <= 51))
3291 Filter: (ctid = '(1,1)'::tid)
3292 -> Bitmap Index Scan on p1_c1_c2_pkey
3293 Index Cond: ((id >= 50) AND (id <= 51))
3294 -> Bitmap Heap Scan on p1_c3_c1 p1_8
3295 Recheck Cond: ((id >= 50) AND (id <= 51))
3296 Filter: (ctid = '(1,1)'::tid)
3297 -> Bitmap Index Scan on p1_c3_c1_pkey
3298 Index Cond: ((id >= 50) AND (id <= 51))
3299 -> Bitmap Heap Scan on p1_c3_c2 p1_9
3300 Recheck Cond: ((id >= 50) AND (id <= 51))
3301 Filter: (ctid = '(1,1)'::tid)
3302 -> Bitmap Index Scan on p1_c3_c2_pkey
3303 Index Cond: ((id >= 50) AND (id <= 51))
3307 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3316 ---------------------------------------------
3318 -> Tid Scan on p1 p1_1
3319 TID Cond: (ctid = '(1,1)'::tid)
3320 Filter: ((id >= 50) AND (id <= 51))
3321 -> Tid Scan on p1_c1 p1_2
3322 TID Cond: (ctid = '(1,1)'::tid)
3323 Filter: ((id >= 50) AND (id <= 51))
3324 -> Tid Scan on p1_c2 p1_3
3325 TID Cond: (ctid = '(1,1)'::tid)
3326 Filter: ((id >= 50) AND (id <= 51))
3327 -> Tid Scan on p1_c3 p1_4
3328 TID Cond: (ctid = '(1,1)'::tid)
3329 Filter: ((id >= 50) AND (id <= 51))
3330 -> Tid Scan on p1_c4 p1_5
3331 TID Cond: (ctid = '(1,1)'::tid)
3332 Filter: ((id >= 50) AND (id <= 51))
3333 -> Tid Scan on p1_c1_c1 p1_6
3334 TID Cond: (ctid = '(1,1)'::tid)
3335 Filter: ((id >= 50) AND (id <= 51))
3336 -> Tid Scan on p1_c1_c2 p1_7
3337 TID Cond: (ctid = '(1,1)'::tid)
3338 Filter: ((id >= 50) AND (id <= 51))
3339 -> Tid Scan on p1_c3_c1 p1_8
3340 TID Cond: (ctid = '(1,1)'::tid)
3341 Filter: ((id >= 50) AND (id <= 51))
3342 -> Tid Scan on p1_c3_c2 p1_9
3343 TID Cond: (ctid = '(1,1)'::tid)
3344 Filter: ((id >= 50) AND (id <= 51))
3347 SET constraint_exclusion TO on;
3349 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3358 -----------------------------------------------------------------------
3360 -> Seq Scan on p1 p1_1
3361 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3362 -> Seq Scan on p1_c1 p1_2
3363 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3364 -> Seq Scan on p1_c1_c1 p1_3
3365 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3366 -> Seq Scan on p1_c1_c2 p1_4
3367 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3371 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3380 -------------------------------------------------------
3382 -> Index Scan using p1_pkey on p1 p1_1
3383 Index Cond: ((id >= 50) AND (id <= 51))
3384 Filter: (ctid = '(1,1)'::tid)
3385 -> Index Scan using p1_c1_pkey on p1_c1 p1_2
3386 Index Cond: ((id >= 50) AND (id <= 51))
3387 Filter: (ctid = '(1,1)'::tid)
3388 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_3
3389 Index Cond: ((id >= 50) AND (id <= 51))
3390 Filter: (ctid = '(1,1)'::tid)
3391 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_4
3392 Index Cond: ((id >= 50) AND (id <= 51))
3393 Filter: (ctid = '(1,1)'::tid)
3397 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3406 -------------------------------------------------------
3408 -> Bitmap Heap Scan on p1 p1_1
3409 Recheck Cond: ((id >= 50) AND (id <= 51))
3410 Filter: (ctid = '(1,1)'::tid)
3411 -> Bitmap Index Scan on p1_pkey
3412 Index Cond: ((id >= 50) AND (id <= 51))
3413 -> Bitmap Heap Scan on p1_c1 p1_2
3414 Recheck Cond: ((id >= 50) AND (id <= 51))
3415 Filter: (ctid = '(1,1)'::tid)
3416 -> Bitmap Index Scan on p1_c1_pkey
3417 Index Cond: ((id >= 50) AND (id <= 51))
3418 -> Bitmap Heap Scan on p1_c1_c1 p1_3
3419 Recheck Cond: ((id >= 50) AND (id <= 51))
3420 Filter: (ctid = '(1,1)'::tid)
3421 -> Bitmap Index Scan on p1_c1_c1_pkey
3422 Index Cond: ((id >= 50) AND (id <= 51))
3423 -> Bitmap Heap Scan on p1_c1_c2 p1_4
3424 Recheck Cond: ((id >= 50) AND (id <= 51))
3425 Filter: (ctid = '(1,1)'::tid)
3426 -> Bitmap Index Scan on p1_c1_c2_pkey
3427 Index Cond: ((id >= 50) AND (id <= 51))
3431 EXPLAIN (COSTS false) SELECT * FROM p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
3440 ---------------------------------------------
3442 -> Tid Scan on p1 p1_1
3443 TID Cond: (ctid = '(1,1)'::tid)
3444 Filter: ((id >= 50) AND (id <= 51))
3445 -> Tid Scan on p1_c1 p1_2
3446 TID Cond: (ctid = '(1,1)'::tid)
3447 Filter: ((id >= 50) AND (id <= 51))
3448 -> Tid Scan on p1_c1_c1 p1_3
3449 TID Cond: (ctid = '(1,1)'::tid)
3450 Filter: ((id >= 50) AND (id <= 51))
3451 -> Tid Scan on p1_c1_c2 p1_4
3452 TID Cond: (ctid = '(1,1)'::tid)
3453 Filter: ((id >= 50) AND (id <= 51))
3456 SET constraint_exclusion TO off;
3457 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;
3459 -----------------------------------------------------------------------------------
3461 Merge Cond: (p1.id = t1.id)
3465 -> Seq Scan on p1 p1_1
3466 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3467 -> Seq Scan on p1_c1 p1_2
3468 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3469 -> Seq Scan on p1_c2 p1_3
3470 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3471 -> Seq Scan on p1_c3 p1_4
3472 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3473 -> Seq Scan on p1_c4 p1_5
3474 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3475 -> Seq Scan on p1_c1_c1 p1_6
3476 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3477 -> Seq Scan on p1_c1_c2 p1_7
3478 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3479 -> Seq Scan on p1_c3_c1 p1_8
3480 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3481 -> Seq Scan on p1_c3_c2 p1_9
3482 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3483 -> Index Scan using t1_pkey on t1
3484 Index Cond: (id < 10)
3487 SET constraint_exclusion TO on;
3488 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;
3490 -----------------------------------------------------------------------------------
3492 Merge Cond: (p1.id = t1.id)
3496 -> Seq Scan on p1 p1_1
3497 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3498 -> Seq Scan on p1_c1 p1_2
3499 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3500 -> Seq Scan on p1_c1_c1 p1_3
3501 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3502 -> Seq Scan on p1_c1_c2 p1_4
3503 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3504 -> Index Scan using t1_pkey on t1
3505 Index Cond: (id < 10)
3508 SET constraint_exclusion TO off;
3510 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;
3519 -----------------------------------------------------------------------------------
3521 Merge Cond: (p1.id = t1.id)
3525 -> Seq Scan on p1 p1_1
3526 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3527 -> Seq Scan on p1_c1 p1_2
3528 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3529 -> Seq Scan on p1_c2 p1_3
3530 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3531 -> Seq Scan on p1_c3 p1_4
3532 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3533 -> Seq Scan on p1_c4 p1_5
3534 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3535 -> Seq Scan on p1_c1_c1 p1_6
3536 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3537 -> Seq Scan on p1_c1_c2 p1_7
3538 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3539 -> Seq Scan on p1_c3_c1 p1_8
3540 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3541 -> Seq Scan on p1_c3_c2 p1_9
3542 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
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)
3562 -> Index Scan using p1_pkey on p1 p1_1
3563 Index Cond: ((id >= 50) AND (id <= 51))
3564 Filter: (ctid = '(1,1)'::tid)
3565 -> Index Scan using p1_c1_pkey on p1_c1 p1_2
3566 Index Cond: ((id >= 50) AND (id <= 51))
3567 Filter: (ctid = '(1,1)'::tid)
3568 -> Index Scan using p1_c2_pkey on p1_c2 p1_3
3569 Index Cond: ((id >= 50) AND (id <= 51))
3570 Filter: (ctid = '(1,1)'::tid)
3571 -> Index Scan using p1_c3_pkey on p1_c3 p1_4
3572 Index Cond: ((id >= 50) AND (id <= 51))
3573 Filter: (ctid = '(1,1)'::tid)
3574 -> Index Scan using p1_c4_pkey on p1_c4 p1_5
3575 Index Cond: ((id >= 50) AND (id <= 51))
3576 Filter: (ctid = '(1,1)'::tid)
3577 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_6
3578 Index Cond: ((id >= 50) AND (id <= 51))
3579 Filter: (ctid = '(1,1)'::tid)
3580 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_7
3581 Index Cond: ((id >= 50) AND (id <= 51))
3582 Filter: (ctid = '(1,1)'::tid)
3583 -> Index Scan using p1_c3_c1_pkey on p1_c3_c1 p1_8
3584 Index Cond: ((id >= 50) AND (id <= 51))
3585 Filter: (ctid = '(1,1)'::tid)
3586 -> Index Scan using p1_c3_c2_pkey on p1_c3_c2 p1_9
3587 Index Cond: ((id >= 50) AND (id <= 51))
3588 Filter: (ctid = '(1,1)'::tid)
3589 -> Index Scan using t1_pkey on t1
3590 Index Cond: (id < 10)
3594 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;
3603 -------------------------------------------------------------------
3605 Merge Cond: (p1.id = t1.id)
3609 -> Bitmap Heap Scan on p1 p1_1
3610 Recheck Cond: ((id >= 50) AND (id <= 51))
3611 Filter: (ctid = '(1,1)'::tid)
3612 -> Bitmap Index Scan on p1_pkey
3613 Index Cond: ((id >= 50) AND (id <= 51))
3614 -> Bitmap Heap Scan on p1_c1 p1_2
3615 Recheck Cond: ((id >= 50) AND (id <= 51))
3616 Filter: (ctid = '(1,1)'::tid)
3617 -> Bitmap Index Scan on p1_c1_pkey
3618 Index Cond: ((id >= 50) AND (id <= 51))
3619 -> Bitmap Heap Scan on p1_c2 p1_3
3620 Recheck Cond: ((id >= 50) AND (id <= 51))
3621 Filter: (ctid = '(1,1)'::tid)
3622 -> Bitmap Index Scan on p1_c2_pkey
3623 Index Cond: ((id >= 50) AND (id <= 51))
3624 -> Bitmap Heap Scan on p1_c3 p1_4
3625 Recheck Cond: ((id >= 50) AND (id <= 51))
3626 Filter: (ctid = '(1,1)'::tid)
3627 -> Bitmap Index Scan on p1_c3_pkey
3628 Index Cond: ((id >= 50) AND (id <= 51))
3629 -> Bitmap Heap Scan on p1_c4 p1_5
3630 Recheck Cond: ((id >= 50) AND (id <= 51))
3631 Filter: (ctid = '(1,1)'::tid)
3632 -> Bitmap Index Scan on p1_c4_pkey
3633 Index Cond: ((id >= 50) AND (id <= 51))
3634 -> Bitmap Heap Scan on p1_c1_c1 p1_6
3635 Recheck Cond: ((id >= 50) AND (id <= 51))
3636 Filter: (ctid = '(1,1)'::tid)
3637 -> Bitmap Index Scan on p1_c1_c1_pkey
3638 Index Cond: ((id >= 50) AND (id <= 51))
3639 -> Bitmap Heap Scan on p1_c1_c2 p1_7
3640 Recheck Cond: ((id >= 50) AND (id <= 51))
3641 Filter: (ctid = '(1,1)'::tid)
3642 -> Bitmap Index Scan on p1_c1_c2_pkey
3643 Index Cond: ((id >= 50) AND (id <= 51))
3644 -> Bitmap Heap Scan on p1_c3_c1 p1_8
3645 Recheck Cond: ((id >= 50) AND (id <= 51))
3646 Filter: (ctid = '(1,1)'::tid)
3647 -> Bitmap Index Scan on p1_c3_c1_pkey
3648 Index Cond: ((id >= 50) AND (id <= 51))
3649 -> Bitmap Heap Scan on p1_c3_c2 p1_9
3650 Recheck Cond: ((id >= 50) AND (id <= 51))
3651 Filter: (ctid = '(1,1)'::tid)
3652 -> Bitmap Index Scan on p1_c3_c2_pkey
3653 Index Cond: ((id >= 50) AND (id <= 51))
3654 -> Index Scan using t1_pkey on t1
3655 Index Cond: (id < 10)
3659 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;
3668 ---------------------------------------------------------
3670 Merge Cond: (p1.id = t1.id)
3674 -> Tid Scan on p1 p1_1
3675 TID Cond: (ctid = '(1,1)'::tid)
3676 Filter: ((id >= 50) AND (id <= 51))
3677 -> Tid Scan on p1_c1 p1_2
3678 TID Cond: (ctid = '(1,1)'::tid)
3679 Filter: ((id >= 50) AND (id <= 51))
3680 -> Tid Scan on p1_c2 p1_3
3681 TID Cond: (ctid = '(1,1)'::tid)
3682 Filter: ((id >= 50) AND (id <= 51))
3683 -> Tid Scan on p1_c3 p1_4
3684 TID Cond: (ctid = '(1,1)'::tid)
3685 Filter: ((id >= 50) AND (id <= 51))
3686 -> Tid Scan on p1_c4 p1_5
3687 TID Cond: (ctid = '(1,1)'::tid)
3688 Filter: ((id >= 50) AND (id <= 51))
3689 -> Tid Scan on p1_c1_c1 p1_6
3690 TID Cond: (ctid = '(1,1)'::tid)
3691 Filter: ((id >= 50) AND (id <= 51))
3692 -> Tid Scan on p1_c1_c2 p1_7
3693 TID Cond: (ctid = '(1,1)'::tid)
3694 Filter: ((id >= 50) AND (id <= 51))
3695 -> Tid Scan on p1_c3_c1 p1_8
3696 TID Cond: (ctid = '(1,1)'::tid)
3697 Filter: ((id >= 50) AND (id <= 51))
3698 -> Tid Scan on p1_c3_c2 p1_9
3699 TID Cond: (ctid = '(1,1)'::tid)
3700 Filter: ((id >= 50) AND (id <= 51))
3701 -> Index Scan using t1_pkey on t1
3702 Index Cond: (id < 10)
3705 /*+NestLoop(p1 t1)*/
3706 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;
3715 -----------------------------------------------------------------------------
3717 Join Filter: (p1.id = t1.id)
3719 -> Seq Scan on p1 p1_1
3720 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3721 -> Seq Scan on p1_c1 p1_2
3722 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3723 -> Seq Scan on p1_c2 p1_3
3724 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3725 -> Seq Scan on p1_c3 p1_4
3726 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3727 -> Seq Scan on p1_c4 p1_5
3728 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3729 -> Seq Scan on p1_c1_c1 p1_6
3730 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3731 -> Seq Scan on p1_c1_c2 p1_7
3732 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3733 -> Seq Scan on p1_c3_c1 p1_8
3734 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3735 -> Seq Scan on p1_c3_c2 p1_9
3736 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3738 -> Index Scan using t1_pkey on t1
3739 Index Cond: (id < 10)
3742 /*+MergeJoin(p1 t1)*/
3743 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;
3752 -----------------------------------------------------------------------------------
3754 Merge Cond: (p1.id = t1.id)
3758 -> Seq Scan on p1 p1_1
3759 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3760 -> Seq Scan on p1_c1 p1_2
3761 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3762 -> Seq Scan on p1_c2 p1_3
3763 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3764 -> Seq Scan on p1_c3 p1_4
3765 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3766 -> Seq Scan on p1_c4 p1_5
3767 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3768 -> Seq Scan on p1_c1_c1 p1_6
3769 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3770 -> Seq Scan on p1_c1_c2 p1_7
3771 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3772 -> Seq Scan on p1_c3_c1 p1_8
3773 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3774 -> Seq Scan on p1_c3_c2 p1_9
3775 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3776 -> Index Scan using t1_pkey on t1
3777 Index Cond: (id < 10)
3780 /*+HashJoin(p1 t1)*/
3781 EXPLAIN (COSTS false) SELECT * FROM p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
3790 -----------------------------------------------------------------------------
3792 Hash Cond: (p1.id = t1.id)
3794 -> Seq Scan on p1 p1_1
3795 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3796 -> Seq Scan on p1_c1 p1_2
3797 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3798 -> Seq Scan on p1_c2 p1_3
3799 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3800 -> Seq Scan on p1_c3 p1_4
3801 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3802 -> Seq Scan on p1_c4 p1_5
3803 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3804 -> Seq Scan on p1_c1_c1 p1_6
3805 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3806 -> Seq Scan on p1_c1_c2 p1_7
3807 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3808 -> Seq Scan on p1_c3_c1 p1_8
3809 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3810 -> Seq Scan on p1_c3_c2 p1_9
3811 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3813 -> Index Scan using t1_pkey on t1
3814 Index Cond: (id < 10)
3817 SET constraint_exclusion TO on;
3819 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;
3828 -----------------------------------------------------------------------------------
3830 Merge Cond: (p1.id = t1.id)
3834 -> Seq Scan on p1 p1_1
3835 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3836 -> Seq Scan on p1_c1 p1_2
3837 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3838 -> Seq Scan on p1_c1_c1 p1_3
3839 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3840 -> Seq Scan on p1_c1_c2 p1_4
3841 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3842 -> Index Scan using t1_pkey on t1
3843 Index Cond: (id < 10)
3847 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;
3856 -------------------------------------------------------------
3858 Merge Cond: (p1.id = t1.id)
3861 -> Index Scan using p1_pkey on p1 p1_1
3862 Index Cond: ((id >= 50) AND (id <= 51))
3863 Filter: (ctid = '(1,1)'::tid)
3864 -> Index Scan using p1_c1_pkey on p1_c1 p1_2
3865 Index Cond: ((id >= 50) AND (id <= 51))
3866 Filter: (ctid = '(1,1)'::tid)
3867 -> Index Scan using p1_c1_c1_pkey on p1_c1_c1 p1_3
3868 Index Cond: ((id >= 50) AND (id <= 51))
3869 Filter: (ctid = '(1,1)'::tid)
3870 -> Index Scan using p1_c1_c2_pkey on p1_c1_c2 p1_4
3871 Index Cond: ((id >= 50) AND (id <= 51))
3872 Filter: (ctid = '(1,1)'::tid)
3873 -> Index Scan using t1_pkey on t1
3874 Index Cond: (id < 10)
3878 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;
3887 -------------------------------------------------------------------
3889 Merge Cond: (p1.id = t1.id)
3893 -> Bitmap Heap Scan on p1 p1_1
3894 Recheck Cond: ((id >= 50) AND (id <= 51))
3895 Filter: (ctid = '(1,1)'::tid)
3896 -> Bitmap Index Scan on p1_pkey
3897 Index Cond: ((id >= 50) AND (id <= 51))
3898 -> Bitmap Heap Scan on p1_c1 p1_2
3899 Recheck Cond: ((id >= 50) AND (id <= 51))
3900 Filter: (ctid = '(1,1)'::tid)
3901 -> Bitmap Index Scan on p1_c1_pkey
3902 Index Cond: ((id >= 50) AND (id <= 51))
3903 -> Bitmap Heap Scan on p1_c1_c1 p1_3
3904 Recheck Cond: ((id >= 50) AND (id <= 51))
3905 Filter: (ctid = '(1,1)'::tid)
3906 -> Bitmap Index Scan on p1_c1_c1_pkey
3907 Index Cond: ((id >= 50) AND (id <= 51))
3908 -> Bitmap Heap Scan on p1_c1_c2 p1_4
3909 Recheck Cond: ((id >= 50) AND (id <= 51))
3910 Filter: (ctid = '(1,1)'::tid)
3911 -> Bitmap Index Scan on p1_c1_c2_pkey
3912 Index Cond: ((id >= 50) AND (id <= 51))
3913 -> Index Scan using t1_pkey on t1
3914 Index Cond: (id < 10)
3918 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;
3927 ---------------------------------------------------------
3929 Merge Cond: (p1.id = t1.id)
3933 -> Tid Scan on p1 p1_1
3934 TID Cond: (ctid = '(1,1)'::tid)
3935 Filter: ((id >= 50) AND (id <= 51))
3936 -> Tid Scan on p1_c1 p1_2
3937 TID Cond: (ctid = '(1,1)'::tid)
3938 Filter: ((id >= 50) AND (id <= 51))
3939 -> Tid Scan on p1_c1_c1 p1_3
3940 TID Cond: (ctid = '(1,1)'::tid)
3941 Filter: ((id >= 50) AND (id <= 51))
3942 -> Tid Scan on p1_c1_c2 p1_4
3943 TID Cond: (ctid = '(1,1)'::tid)
3944 Filter: ((id >= 50) AND (id <= 51))
3945 -> Index Scan using t1_pkey on t1
3946 Index Cond: (id < 10)
3949 /*+NestLoop(p1 t1)*/
3950 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;
3959 -----------------------------------------------------------------------------------
3961 Join Filter: (p1.id = t1.id)
3962 -> Index Scan using t1_pkey on t1
3963 Index Cond: (id < 10)
3966 -> Seq Scan on p1 p1_1
3967 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3968 -> Seq Scan on p1_c1 p1_2
3969 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3970 -> Seq Scan on p1_c1_c1 p1_3
3971 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3972 -> Seq Scan on p1_c1_c2 p1_4
3973 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3976 /*+MergeJoin(p1 t1)*/
3977 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;
3986 -----------------------------------------------------------------------------------
3988 Merge Cond: (p1.id = t1.id)
3992 -> Seq Scan on p1 p1_1
3993 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3994 -> Seq Scan on p1_c1 p1_2
3995 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3996 -> Seq Scan on p1_c1_c1 p1_3
3997 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
3998 -> Seq Scan on p1_c1_c2 p1_4
3999 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4000 -> Index Scan using t1_pkey on t1
4001 Index Cond: (id < 10)
4004 /*+HashJoin(p1 t1)*/
4005 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;
4014 -----------------------------------------------------------------------------------
4016 Hash Cond: (t1.id = p1.id)
4017 -> Index Scan using t1_pkey on t1
4018 Index Cond: (id < 10)
4021 -> Seq Scan on p1 p1_1
4022 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4023 -> Seq Scan on p1_c1 p1_2
4024 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4025 -> Seq Scan on p1_c1_c1 p1_3
4026 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4027 -> Seq Scan on p1_c1_c2 p1_4
4028 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4031 SET constraint_exclusion TO off;
4032 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4034 -----------------------------------------------------------------
4036 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4039 SET constraint_exclusion TO on;
4040 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4042 -----------------------------------------------------------------
4044 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4047 SET constraint_exclusion TO off;
4049 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4058 -----------------------------------------------------------------
4060 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4064 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4073 -------------------------------------------
4074 Index Scan using p1_pkey on p1
4075 Index Cond: ((id >= 50) AND (id <= 51))
4076 Filter: (ctid = '(1,1)'::tid)
4080 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4089 -------------------------------------------------
4090 Bitmap Heap Scan on p1
4091 Recheck Cond: ((id >= 50) AND (id <= 51))
4092 Filter: (ctid = '(1,1)'::tid)
4093 -> Bitmap Index Scan on p1_pkey
4094 Index Cond: ((id >= 50) AND (id <= 51))
4098 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4107 ---------------------------------------
4109 TID Cond: (ctid = '(1,1)'::tid)
4110 Filter: ((id >= 50) AND (id <= 51))
4113 /*+NestLoop(p1 t1)*/
4114 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;
4123 -----------------------------------------------------------------------
4125 Join Filter: (p1.id = t1.id)
4127 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4128 -> Index Scan using t1_pkey on t1
4129 Index Cond: (id < 10)
4132 /*+MergeJoin(p1 t1)*/
4133 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4142 -----------------------------------------------------------------------------
4144 Merge Cond: (p1.id = t1.id)
4148 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4149 -> Index Scan using t1_pkey on t1
4150 Index Cond: (id < 10)
4153 /*+HashJoin(p1 t1)*/
4154 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;
4163 -----------------------------------------------------------------------------
4165 Hash Cond: (t1.id = p1.id)
4166 -> Index Scan using t1_pkey on t1
4167 Index Cond: (id < 10)
4170 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4173 SET constraint_exclusion TO on;
4175 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4184 -----------------------------------------------------------------
4186 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4190 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4199 -------------------------------------------
4200 Index Scan using p1_pkey on p1
4201 Index Cond: ((id >= 50) AND (id <= 51))
4202 Filter: (ctid = '(1,1)'::tid)
4206 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4215 -------------------------------------------------
4216 Bitmap Heap Scan on p1
4217 Recheck Cond: ((id >= 50) AND (id <= 51))
4218 Filter: (ctid = '(1,1)'::tid)
4219 -> Bitmap Index Scan on p1_pkey
4220 Index Cond: ((id >= 50) AND (id <= 51))
4224 EXPLAIN (COSTS false) SELECT * FROM ONLY p1 WHERE id >= 50 AND id <= 51 AND p1.ctid = '(1,1)';
4233 ---------------------------------------
4235 TID Cond: (ctid = '(1,1)'::tid)
4236 Filter: ((id >= 50) AND (id <= 51))
4239 /*+NestLoop(p1 t1)*/
4240 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;
4249 -----------------------------------------------------------------------
4251 Join Filter: (p1.id = t1.id)
4253 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4254 -> Index Scan using t1_pkey on t1
4255 Index Cond: (id < 10)
4258 /*+MergeJoin(p1 t1)*/
4259 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4268 -----------------------------------------------------------------------------
4270 Merge Cond: (p1.id = t1.id)
4274 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4275 -> Index Scan using t1_pkey on t1
4276 Index Cond: (id < 10)
4279 /*+HashJoin(p1 t1)*/
4280 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4289 -----------------------------------------------------------------------------
4291 Hash Cond: (t1.id = p1.id)
4292 -> Index Scan using t1_pkey on t1
4293 Index Cond: (id < 10)
4296 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4299 SET constraint_exclusion TO off;
4300 EXPLAIN (COSTS false) SELECT * FROM ONLY p1, t1 WHERE p1.id >= 50 AND p1.id <= 51 AND p1.ctid = '(1,1)' AND p1.id = t1.id AND t1.id < 10;
4302 -----------------------------------------------------------------------
4304 Join Filter: (p1.id = t1.id)
4306 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4307 -> Index Scan using t1_pkey on t1
4308 Index Cond: (id < 10)
4311 SET constraint_exclusion TO on;
4312 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;
4314 -----------------------------------------------------------------------
4316 Join Filter: (p1.id = t1.id)
4318 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4319 -> Index Scan using t1_pkey on t1
4320 Index Cond: (id < 10)
4323 SET constraint_exclusion TO off;
4325 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;
4334 -----------------------------------------------------------------------
4336 Join Filter: (p1.id = t1.id)
4338 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4339 -> Index Scan using t1_pkey on t1
4340 Index Cond: (id < 10)
4344 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;
4353 -------------------------------------------------
4355 Merge Cond: (p1.id = t1.id)
4356 -> Index Scan using p1_pkey on p1
4357 Index Cond: ((id >= 50) AND (id <= 51))
4358 Filter: (ctid = '(1,1)'::tid)
4359 -> Index Scan using t1_pkey on t1
4360 Index Cond: (id < 10)
4364 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;
4373 -------------------------------------------------------
4375 Join Filter: (p1.id = t1.id)
4376 -> Bitmap Heap Scan on p1
4377 Recheck Cond: ((id >= 50) AND (id <= 51))
4378 Filter: (ctid = '(1,1)'::tid)
4379 -> Bitmap Index Scan on p1_pkey
4380 Index Cond: ((id >= 50) AND (id <= 51))
4381 -> Index Scan using t1_pkey on t1
4382 Index Cond: (id < 10)
4386 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;
4395 ---------------------------------------------
4397 Join Filter: (p1.id = t1.id)
4399 TID Cond: (ctid = '(1,1)'::tid)
4400 Filter: ((id >= 50) AND (id <= 51))
4401 -> Index Scan using t1_pkey on t1
4402 Index Cond: (id < 10)
4405 SET constraint_exclusion TO on;
4407 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;
4416 -----------------------------------------------------------------------
4418 Join Filter: (p1.id = t1.id)
4420 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
4421 -> Index Scan using t1_pkey on t1
4422 Index Cond: (id < 10)
4426 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;
4435 -------------------------------------------------
4437 Merge Cond: (p1.id = t1.id)
4438 -> Index Scan using p1_pkey on p1
4439 Index Cond: ((id >= 50) AND (id <= 51))
4440 Filter: (ctid = '(1,1)'::tid)
4441 -> Index Scan using t1_pkey on t1
4442 Index Cond: (id < 10)
4446 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;
4455 -------------------------------------------------------
4457 Join Filter: (p1.id = t1.id)
4458 -> Bitmap Heap Scan on p1
4459 Recheck Cond: ((id >= 50) AND (id <= 51))
4460 Filter: (ctid = '(1,1)'::tid)
4461 -> Bitmap Index Scan on p1_pkey
4462 Index Cond: ((id >= 50) AND (id <= 51))
4463 -> Index Scan using t1_pkey on t1
4464 Index Cond: (id < 10)
4468 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;
4477 ---------------------------------------------
4479 Join Filter: (p1.id = t1.id)
4481 TID Cond: (ctid = '(1,1)'::tid)
4482 Filter: ((id >= 50) AND (id <= 51))
4483 -> Index Scan using t1_pkey on t1
4484 Index Cond: (id < 10)
4488 /*+SeqScan("""t1 ) ")IndexScan("t 2 """)HashJoin("""t1 ) "T3"t 2 """)Leading("""t1 ) "T3"t 2 """)Set(application_name"a a a"" a A")*/
4489 EXPLAIN (COSTS false) SELECT * FROM t1 """t1 ) ", t2 "t 2 """, t3 "T3" WHERE """t1 ) ".id = "t 2 """.id AND """t1 ) ".id = "T3".id;
4494 HashJoin("""t1 ) " T3 "t 2 """)
4495 Leading("""t1 ) " T3 "t 2 """)
4496 Set(application_name "a a a"" a A")
4502 ---------------------------------------------------------
4504 Hash Cond: ("t 2 """.id = """t1 ) ".id)
4505 -> Index Scan using t2_pkey on t2 "t 2 """
4508 Hash Cond: ("""t1 ) ".id = "T3".id)
4509 -> Seq Scan on t1 """t1 ) "
4511 -> Seq Scan on t3 "T3"
4514 -- duplicate hint test
4515 /*+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)*/
4516 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)' AND t2.ctid = '(1,1)';
4517 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)"
4518 DETAIL: Conflict scan method hint.
4519 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)"
4520 DETAIL: Conflict scan method hint.
4521 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)"
4522 DETAIL: Conflict scan method hint.
4523 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)"
4524 DETAIL: Conflict scan method hint.
4525 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)"
4526 DETAIL: Conflict scan method hint.
4527 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)"
4528 DETAIL: Conflict scan method hint.
4529 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)"
4530 DETAIL: Conflict join method hint.
4531 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)"
4532 DETAIL: Conflict join method hint.
4533 INFO: pg_hint_plan: hint syntax error at or near "Set(enable_seqscan off)Set(enable_mergejoin on)Set(enable_seqscan on)"
4534 DETAIL: Conflict set hint.
4535 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)"
4536 DETAIL: Conflict leading hint.
4543 Set(enable_mergejoin on)
4544 Set(enable_seqscan on)
4556 Set(enable_seqscan off)
4560 -----------------------------------------------
4562 Merge Cond: (t1.id = t2.id)
4566 TID Cond: (ctid = '(1,1)'::tid)
4570 TID Cond: (ctid = '(1,1)'::tid)
4573 -- sub query Leading hint test
4574 SET from_collapse_limit TO 100;
4575 SET geqo_threshold TO 100;
4576 EXPLAIN (COSTS false)
4578 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
4581 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
4582 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4583 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
4584 ) 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 = (
4585 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
4588 ------------------------------------------------------------------------------
4590 InitPlan 1 (returns $0)
4593 Merge Cond: (t1_2.id = t3_2.id)
4595 Merge Cond: (t1_2.id = t2_2.id)
4596 -> Index Only Scan using t1_pkey on t1 t1_2
4597 -> Index Only Scan using t2_pkey on t2 t2_2
4600 -> Seq Scan on t3 t3_2
4601 InitPlan 2 (returns $1)
4604 Merge Cond: (t1_4.id = t3_4.id)
4606 Merge Cond: (t1_4.id = t2_4.id)
4607 -> Index Only Scan using t1_pkey on t1 t1_4
4608 -> Index Only Scan using t2_pkey on t2 t2_4
4611 -> Seq Scan on t3 t3_4
4617 -> Index Only Scan using t1_pkey on t1 t1_1
4618 Index Cond: (id = $1)
4619 -> Index Only Scan using t2_pkey on t2 t2_1
4620 Index Cond: (id = $1)
4621 -> Seq Scan on t3 t3_1
4623 -> Index Only Scan using t1_pkey on t1 t1_3
4624 Index Cond: (id = $1)
4625 -> Index Only Scan using t2_pkey on t2 t2_3
4626 Index Cond: (id = $1)
4627 -> Seq Scan on t3 t3_3
4630 Filter: (max(t1_5.id) = $1)
4632 Merge Cond: (t1_5.id = t3_5.id)
4634 Merge Cond: (t1_5.id = t2_5.id)
4635 -> Index Only Scan using t1_pkey on t1 t1_5
4636 -> Index Only Scan using t2_pkey on t2 t2_5
4639 -> Seq Scan on t3 t3_5
4642 /*+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)*/
4643 EXPLAIN (COSTS false)
4645 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
4648 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
4649 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4650 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
4651 ) 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 = (
4652 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
4658 MergeJoin(t1_3 t3_3)
4666 ------------------------------------------------------------------------------
4668 InitPlan 1 (returns $1)
4671 Merge Cond: (t1_2.id = t3_2.id)
4673 -> Index Only Scan using t2_pkey on t2 t2_2
4674 -> Index Only Scan using t1_pkey on t1 t1_2
4675 Index Cond: (id = t2_2.id)
4678 -> Seq Scan on t3 t3_2
4679 InitPlan 2 (returns $3)
4682 Merge Cond: (t1_4.id = t3_4.id)
4684 -> Index Only Scan using t2_pkey on t2 t2_4
4685 -> Index Only Scan using t1_pkey on t1 t1_4
4686 Index Cond: (id = t2_4.id)
4689 -> Seq Scan on t3 t3_4
4695 -> Index Only Scan using t1_pkey on t1 t1_1
4696 Index Cond: (id = $3)
4697 -> Index Only Scan using t2_pkey on t2 t2_1
4698 Index Cond: (id = $3)
4699 -> Seq Scan on t3 t3_1
4701 -> Index Only Scan using t1_pkey on t1 t1_3
4702 Index Cond: (id = $3)
4703 -> Index Only Scan using t2_pkey on t2 t2_3
4704 Index Cond: (id = $3)
4705 -> Seq Scan on t3 t3_3
4708 Filter: (max(t1_5.id) = $3)
4710 Merge Cond: (t1_5.id = t3_5.id)
4712 -> Index Only Scan using t2_pkey on t2 t2_5
4713 -> Index Only Scan using t1_pkey on t1 t1_5
4714 Index Cond: (id = t2_5.id)
4717 -> Seq Scan on t3 t3_5
4720 /*+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)*/
4721 EXPLAIN (COSTS false)
4723 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
4726 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
4727 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4728 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
4729 ) 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 = (
4730 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
4736 MergeJoin(t1_3 t3_3)
4740 Leading(a t1_1 t1_2 t1_4 t1_5)
4745 ------------------------------------------------------------------------------
4747 InitPlan 1 (returns $1)
4750 Merge Cond: (t1_2.id = t3_2.id)
4752 -> Index Only Scan using t2_pkey on t2 t2_2
4753 -> Index Only Scan using t1_pkey on t1 t1_2
4754 Index Cond: (id = t2_2.id)
4757 -> Seq Scan on t3 t3_2
4758 InitPlan 2 (returns $3)
4761 Merge Cond: (t1_4.id = t3_4.id)
4763 -> Index Only Scan using t2_pkey on t2 t2_4
4764 -> Index Only Scan using t1_pkey on t1 t1_4
4765 Index Cond: (id = t2_4.id)
4768 -> Seq Scan on t3 t3_4
4774 -> Index Only Scan using t1_pkey on t1 t1_1
4775 Index Cond: (id = $3)
4776 -> Index Only Scan using t2_pkey on t2 t2_1
4777 Index Cond: (id = $3)
4778 -> Seq Scan on t3 t3_1
4780 -> Index Only Scan using t1_pkey on t1 t1_3
4781 Index Cond: (id = $3)
4782 -> Index Only Scan using t2_pkey on t2 t2_3
4783 Index Cond: (id = $3)
4784 -> Seq Scan on t3 t3_3
4787 Filter: (max(t1_5.id) = $3)
4789 Merge Cond: (t1_5.id = t3_5.id)
4791 -> Index Only Scan using t2_pkey on t2 t2_5
4792 -> Index Only Scan using t1_pkey on t1 t1_5
4793 Index Cond: (id = t2_5.id)
4796 -> Seq Scan on t3 t3_5
4799 /*+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)*/
4800 EXPLAIN (COSTS false)
4802 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
4805 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
4806 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4807 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
4808 ) 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 = (
4809 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
4815 MergeJoin(t1_3 t3_3)
4819 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)
4824 ------------------------------------------------------------------------------
4826 InitPlan 1 (returns $1)
4829 Merge Cond: (t1_2.id = t3_2.id)
4831 -> Index Only Scan using t2_pkey on t2 t2_2
4832 -> Index Only Scan using t1_pkey on t1 t1_2
4833 Index Cond: (id = t2_2.id)
4836 -> Seq Scan on t3 t3_2
4837 InitPlan 2 (returns $3)
4840 Merge Cond: (t1_4.id = t3_4.id)
4842 -> Index Only Scan using t2_pkey on t2 t2_4
4843 -> Index Only Scan using t1_pkey on t1 t1_4
4844 Index Cond: (id = t2_4.id)
4847 -> Seq Scan on t3 t3_4
4853 -> Index Only Scan using t1_pkey on t1 t1_1
4854 Index Cond: (id = $3)
4855 -> Index Only Scan using t2_pkey on t2 t2_1
4856 Index Cond: (id = $3)
4857 -> Seq Scan on t3 t3_1
4859 -> Index Only Scan using t1_pkey on t1 t1_3
4860 Index Cond: (id = $3)
4861 -> Index Only Scan using t2_pkey on t2 t2_3
4862 Index Cond: (id = $3)
4863 -> Seq Scan on t3 t3_3
4866 Filter: (max(t1_5.id) = $3)
4868 Merge Cond: (t1_5.id = t3_5.id)
4870 -> Index Only Scan using t2_pkey on t2 t2_5
4871 -> Index Only Scan using t1_pkey on t1 t1_5
4872 Index Cond: (id = t2_5.id)
4875 -> Seq Scan on t3 t3_5
4878 /*+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)*/
4879 EXPLAIN (COSTS false)
4881 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
4884 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
4885 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4886 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
4887 ) 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 = (
4888 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
4892 Leading(t3_5 t2_5 t1_5)
4893 Leading(t3_2 t2_2 t1_2)
4894 Leading(t3_4 t2_4 t1_4)
4895 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
4899 MergeJoin(t1_3 t3_3)
4906 ------------------------------------------------------------------------------------------------
4908 InitPlan 1 (returns $0)
4911 Merge Cond: (t2_2.id = t1_2.id)
4913 Merge Cond: (t2_2.id = t3_2.id)
4914 -> Index Only Scan using t2_pkey on t2 t2_2
4917 -> Seq Scan on t3 t3_2
4918 -> Index Only Scan using t1_pkey on t1 t1_2
4919 InitPlan 2 (returns $1)
4922 Merge Cond: (t2_4.id = t1_4.id)
4924 Merge Cond: (t2_4.id = t3_4.id)
4925 -> Index Only Scan using t2_pkey on t2 t2_4
4928 -> Seq Scan on t3 t3_4
4929 -> Index Only Scan using t1_pkey on t1 t1_4
4935 -> Seq Scan on t3 t3_3
4938 Filter: (max(t1_5.id) = $1)
4940 Merge Cond: (t2_5.id = t1_5.id)
4942 Merge Cond: (t2_5.id = t3_5.id)
4943 -> Index Only Scan using t2_pkey on t2 t2_5
4946 -> Seq Scan on t3 t3_5
4947 -> Index Only Scan using t1_pkey on t1 t1_5
4948 -> Index Only Scan using t2_pkey on t2 t2_3
4949 Index Cond: (id = $1)
4950 -> Index Only Scan using t1_pkey on t1 t1_3
4951 Index Cond: (id = $1)
4952 -> Seq Scan on t3 t3_1
4954 -> Index Only Scan using t2_pkey on t2 t2_1
4955 Index Cond: (id = $1)
4956 -> Index Only Scan using t1_pkey on t1 t1_1
4957 Index Cond: (id = $1)
4960 SET from_collapse_limit TO 1;
4961 EXPLAIN (COSTS false)
4963 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
4966 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
4967 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
4968 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
4969 ) 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 = (
4970 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
4973 --------------------------------------------------------------------
4975 InitPlan 1 (returns $0)
4978 Merge Cond: (t1_2.id = t3_2.id)
4980 Merge Cond: (t1_2.id = t2_2.id)
4981 -> Index Only Scan using t1_pkey on t1 t1_2
4982 -> Index Only Scan using t2_pkey on t2 t2_2
4985 -> Seq Scan on t3 t3_2
4986 InitPlan 2 (returns $1)
4989 Merge Cond: (t1_4.id = t3_4.id)
4991 Merge Cond: (t1_4.id = t2_4.id)
4992 -> Index Only Scan using t1_pkey on t1 t1_4
4993 -> Index Only Scan using t2_pkey on t2 t2_4
4996 -> Seq Scan on t3 t3_4
5000 -> Index Only Scan using t1_pkey on t1 t1_1
5001 Index Cond: (id = $1)
5002 -> Index Only Scan using t2_pkey on t2 t2_1
5003 Index Cond: (id = $1)
5004 -> Seq Scan on t3 t3_1
5008 -> Index Only Scan using t1_pkey on t1 t1_3
5009 Index Cond: (id = $1)
5010 -> Index Only Scan using t2_pkey on t2 t2_3
5011 Index Cond: (id = $1)
5012 -> Seq Scan on t3 t3_3
5015 Filter: (max(t1_5.id) = $1)
5017 Merge Cond: (t1_5.id = t3_5.id)
5019 Merge Cond: (t1_5.id = t2_5.id)
5020 -> Index Only Scan using t1_pkey on t1 t1_5
5021 -> Index Only Scan using t2_pkey on t2 t2_5
5024 -> Seq Scan on t3 t3_5
5027 /*+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)*/
5028 EXPLAIN (COSTS false)
5030 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
5033 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
5034 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5035 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
5036 ) 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 = (
5037 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
5043 MergeJoin(t1_3 t3_3)
5051 --------------------------------------------------------------------
5053 InitPlan 1 (returns $1)
5056 Merge Cond: (t1_2.id = t3_2.id)
5058 -> Index Only Scan using t2_pkey on t2 t2_2
5059 -> Index Only Scan using t1_pkey on t1 t1_2
5060 Index Cond: (id = t2_2.id)
5063 -> Seq Scan on t3 t3_2
5064 InitPlan 2 (returns $3)
5067 Merge Cond: (t1_4.id = t3_4.id)
5069 -> Index Only Scan using t2_pkey on t2 t2_4
5070 -> Index Only Scan using t1_pkey on t1 t1_4
5071 Index Cond: (id = t2_4.id)
5074 -> Seq Scan on t3 t3_4
5078 -> Index Only Scan using t1_pkey on t1 t1_1
5079 Index Cond: (id = $3)
5080 -> Index Only Scan using t2_pkey on t2 t2_1
5081 Index Cond: (id = $3)
5082 -> Seq Scan on t3 t3_1
5086 -> Index Only Scan using t1_pkey on t1 t1_3
5087 Index Cond: (id = $3)
5088 -> Index Only Scan using t2_pkey on t2 t2_3
5089 Index Cond: (id = $3)
5090 -> Seq Scan on t3 t3_3
5093 Filter: (max(t1_5.id) = $3)
5095 Merge Cond: (t1_5.id = t3_5.id)
5097 -> Index Only Scan using t2_pkey on t2 t2_5
5098 -> Index Only Scan using t1_pkey on t1 t1_5
5099 Index Cond: (id = t2_5.id)
5102 -> Seq Scan on t3 t3_5
5105 /*+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)*/
5106 EXPLAIN (COSTS false)
5108 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
5111 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
5112 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5113 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
5114 ) 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 = (
5115 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
5121 MergeJoin(t1_3 t3_3)
5125 Leading(a t1_1 t1_2 t1_4 t1_5)
5130 --------------------------------------------------------------------
5132 InitPlan 1 (returns $1)
5135 Merge Cond: (t1_2.id = t3_2.id)
5137 -> Index Only Scan using t2_pkey on t2 t2_2
5138 -> Index Only Scan using t1_pkey on t1 t1_2
5139 Index Cond: (id = t2_2.id)
5142 -> Seq Scan on t3 t3_2
5143 InitPlan 2 (returns $3)
5146 Merge Cond: (t1_4.id = t3_4.id)
5148 -> Index Only Scan using t2_pkey on t2 t2_4
5149 -> Index Only Scan using t1_pkey on t1 t1_4
5150 Index Cond: (id = t2_4.id)
5153 -> Seq Scan on t3 t3_4
5157 -> Index Only Scan using t1_pkey on t1 t1_1
5158 Index Cond: (id = $3)
5159 -> Index Only Scan using t2_pkey on t2 t2_1
5160 Index Cond: (id = $3)
5161 -> Seq Scan on t3 t3_1
5165 -> Index Only Scan using t1_pkey on t1 t1_3
5166 Index Cond: (id = $3)
5167 -> Index Only Scan using t2_pkey on t2 t2_3
5168 Index Cond: (id = $3)
5169 -> Seq Scan on t3 t3_3
5172 Filter: (max(t1_5.id) = $3)
5174 Merge Cond: (t1_5.id = t3_5.id)
5176 -> Index Only Scan using t2_pkey on t2 t2_5
5177 -> Index Only Scan using t1_pkey on t1 t1_5
5178 Index Cond: (id = t2_5.id)
5181 -> Seq Scan on t3 t3_5
5184 /*+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)*/
5185 EXPLAIN (COSTS false)
5187 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
5190 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
5191 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5192 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
5193 ) 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 = (
5194 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
5200 MergeJoin(t1_3 t3_3)
5204 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)
5209 --------------------------------------------------------------------
5211 InitPlan 1 (returns $1)
5214 Merge Cond: (t1_2.id = t3_2.id)
5216 -> Index Only Scan using t2_pkey on t2 t2_2
5217 -> Index Only Scan using t1_pkey on t1 t1_2
5218 Index Cond: (id = t2_2.id)
5221 -> Seq Scan on t3 t3_2
5222 InitPlan 2 (returns $3)
5225 Merge Cond: (t1_4.id = t3_4.id)
5227 -> Index Only Scan using t2_pkey on t2 t2_4
5228 -> Index Only Scan using t1_pkey on t1 t1_4
5229 Index Cond: (id = t2_4.id)
5232 -> Seq Scan on t3 t3_4
5236 -> Index Only Scan using t1_pkey on t1 t1_1
5237 Index Cond: (id = $3)
5238 -> Index Only Scan using t2_pkey on t2 t2_1
5239 Index Cond: (id = $3)
5240 -> Seq Scan on t3 t3_1
5244 -> Index Only Scan using t1_pkey on t1 t1_3
5245 Index Cond: (id = $3)
5246 -> Index Only Scan using t2_pkey on t2 t2_3
5247 Index Cond: (id = $3)
5248 -> Seq Scan on t3 t3_3
5251 Filter: (max(t1_5.id) = $3)
5253 Merge Cond: (t1_5.id = t3_5.id)
5255 -> Index Only Scan using t2_pkey on t2 t2_5
5256 -> Index Only Scan using t1_pkey on t1 t1_5
5257 Index Cond: (id = t2_5.id)
5260 -> Seq Scan on t3 t3_5
5263 /*+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)*/
5264 EXPLAIN (COSTS false)
5266 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
5269 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
5270 ) FROM t1 t1_1, t2 t2_1, t3 t3_1, (
5271 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
5272 ) 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 = (
5273 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
5277 MergeJoin(t1_3 t3_3)
5278 Leading(t3_5 t2_5 t1_5)
5279 Leading(t3_2 t2_2 t1_2)
5280 Leading(t3_4 t2_4 t1_4)
5281 Leading(c1_1 t3_3 t2_3 t1_3 t3_1 t2_1 t1_1)
5291 ------------------------------------------------------------------------------------
5293 InitPlan 1 (returns $0)
5296 Merge Cond: (t2_2.id = t1_2.id)
5298 Merge Cond: (t2_2.id = t3_2.id)
5299 -> Index Only Scan using t2_pkey on t2 t2_2
5302 -> Seq Scan on t3 t3_2
5303 -> Index Only Scan using t1_pkey on t1 t1_2
5304 InitPlan 2 (returns $1)
5307 Merge Cond: (t2_4.id = t1_4.id)
5309 Merge Cond: (t2_4.id = t3_4.id)
5310 -> Index Only Scan using t2_pkey on t2 t2_4
5313 -> Seq Scan on t3 t3_4
5314 -> Index Only Scan using t1_pkey on t1 t1_4
5320 -> Index Only Scan using t1_pkey on t1 t1_3
5321 Index Cond: (id = $1)
5322 -> Index Only Scan using t2_pkey on t2 t2_3
5323 Index Cond: (id = $1)
5324 -> Seq Scan on t3 t3_3
5327 Filter: (max(t1_5.id) = $1)
5329 Merge Cond: (t2_5.id = t1_5.id)
5331 Merge Cond: (t2_5.id = t3_5.id)
5332 -> Index Only Scan using t2_pkey on t2 t2_5
5335 -> Seq Scan on t3 t3_5
5336 -> Index Only Scan using t1_pkey on t1 t1_5
5337 -> Seq Scan on t3 t3_1
5339 -> Index Only Scan using t2_pkey on t2 t2_1
5340 Index Cond: (id = $1)
5341 -> Index Only Scan using t1_pkey on t1 t1_1
5342 Index Cond: (id = $1)
5346 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5348 --------------------------------------------
5351 -> Seq Scan on t1 t1_1
5352 -> Index Scan using t1_pkey on t1
5353 Index Cond: (id = t1_1.id)
5354 -> Index Scan using t2_pkey on t2
5355 Index Cond: (id = t1.id)
5358 /*+MergeJoin(t1 t2)*/
5359 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5360 INFO: pg_hint_plan: hint syntax error at or near "MergeJoin(t1 t2)"
5361 DETAIL: Relation name "t1" is ambiguous.
5370 --------------------------------------------
5373 -> Seq Scan on t1 t1_1
5374 -> Index Scan using t1_pkey on t1
5375 Index Cond: (id = t1_1.id)
5376 -> Index Scan using t2_pkey on t2
5377 Index Cond: (id = t1.id)
5380 /*+Leading(t1 t2 t1)*/
5381 EXPLAIN (COSTS false) SELECT * FROM t1, s0.t1, t2 WHERE public.t1.id = s0.t1.id AND public.t1.id = t2.id;
5382 INFO: pg_hint_plan: hint syntax error at or near "Leading(t1 t2 t1)"
5383 DETAIL: Relation name "t1" is ambiguous.
5392 --------------------------------------------
5395 -> Seq Scan on t1 t1_1
5396 -> Index Scan using t1_pkey on t1
5397 Index Cond: (id = t1_1.id)
5398 -> Index Scan using t2_pkey on t2
5399 Index Cond: (id = t1.id)
5402 -- identifier length test
5403 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5405 --------------------------------------------------------------------------------------------------------------
5407 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5409 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id)
5410 -> Index Scan using t1_pkey on t1 "123456789012345678901234567890123456789012345678901234567890123"
5411 -> Index Scan using t2_pkey on t2
5418 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5419 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5420 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5421 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5423 EXPLAIN (COSTS false) SELECT * FROM t1 "123456789012345678901234567890123456789012345678901234567890123" JOIN t2 ON ("123456789012345678901234567890123456789012345678901234567890123".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5424 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5427 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5428 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5429 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5433 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5436 ----------------------------------------------------------------------------------------------------
5438 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5440 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5441 -> Index Scan using t2_pkey on t2
5443 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5444 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5451 Leading(1234567890123456789012345678901234567890123456789012345678901234 t2 t3)
5452 SeqScan(1234567890123456789012345678901234567890123456789012345678901234)
5453 MergeJoin(1234567890123456789012345678901234567890123456789012345678901234 t2)
5454 Set(1234567890123456789012345678901234567890123456789012345678901234 1)
5455 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5457 EXPLAIN (COSTS false) SELECT * FROM t1 "1234567890123456789012345678901234567890123456789012345678901234" JOIN t2 ON ("1234567890123456789012345678901234567890123456789012345678901234".id = t2.id) JOIN t3 ON (t2.id = t3.id);
5458 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5459 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5460 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5461 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5462 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5463 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5464 INFO: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5467 SeqScan(123456789012345678901234567890123456789012345678901234567890123)
5468 MergeJoin(123456789012345678901234567890123456789012345678901234567890123 t2)
5469 Leading(123456789012345678901234567890123456789012345678901234567890123 t2 t3)
5470 Set(cursor_tuple_fraction 0.1234567890123456789012345678901234567890123456789012345678901234)
5474 Set(123456789012345678901234567890123456789012345678901234567890123 1)
5477 ----------------------------------------------------------------------------------------------------
5479 Merge Cond: ("123456789012345678901234567890123456789012345678901234567890123".id = t3.id)
5481 Merge Cond: (t2.id = "123456789012345678901234567890123456789012345678901234567890123".id)
5482 -> Index Scan using t2_pkey on t2
5484 Sort Key: "123456789012345678901234567890123456789012345678901234567890123".id
5485 -> Seq Scan on t1 "123456789012345678901234567890123456789012345678901234567890123"
5491 SET "123456789012345678901234567890123456789012345678901234567890123" TO 1;
5492 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5493 SET "1234567890123456789012345678901234567890123456789012345678901234" TO 1;
5494 NOTICE: identifier "1234567890123456789012345678901234567890123456789012345678901234" will be truncated to "123456789012345678901234567890123456789012345678901234567890123"
5495 ERROR: unrecognized configuration parameter "123456789012345678901234567890123456789012345678901234567890123"
5496 SET cursor_tuple_fraction TO 1234567890123456789012345678901234567890123456789012345678901234;
5497 ERROR: 1.23457e+63 is outside the valid range for parameter "cursor_tuple_fraction" (0 .. 1)
5499 /*+ Set(enable_seqscan 100)Set(seq_page_cost on)*/
5500 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
5501 INFO: parameter "enable_seqscan" requires a Boolean value
5502 INFO: invalid value for parameter "seq_page_cost": "on"
5508 Set(enable_seqscan 100)
5509 Set(seq_page_cost on)
5512 --------------------------------------
5514 Merge Cond: (t1.id = t2.id)
5515 -> Index Scan using t1_pkey on t1
5516 -> Index Scan using t2_pkey on t2
5519 -- debug log of candidate index to use IndexScan
5520 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5522 ----------------------------------------------------------------------------------------
5523 Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
5524 Index Cond: (id = 1)
5527 /*+IndexScan(t5 t5_id2)*/
5528 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5529 LOG: available indexes for IndexScan(t5): t5_id2
5532 IndexScan(t5 t5_id2)
5538 -------------------------------
5539 Index Scan using t5_id2 on t5
5540 Index Cond: (id = 1)
5543 /*+IndexScan(t5 no_exist)*/
5544 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5545 LOG: available indexes for IndexScan(t5):
5548 IndexScan(t5 no_exist)
5554 --------------------
5559 /*+IndexScan(t5 t5_id1 t5_id2)*/
5560 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5561 LOG: available indexes for IndexScan(t5): t5_id2 t5_id1
5564 IndexScan(t5 t5_id1 t5_id2)
5570 -------------------------------
5571 Index Scan using t5_id2 on t5
5572 Index Cond: (id = 1)
5575 /*+IndexScan(t5 no_exist t5_id2)*/
5576 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5577 LOG: available indexes for IndexScan(t5): t5_id2
5580 IndexScan(t5 no_exist t5_id2)
5586 -------------------------------
5587 Index Scan using t5_id2 on t5
5588 Index Cond: (id = 1)
5591 /*+IndexScan(t5 no_exist5 no_exist2)*/
5592 EXPLAIN (COSTS false) SELECT * FROM t5 WHERE t5.id = 1;
5593 LOG: available indexes for IndexScan(t5):
5596 IndexScan(t5 no_exist5 no_exist2)
5602 --------------------
5608 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5610 --------------------------------------------------------
5612 Hash Cond: (t3.val = t2.val)
5616 Hash Cond: (t2.id = t1.id)
5619 -> Index Scan using t1_pkey on t1
5620 Index Cond: (id < 10)
5624 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5625 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1))"
5626 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5635 --------------------------------------------------------
5637 Hash Cond: (t3.val = t2.val)
5641 Hash Cond: (t2.id = t1.id)
5644 -> Index Scan using t1_pkey on t1
5645 Index Cond: (id < 10)
5648 /*+Leading((t1 t2))*/
5649 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5658 --------------------------------------------
5660 Join Filter: (t2.val = t3.val)
5662 Hash Cond: (t1.id = t2.id)
5663 -> Index Scan using t1_pkey on t1
5664 Index Cond: (id < 10)
5670 /*+Leading((t1 t2 t3))*/
5671 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5672 INFO: pg_hint_plan: hint syntax error at or near "Leading((t1 t2 t3))"
5673 DETAIL: Leading hint requires two sets of relations when parentheses nests.
5682 --------------------------------------------------------
5684 Hash Cond: (t3.val = t2.val)
5688 Hash Cond: (t2.id = t1.id)
5691 -> Index Scan using t1_pkey on t1
5692 Index Cond: (id < 10)
5695 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5697 --------------------------------------------
5699 Hash Cond: (t2.id = t1.id)
5702 -> Index Scan using t1_pkey on t1
5703 Index Cond: (id < 10)
5706 /*+Leading((t1 t2))*/
5707 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.id < 10;
5716 --------------------------------------
5718 Hash Cond: (t1.id = t2.id)
5719 -> Index Scan using t1_pkey on t1
5720 Index Cond: (id < 10)
5725 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5727 --------------------------------------------------------
5729 Hash Cond: (t3.val = t2.val)
5733 Hash Cond: (t2.id = t1.id)
5736 -> Index Scan using t1_pkey on t1
5737 Index Cond: (id < 10)
5740 /*+Leading(((t1 t2) t3))*/
5741 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5744 Leading(((t1 t2) t3))
5750 --------------------------------------------
5752 Join Filter: (t2.val = t3.val)
5754 Hash Cond: (t1.id = t2.id)
5755 -> Index Scan using t1_pkey on t1
5756 Index Cond: (id < 10)
5762 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;
5764 --------------------------------------------------------
5767 Merge Cond: (t3.id = t4.id)
5769 Join Filter: (t1.val = t3.val)
5770 -> Index Scan using t3_pkey on t3
5772 -> Index Scan using t1_pkey on t1
5773 Index Cond: (id < 10)
5777 -> Index Scan using t2_pkey on t2
5778 Index Cond: (id = t1.id)
5781 /*+Leading((((t1 t2) t3) t4))*/
5782 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;
5785 Leading((((t1 t2) t3) t4))
5791 --------------------------------------------------
5794 Join Filter: (t1.val = t3.val)
5796 Hash Cond: (t1.id = t2.id)
5797 -> Index Scan using t1_pkey on t1
5798 Index Cond: (id < 10)
5802 -> Index Scan using t4_pkey on t4
5803 Index Cond: (id = t3.id)
5806 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5808 --------------------------------------------------------
5810 Hash Cond: (t3.val = t2.val)
5814 Hash Cond: (t2.id = t1.id)
5817 -> Index Scan using t1_pkey on t1
5818 Index Cond: (id < 10)
5821 /*+Leading(((t1 t2) t3))*/
5822 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5825 Leading(((t1 t2) t3))
5831 --------------------------------------------
5833 Join Filter: (t2.val = t3.val)
5835 Hash Cond: (t1.id = t2.id)
5836 -> Index Scan using t1_pkey on t1
5837 Index Cond: (id < 10)
5843 /*+Leading((t1 (t2 t3)))*/
5844 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
5847 Leading((t1 (t2 t3)))
5853 --------------------------------------------
5855 Hash Cond: (t1.id = t2.id)
5856 -> Index Scan using t1_pkey on t1
5857 Index Cond: (id < 10)
5860 Hash Cond: (t2.val = t3.val)
5866 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;
5868 --------------------------------------------------------
5871 Merge Cond: (t3.id = t4.id)
5873 Join Filter: (t1.val = t3.val)
5874 -> Index Scan using t3_pkey on t3
5876 -> Index Scan using t1_pkey on t1
5877 Index Cond: (id < 10)
5881 -> Index Scan using t2_pkey on t2
5882 Index Cond: (id = t1.id)
5885 /*+Leading(((t1 t2) (t3 t4)))*/
5886 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;
5889 Leading(((t1 t2) (t3 t4)))
5895 --------------------------------------------
5897 Join Filter: (t1.val = t3.val)
5899 Hash Cond: (t1.id = t2.id)
5900 -> Index Scan using t1_pkey on t1
5901 Index Cond: (id < 10)
5905 Merge Cond: (t3.id = t4.id)
5906 -> Index Scan using t3_pkey on t3
5912 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);
5914 --------------------------------------------------------------------
5916 Hash Cond: (t2.val = t3.val)
5917 InitPlan 1 (returns $1)
5922 -> Index Scan using t2_val on t2 t2_2
5923 Index Cond: (val > 100)
5924 -> Index Only Scan using t1_pkey on t1 t1_2
5925 Index Cond: (id = t2_2.id)
5927 Merge Cond: (t1.id = t2.id)
5928 -> Index Scan using t1_pkey on t1
5929 Index Cond: (id < $1)
5930 -> Index Scan using t2_pkey on t2
5935 /*+Leading(((t1 t2) t3)) Leading(((t3 t1) t2))*/
5936 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);
5937 INFO: pg_hint_plan: hint syntax error at or near "Leading(((t1 t2) t3)) Leading(((t3 t1) t2))"
5938 DETAIL: Conflict leading hint.
5941 Leading(((t3 t1) t2))
5944 Leading(((t1 t2) t3))
5948 --------------------------------------------------------------------
5950 Hash Cond: (t1.id = t2.id)
5951 InitPlan 1 (returns $1)
5956 -> Index Scan using t2_val on t2 t2_2
5957 Index Cond: (val > 100)
5958 -> Index Only Scan using t1_pkey on t1 t1_2
5959 Index Cond: (id = t2_2.id)
5961 Hash Cond: (t3.val = t1.val)
5964 -> Index Scan using t1_pkey on t1
5965 Index Cond: (id < $1)
5970 /*+Leading(((t1 t2) t3)) Leading((t1_2 t2_2))*/
5971 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);
5974 Leading(((t1 t2) t3))
5975 Leading((t1_2 t2_2))
5981 --------------------------------------------------------------
5983 Hash Cond: (t2.val = t3.val)
5984 InitPlan 1 (returns $0)
5987 Merge Cond: (t1_2.id = t2_2.id)
5988 -> Index Only Scan using t1_pkey on t1 t1_2
5991 -> Index Scan using t2_val on t2 t2_2
5992 Index Cond: (val > 100)
5994 Merge Cond: (t1.id = t2.id)
5995 -> Index Scan using t1_pkey on t1
5996 Index Cond: (id < $0)
5997 -> Index Scan using t2_pkey on t2
6002 /*+Leading(((((t1 t2) t3) t1_2) t2_2))*/
6003 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);
6007 Leading(((((t1 t2) t3) t1_2) t2_2))
6012 --------------------------------------------------------------------
6014 Hash Cond: (t2.val = t3.val)
6015 InitPlan 1 (returns $1)
6020 -> Index Scan using t2_val on t2 t2_2
6021 Index Cond: (val > 100)
6022 -> Index Only Scan using t1_pkey on t1 t1_2
6023 Index Cond: (id = t2_2.id)
6025 Merge Cond: (t1.id = t2.id)
6026 -> Index Scan using t1_pkey on t1
6027 Index Cond: (id < $1)
6028 -> Index Scan using t2_pkey on t2
6033 -- Specified outer/inner leading hint and join method hint at the same time
6034 /*+Leading(((t1 t2) t3))*/
6035 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6038 Leading(((t1 t2) t3))
6044 --------------------------------------------
6046 Join Filter: (t2.val = t3.val)
6048 Hash Cond: (t1.id = t2.id)
6049 -> Index Scan using t1_pkey on t1
6050 Index Cond: (id < 10)
6056 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2)*/
6057 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6061 Leading(((t1 t2) t3))
6067 --------------------------------------------
6069 Join Filter: (t2.val = t3.val)
6071 Merge Cond: (t1.id = t2.id)
6072 -> Index Scan using t1_pkey on t1
6073 Index Cond: (id < 10)
6074 -> Index Scan using t2_pkey on t2
6078 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3)*/
6079 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6083 Leading(((t1 t2) t3))
6089 --------------------------------------------------
6091 Merge Cond: (t2.val = t3.val)
6095 Hash Cond: (t1.id = t2.id)
6096 -> Index Scan using t1_pkey on t1
6097 Index Cond: (id < 10)
6105 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t3)*/
6106 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6109 Leading(((t1 t2) t3))
6116 --------------------------------------------
6118 Join Filter: (t2.val = t3.val)
6120 Hash Cond: (t1.id = t2.id)
6121 -> Index Scan using t1_pkey on t1
6122 Index Cond: (id < 10)
6128 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t3.id = t4.id AND t1.val = t3.val AND t1.id < 10;
6130 --------------------------------------------------------
6133 Merge Cond: (t3.id = t4.id)
6135 Join Filter: (t1.val = t3.val)
6136 -> Index Scan using t3_pkey on t3
6138 -> Index Scan using t1_pkey on t1
6139 Index Cond: (id < 10)
6143 -> Index Scan using t2_pkey on t2
6144 Index Cond: (id = t1.id)
6147 /*+Leading(((t1 t2) t3)) MergeJoin(t3 t4)*/
6148 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;
6151 Leading(((t1 t2) t3))
6158 --------------------------------------------------
6160 Join Filter: (t3.id = t4.id)
6162 Join Filter: (t1.val = t3.val)
6164 Hash Cond: (t1.id = t2.id)
6165 -> Index Scan using t1_pkey on t1
6166 Index Cond: (id < 10)
6173 /*+Leading(((t1 t2) t3)) MergeJoin(t1 t2 t3 t4)*/
6174 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;
6177 MergeJoin(t1 t2 t3 t4)
6178 Leading(((t1 t2) t3))
6184 --------------------------------------------------------
6186 Merge Cond: (t3.id = t4.id)
6190 Join Filter: (t1.val = t3.val)
6192 Hash Cond: (t1.id = t2.id)
6193 -> Index Scan using t1_pkey on t1
6194 Index Cond: (id < 10)
6203 /*+ Leading ( ( t1 ( t2 t3 ) ) ) */
6204 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6207 Leading((t1 (t2 t3)))
6213 --------------------------------------------
6215 Hash Cond: (t1.id = t2.id)
6216 -> Index Scan using t1_pkey on t1
6217 Index Cond: (id < 10)
6220 Hash Cond: (t2.val = t3.val)
6226 /*+Leading((t1(t2 t3)))*/
6227 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6230 Leading((t1 (t2 t3)))
6236 --------------------------------------------
6238 Hash Cond: (t1.id = t2.id)
6239 -> Index Scan using t1_pkey on t1
6240 Index Cond: (id < 10)
6243 Hash Cond: (t2.val = t3.val)
6249 /*+Leading(("t1(t2" "t3)"))*/
6250 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6254 Leading(("t1(t2" "t3)"))
6259 --------------------------------------------------------
6261 Hash Cond: (t3.val = t2.val)
6265 Hash Cond: (t2.id = t1.id)
6268 -> Index Scan using t1_pkey on t1
6269 Index Cond: (id < 10)
6272 /*+ Leading ( ( ( t1 t2 ) t3 ) ) */
6273 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6276 Leading(((t1 t2) t3))
6282 --------------------------------------------
6284 Join Filter: (t2.val = t3.val)
6286 Hash Cond: (t1.id = t2.id)
6287 -> Index Scan using t1_pkey on t1
6288 Index Cond: (id < 10)
6294 /*+Leading(((t1 t2)t3))*/
6295 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6298 Leading(((t1 t2) t3))
6304 --------------------------------------------
6306 Join Filter: (t2.val = t3.val)
6308 Hash Cond: (t1.id = t2.id)
6309 -> Index Scan using t1_pkey on t1
6310 Index Cond: (id < 10)
6316 /*+Leading(("(t1" "t2)t3"))*/
6317 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3 WHERE t1.id = t2.id AND t2.val = t3.val AND t1.id < 10;
6321 Leading(("(t1" "t2)t3"))
6326 --------------------------------------------------------
6328 Hash Cond: (t3.val = t2.val)
6332 Hash Cond: (t2.id = t1.id)
6335 -> Index Scan using t1_pkey on t1
6336 Index Cond: (id < 10)
6339 /*+Leading((t1(t2(t3(t4 t5)))))*/
6340 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;
6343 Leading((t1 (t2 (t3 (t4 t5)))))
6349 ----------------------------------------------------------------------------------------------------------------------------------
6351 Merge Cond: (t1.id = t2.id)
6352 -> Index Scan using t1_pkey on t1
6355 Merge Cond: (t2.id = t3.id)
6356 -> Index Scan using t2_pkey on t2
6359 Merge Cond: (t3.id = t4.id)
6360 -> Index Scan using t3_pkey on t3
6363 Merge Cond: (t4.id = t5.id)
6364 -> Index Scan using t4_pkey on t4
6365 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6368 /*+Leading((t5(t4(t3(t2 t1)))))*/
6369 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;
6372 Leading((t5 (t4 (t3 (t2 t1)))))
6378 --------------------------------------------------------------------------
6380 Hash Cond: (t5.id = t1.id)
6384 Merge Cond: (t4.id = t1.id)
6390 Merge Cond: (t3.id = t1.id)
6396 Merge Cond: (t2.id = t1.id)
6397 -> Index Scan using t2_pkey on t2
6398 -> Index Scan using t1_pkey on t1
6401 /*+Leading(((((t1 t2)t3)t4)t5))*/
6402 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;
6405 Leading(((((t1 t2) t3) t4) t5))
6411 ----------------------------------------------------------------------------------------------
6414 Merge Cond: (t1.id = t4.id)
6416 Merge Cond: (t1.id = t3.id)
6418 Merge Cond: (t1.id = t2.id)
6419 -> Index Scan using t1_pkey on t1
6420 -> Index Scan using t2_pkey on t2
6427 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6428 Index Cond: (id = t1.id)
6431 /*+Leading(((((t5 t4)t3)t2)t1))*/
6432 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;
6435 Leading(((((t5 t4) t3) t2) t1))
6441 ----------------------------------------------------------------------------------------------------------------
6443 Join Filter: (t2.id = t1.id)
6445 Join Filter: (t3.id = t2.id)
6447 Merge Cond: (t4.id = t3.id)
6449 Merge Cond: (t5.id = t4.id)
6450 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6454 -> Index Scan using t3_pkey on t3
6455 -> Index Scan using t2_pkey on t2
6456 Index Cond: (id = t5.id)
6457 -> Index Scan using t1_pkey on t1
6458 Index Cond: (id = t5.id)
6461 /*+Leading(((t1 t2)(t3(t4 t5))))*/
6462 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;
6465 Leading(((t1 t2) (t3 (t4 t5))))
6471 ----------------------------------------------------------------------------------------------------------------------
6473 Merge Cond: (t1.id = t3.id)
6475 Merge Cond: (t1.id = t2.id)
6476 -> Index Scan using t1_pkey on t1
6477 -> Index Scan using t2_pkey on t2
6480 Merge Cond: (t3.id = t4.id)
6481 -> Index Scan using t3_pkey on t3
6484 Merge Cond: (t4.id = t5.id)
6485 -> Index Scan using t4_pkey on t4
6486 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6489 /*+Leading(((t5 t4)(t3(t2 t1))))*/
6490 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;
6493 Leading(((t5 t4) (t3 (t2 t1))))
6499 ----------------------------------------------------------------------------------------------------
6501 Merge Cond: (t4.id = t1.id)
6503 Merge Cond: (t5.id = t4.id)
6504 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6510 Merge Cond: (t3.id = t1.id)
6516 Merge Cond: (t2.id = t1.id)
6517 -> Index Scan using t2_pkey on t2
6518 -> Index Scan using t1_pkey on t1
6521 /*+Leading((((t1 t2)t3)(t4 t5)))*/
6522 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;
6525 Leading((((t1 t2) t3) (t4 t5)))
6531 ----------------------------------------------------------------------------------------------------------
6533 Merge Cond: (t1.id = t4.id)
6535 Merge Cond: (t1.id = t3.id)
6537 Merge Cond: (t1.id = t2.id)
6538 -> Index Scan using t1_pkey on t1
6539 -> Index Scan using t2_pkey on t2
6545 Merge Cond: (t4.id = t5.id)
6546 -> Index Scan using t4_pkey on t4
6547 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6550 /*+Leading((((t5 t4)t3)(t2 t1)))*/
6551 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;
6554 Leading((((t5 t4) t3) (t2 t1)))
6560 ----------------------------------------------------------------------------------------------------------
6562 Merge Cond: (t3.id = t1.id)
6564 Merge Cond: (t4.id = t3.id)
6566 Merge Cond: (t5.id = t4.id)
6567 -> Index Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
6571 -> Index Scan using t3_pkey on t3
6574 Merge Cond: (t2.id = t1.id)
6575 -> Index Scan using t2_pkey on t2
6576 -> Index Scan using t1_pkey on t1
6579 -- inherite table test to specify the index's name
6580 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6582 -----------------------------------------------------------------------
6584 -> Seq Scan on p2 p2_1
6585 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6586 -> Seq Scan on p2_c1 p2_2
6587 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6588 -> Seq Scan on p2_c1_c1 p2_3
6589 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6590 -> Seq Scan on p2_c1_c2 p2_4
6591 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6594 /*+IndexScan(p2 p2_pkey)*/
6595 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6596 LOG: available indexes for IndexScan(p2): p2_pkey
6597 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6598 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6599 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6602 IndexScan(p2 p2_pkey)
6608 -------------------------------------------------------
6610 -> Index Scan using p2_pkey on p2 p2_1
6611 Index Cond: ((id >= 50) AND (id <= 51))
6612 Filter: (ctid = '(1,1)'::tid)
6613 -> Index Scan using p2_c1_pkey on p2_c1 p2_2
6614 Index Cond: ((id >= 50) AND (id <= 51))
6615 Filter: (ctid = '(1,1)'::tid)
6616 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6617 Index Cond: ((id >= 50) AND (id <= 51))
6618 Filter: (ctid = '(1,1)'::tid)
6619 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6620 Index Cond: ((id >= 50) AND (id <= 51))
6621 Filter: (ctid = '(1,1)'::tid)
6624 /*+IndexScan(p2 p2_id_val_idx)*/
6625 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6626 LOG: available indexes for IndexScan(p2): p2_id_val_idx
6627 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6628 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
6629 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
6632 IndexScan(p2 p2_id_val_idx)
6638 -------------------------------------------------------------
6640 -> Index Scan using p2_id_val_idx on p2 p2_1
6641 Index Cond: ((id >= 50) AND (id <= 51))
6642 Filter: (ctid = '(1,1)'::tid)
6643 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
6644 Index Cond: ((id >= 50) AND (id <= 51))
6645 Filter: (ctid = '(1,1)'::tid)
6646 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_3
6647 Index Cond: ((id >= 50) AND (id <= 51))
6648 Filter: (ctid = '(1,1)'::tid)
6649 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_4
6650 Index Cond: ((id >= 50) AND (id <= 51))
6651 Filter: (ctid = '(1,1)'::tid)
6654 /*+IndexScan(p2 p2_val_id_idx)*/
6655 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6656 LOG: available indexes for IndexScan(p2): p2_val_id_idx
6657 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_id_idx
6658 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_id_idx
6659 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_id_idx
6662 IndexScan(p2 p2_val_id_idx)
6668 -------------------------------------------------------------
6670 -> Index Scan using p2_val_id_idx on p2 p2_1
6671 Index Cond: ((id >= 50) AND (id <= 51))
6672 Filter: (ctid = '(1,1)'::tid)
6673 -> Index Scan using p2_c1_val_id_idx on p2_c1 p2_2
6674 Index Cond: ((id >= 50) AND (id <= 51))
6675 Filter: (ctid = '(1,1)'::tid)
6676 -> Index Scan using p2_c1_c1_val_id_idx on p2_c1_c1 p2_3
6677 Index Cond: ((id >= 50) AND (id <= 51))
6678 Filter: (ctid = '(1,1)'::tid)
6679 -> Index Scan using p2_c1_c2_val_id_idx on p2_c1_c2 p2_4
6680 Index Cond: ((id >= 50) AND (id <= 51))
6681 Filter: (ctid = '(1,1)'::tid)
6684 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6686 -----------------------------------------------------------------------------------------
6688 -> Seq Scan on p2 p2_1
6689 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6690 -> Seq Scan on p2_c1 p2_2
6691 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6692 -> Seq Scan on p2_c2 p2_3
6693 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6694 -> Seq Scan on p2_c3 p2_4
6695 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6696 -> Seq Scan on p2_c4 p2_5
6697 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6698 -> Seq Scan on p2_c1_c1 p2_6
6699 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6700 -> Seq Scan on p2_c1_c2 p2_7
6701 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6702 -> Seq Scan on p2_c3_c1 p2_8
6703 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6704 -> Seq Scan on p2_c3_c2 p2_9
6705 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6708 -- Inhibit parallel exection to avoid interfaring the hint
6709 set max_parallel_workers_per_gather to 0;
6710 /*+ IndexScan(p2 p2_val)*/
6711 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
6712 LOG: available indexes for IndexScan(p2):
6713 LOG: available indexes for IndexScan(p2_c1):
6714 LOG: available indexes for IndexScan(p2_c2):
6715 LOG: available indexes for IndexScan(p2_c3):
6716 LOG: available indexes for IndexScan(p2_c4):
6717 LOG: available indexes for IndexScan(p2_c1_c1):
6718 LOG: available indexes for IndexScan(p2_c1_c2):
6719 LOG: available indexes for IndexScan(p2_c3_c1):
6720 LOG: available indexes for IndexScan(p2_c3_c2):
6723 IndexScan(p2 p2_val)
6729 -----------------------------------------------------------------------------------------
6731 -> Seq Scan on p2 p2_1
6732 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6733 -> Seq Scan on p2_c1 p2_2
6734 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6735 -> Seq Scan on p2_c2 p2_3
6736 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6737 -> Seq Scan on p2_c3 p2_4
6738 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6739 -> Seq Scan on p2_c4 p2_5
6740 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6741 -> Seq Scan on p2_c1_c1 p2_6
6742 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6743 -> Seq Scan on p2_c1_c2 p2_7
6744 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6745 -> Seq Scan on p2_c3_c1 p2_8
6746 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6747 -> Seq Scan on p2_c3_c2 p2_9
6748 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
6751 /*+IndexScan(p2 p2_pkey)*/
6752 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6753 LOG: available indexes for IndexScan(p2): p2_pkey
6754 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6755 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6756 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6759 IndexScan(p2 p2_pkey)
6765 -------------------------------------------------------
6767 -> Index Scan using p2_pkey on p2 p2_1
6768 Index Cond: ((id >= 50) AND (id <= 51))
6769 Filter: (ctid = '(1,1)'::tid)
6770 -> Index Scan using p2_c1_pkey on p2_c1 p2_2
6771 Index Cond: ((id >= 50) AND (id <= 51))
6772 Filter: (ctid = '(1,1)'::tid)
6773 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6774 Index Cond: ((id >= 50) AND (id <= 51))
6775 Filter: (ctid = '(1,1)'::tid)
6776 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6777 Index Cond: ((id >= 50) AND (id <= 51))
6778 Filter: (ctid = '(1,1)'::tid)
6781 /*+IndexScan(p2 p2_id2_val)*/
6782 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6783 LOG: available indexes for IndexScan(p2): p2_id2_val
6784 LOG: available indexes for IndexScan(p2_c1): p2_c1_id2_val
6785 LOG: available indexes for IndexScan(p2_c1_c1):
6786 LOG: available indexes for IndexScan(p2_c1_c2):
6789 IndexScan(p2 p2_id2_val)
6795 -----------------------------------------------------------------------
6797 -> Index Scan using p2_id2_val on p2 p2_1
6798 Index Cond: ((id >= 50) AND (id <= 51))
6799 Filter: (ctid = '(1,1)'::tid)
6800 -> Index Scan using p2_c1_id2_val on p2_c1 p2_2
6801 Index Cond: ((id >= 50) AND (id <= 51))
6802 Filter: (ctid = '(1,1)'::tid)
6803 -> Seq Scan on p2_c1_c1 p2_3
6804 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6805 -> Seq Scan on p2_c1_c2 p2_4
6806 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6809 /*+IndexScan(p2 p2_val2_id)*/
6810 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6811 LOG: available indexes for IndexScan(p2): p2_val2_id
6812 LOG: available indexes for IndexScan(p2_c1):
6813 LOG: available indexes for IndexScan(p2_c1_c1):
6814 LOG: available indexes for IndexScan(p2_c1_c2):
6817 IndexScan(p2 p2_val2_id)
6823 -----------------------------------------------------------------------
6825 -> Index Scan using p2_val2_id on p2 p2_1
6826 Index Cond: ((id >= 50) AND (id <= 51))
6827 Filter: (ctid = '(1,1)'::tid)
6828 -> Seq Scan on p2_c1 p2_2
6829 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6830 -> Seq Scan on p2_c1_c1 p2_3
6831 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6832 -> Seq Scan on p2_c1_c2 p2_4
6833 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6836 /*+IndexScan(p2 p2_pkey)*/
6837 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6838 LOG: available indexes for IndexScan(p2): p2_pkey
6839 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6840 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6841 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6844 IndexScan(p2 p2_pkey)
6850 -------------------------------------------------------
6852 -> Index Scan using p2_pkey on p2 p2_1
6853 Index Cond: ((id >= 50) AND (id <= 51))
6854 Filter: (ctid = '(1,1)'::tid)
6855 -> Index Scan using p2_c1_pkey on p2_c1 p2_2
6856 Index Cond: ((id >= 50) AND (id <= 51))
6857 Filter: (ctid = '(1,1)'::tid)
6858 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6859 Index Cond: ((id >= 50) AND (id <= 51))
6860 Filter: (ctid = '(1,1)'::tid)
6861 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6862 Index Cond: ((id >= 50) AND (id <= 51))
6863 Filter: (ctid = '(1,1)'::tid)
6866 /*+IndexScan(p2 p2_c1_id_val_idx)*/
6867 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6868 LOG: available indexes for IndexScan(p2):
6869 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6870 LOG: available indexes for IndexScan(p2_c1_c1):
6871 LOG: available indexes for IndexScan(p2_c1_c2):
6874 IndexScan(p2 p2_c1_id_val_idx)
6880 -----------------------------------------------------------------------
6882 -> Seq Scan on p2 p2_1
6883 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6884 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
6885 Index Cond: ((id >= 50) AND (id <= 51))
6886 Filter: (ctid = '(1,1)'::tid)
6887 -> Seq Scan on p2_c1_c1 p2_3
6888 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6889 -> Seq Scan on p2_c1_c2 p2_4
6890 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6893 /*+IndexScan(p2 no_exist)*/
6894 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6895 LOG: available indexes for IndexScan(p2):
6896 LOG: available indexes for IndexScan(p2_c1):
6897 LOG: available indexes for IndexScan(p2_c1_c1):
6898 LOG: available indexes for IndexScan(p2_c1_c2):
6901 IndexScan(p2 no_exist)
6907 -----------------------------------------------------------------------
6909 -> Seq Scan on p2 p2_1
6910 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6911 -> Seq Scan on p2_c1 p2_2
6912 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6913 -> Seq Scan on p2_c1_c1 p2_3
6914 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6915 -> Seq Scan on p2_c1_c2 p2_4
6916 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6919 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx)*/
6920 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6921 LOG: available indexes for IndexScan(p2): p2_pkey
6922 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
6923 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6924 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6927 IndexScan(p2 p2_pkey p2_c1_id_val_idx)
6933 -------------------------------------------------------
6935 -> Index Scan using p2_pkey on p2 p2_1
6936 Index Cond: ((id >= 50) AND (id <= 51))
6937 Filter: (ctid = '(1,1)'::tid)
6938 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
6939 Index Cond: ((id >= 50) AND (id <= 51))
6940 Filter: (ctid = '(1,1)'::tid)
6941 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6942 Index Cond: ((id >= 50) AND (id <= 51))
6943 Filter: (ctid = '(1,1)'::tid)
6944 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6945 Index Cond: ((id >= 50) AND (id <= 51))
6946 Filter: (ctid = '(1,1)'::tid)
6949 /*+IndexScan(p2 p2_pkey no_exist)*/
6950 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6951 LOG: available indexes for IndexScan(p2): p2_pkey
6952 LOG: available indexes for IndexScan(p2_c1): p2_c1_pkey
6953 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
6954 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
6957 IndexScan(p2 p2_pkey no_exist)
6963 -------------------------------------------------------
6965 -> Index Scan using p2_pkey on p2 p2_1
6966 Index Cond: ((id >= 50) AND (id <= 51))
6967 Filter: (ctid = '(1,1)'::tid)
6968 -> Index Scan using p2_c1_pkey on p2_c1 p2_2
6969 Index Cond: ((id >= 50) AND (id <= 51))
6970 Filter: (ctid = '(1,1)'::tid)
6971 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
6972 Index Cond: ((id >= 50) AND (id <= 51))
6973 Filter: (ctid = '(1,1)'::tid)
6974 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
6975 Index Cond: ((id >= 50) AND (id <= 51))
6976 Filter: (ctid = '(1,1)'::tid)
6979 /*+IndexScan(p2 p2_c1_id_val_idx no_exist)*/
6980 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
6981 LOG: available indexes for IndexScan(p2):
6982 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
6983 LOG: available indexes for IndexScan(p2_c1_c1):
6984 LOG: available indexes for IndexScan(p2_c1_c2):
6987 IndexScan(p2 p2_c1_id_val_idx no_exist)
6993 -----------------------------------------------------------------------
6995 -> Seq Scan on p2 p2_1
6996 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
6997 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
6998 Index Cond: ((id >= 50) AND (id <= 51))
6999 Filter: (ctid = '(1,1)'::tid)
7000 -> Seq Scan on p2_c1_c1 p2_3
7001 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
7002 -> Seq Scan on p2_c1_c2 p2_4
7003 Filter: ((id >= 50) AND (id <= 51) AND (ctid = '(1,1)'::tid))
7006 /*+IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)*/
7007 EXPLAIN (COSTS false) SELECT * FROM p2 WHERE id >= 50 AND id <= 51 AND p2.ctid = '(1,1)';
7008 LOG: available indexes for IndexScan(p2): p2_pkey
7009 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx p2_c1_pkey
7010 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_pkey
7011 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_pkey
7014 IndexScan(p2 p2_pkey p2_c1_id_val_idx no_exist)
7020 -------------------------------------------------------
7022 -> Index Scan using p2_pkey on p2 p2_1
7023 Index Cond: ((id >= 50) AND (id <= 51))
7024 Filter: (ctid = '(1,1)'::tid)
7025 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
7026 Index Cond: ((id >= 50) AND (id <= 51))
7027 Filter: (ctid = '(1,1)'::tid)
7028 -> Index Scan using p2_c1_c1_pkey on p2_c1_c1 p2_3
7029 Index Cond: ((id >= 50) AND (id <= 51))
7030 Filter: (ctid = '(1,1)'::tid)
7031 -> Index Scan using p2_c1_c2_pkey on p2_c1_c2 p2_4
7032 Index Cond: ((id >= 50) AND (id <= 51))
7033 Filter: (ctid = '(1,1)'::tid)
7036 /*+IndexScan(p2 p2_val_idx)*/
7037 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7038 LOG: available indexes for IndexScan(p2): p2_val_idx
7039 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx
7040 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx
7041 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx
7042 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx
7043 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx
7044 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx
7045 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx
7046 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx
7049 IndexScan(p2 p2_val_idx)
7055 -------------------------------------------------------------------
7057 -> Index Scan using p2_val_idx on p2 p2_1
7058 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7059 Filter: (ctid = '(1,1)'::tid)
7060 -> Index Scan using p2_c1_val_idx on p2_c1 p2_2
7061 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7062 Filter: (ctid = '(1,1)'::tid)
7063 -> Index Scan using p2_c2_val_idx on p2_c2 p2_3
7064 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7065 Filter: (ctid = '(1,1)'::tid)
7066 -> Index Scan using p2_c3_val_idx on p2_c3 p2_4
7067 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7068 Filter: (ctid = '(1,1)'::tid)
7069 -> Index Scan using p2_c4_val_idx on p2_c4 p2_5
7070 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7071 Filter: (ctid = '(1,1)'::tid)
7072 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1 p2_6
7073 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7074 Filter: (ctid = '(1,1)'::tid)
7075 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2 p2_7
7076 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7077 Filter: (ctid = '(1,1)'::tid)
7078 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1 p2_8
7079 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7080 Filter: (ctid = '(1,1)'::tid)
7081 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2 p2_9
7082 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7083 Filter: (ctid = '(1,1)'::tid)
7086 /*+IndexScan(p2 p2_expr)*/
7087 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7088 LOG: available indexes for IndexScan(p2): p2_expr
7089 LOG: available indexes for IndexScan(p2_c1): p2_c1_expr_idx
7090 LOG: available indexes for IndexScan(p2_c2): p2_c2_expr_idx
7091 LOG: available indexes for IndexScan(p2_c3): p2_c3_expr_idx
7092 LOG: available indexes for IndexScan(p2_c4): p2_c4_expr_idx
7093 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_expr_idx
7094 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_expr_idx
7095 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_expr_idx
7096 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_expr_idx
7099 IndexScan(p2 p2_expr)
7105 -----------------------------------------------------------------------------------------
7107 -> Seq Scan on p2 p2_1
7108 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7109 -> Seq Scan on p2_c1 p2_2
7110 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7111 -> Seq Scan on p2_c2 p2_3
7112 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7113 -> Seq Scan on p2_c3 p2_4
7114 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7115 -> Seq Scan on p2_c4 p2_5
7116 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7117 -> Seq Scan on p2_c1_c1 p2_6
7118 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7119 -> Seq Scan on p2_c1_c2 p2_7
7120 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7121 -> Seq Scan on p2_c3_c1 p2_8
7122 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7123 -> Seq Scan on p2_c3_c2 p2_9
7124 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7127 /*+IndexScan(p2 p2_val_idx6)*/
7128 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7129 LOG: available indexes for IndexScan(p2): p2_val_idx6
7130 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx7
7131 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx7
7132 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx7
7133 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx7
7134 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx7
7135 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx7
7136 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx7
7137 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx7
7140 IndexScan(p2 p2_val_idx6)
7146 -----------------------------------------------------------------------------------------
7148 -> Seq Scan on p2 p2_1
7149 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7150 -> Seq Scan on p2_c1 p2_2
7151 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7152 -> Seq Scan on p2_c2 p2_3
7153 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7154 -> Seq Scan on p2_c3 p2_4
7155 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7156 -> Seq Scan on p2_c4 p2_5
7157 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7158 -> Seq Scan on p2_c1_c1 p2_6
7159 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7160 -> Seq Scan on p2_c1_c2 p2_7
7161 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7162 -> Seq Scan on p2_c3_c1 p2_8
7163 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7164 -> Seq Scan on p2_c3_c2 p2_9
7165 Filter: ((val >= '50'::text) AND (val <= '51'::text) AND (ctid = '(1,1)'::tid))
7168 /*+IndexScan(p2 p2_val_idx p2_val_idx6)*/
7169 EXPLAIN (COSTS false) SELECT val FROM p2 WHERE val >= '50' AND val <= '51' AND p2.ctid = '(1,1)';
7170 LOG: available indexes for IndexScan(p2): p2_val_idx6 p2_val_idx
7171 LOG: available indexes for IndexScan(p2_c1): p2_c1_val_idx7 p2_c1_val_idx
7172 LOG: available indexes for IndexScan(p2_c2): p2_c2_val_idx7 p2_c2_val_idx
7173 LOG: available indexes for IndexScan(p2_c3): p2_c3_val_idx7 p2_c3_val_idx
7174 LOG: available indexes for IndexScan(p2_c4): p2_c4_val_idx7 p2_c4_val_idx
7175 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_val_idx7 p2_c1_c1_val_idx
7176 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_val_idx7 p2_c1_c2_val_idx
7177 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_val_idx7 p2_c3_c1_val_idx
7178 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_val_idx7 p2_c3_c2_val_idx
7181 IndexScan(p2 p2_val_idx p2_val_idx6)
7187 -------------------------------------------------------------------
7189 -> Index Scan using p2_val_idx on p2 p2_1
7190 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7191 Filter: (ctid = '(1,1)'::tid)
7192 -> Index Scan using p2_c1_val_idx on p2_c1 p2_2
7193 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7194 Filter: (ctid = '(1,1)'::tid)
7195 -> Index Scan using p2_c2_val_idx on p2_c2 p2_3
7196 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7197 Filter: (ctid = '(1,1)'::tid)
7198 -> Index Scan using p2_c3_val_idx on p2_c3 p2_4
7199 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7200 Filter: (ctid = '(1,1)'::tid)
7201 -> Index Scan using p2_c4_val_idx on p2_c4 p2_5
7202 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7203 Filter: (ctid = '(1,1)'::tid)
7204 -> Index Scan using p2_c1_c1_val_idx on p2_c1_c1 p2_6
7205 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7206 Filter: (ctid = '(1,1)'::tid)
7207 -> Index Scan using p2_c1_c2_val_idx on p2_c1_c2 p2_7
7208 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7209 Filter: (ctid = '(1,1)'::tid)
7210 -> Index Scan using p2_c3_c1_val_idx on p2_c3_c1 p2_8
7211 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7212 Filter: (ctid = '(1,1)'::tid)
7213 -> Index Scan using p2_c3_c2_val_idx on p2_c3_c2 p2_9
7214 Index Cond: ((val >= '50'::text) AND (val <= '51'::text))
7215 Filter: (ctid = '(1,1)'::tid)
7218 -- regular expression
7220 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7222 ---------------------------------------------------------------------------------------------
7223 Index Only Scan using t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa on t5
7224 Index Cond: (id = 1)
7227 /*+ IndexScanRegexp(t5 t5_[^i].*)*/
7228 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7229 LOG: available indexes for IndexScanRegexp(t5): t5_val t5_pkey
7232 IndexScanRegexp(t5 t5_[^i].*)
7238 --------------------------------
7239 Index Scan using t5_pkey on t5
7240 Index Cond: (id = 1)
7243 /*+ IndexScanRegexp(t5 t5_id[0-9].*)*/
7244 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7245 LOG: available indexes for IndexScanRegexp(t5): t5_id3 t5_id2 t5_id1
7248 IndexScanRegexp(t5 t5_id[0-9].*)
7254 -------------------------------
7255 Index Scan using t5_id3 on t5
7256 Index Cond: (id = 1)
7259 /*+ IndexScanRegexp(t5 t5[^_].*)*/
7260 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7261 LOG: available indexes for IndexScanRegexp(t5):
7264 IndexScanRegexp(t5 t5[^_].*)
7270 --------------------
7275 /*+ IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7276 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7277 LOG: available indexes for IndexScanRegexp(t5):
7280 IndexScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7286 --------------------
7291 /*+ IndexScan(t5 t5_id[0-9].*)*/
7292 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7293 LOG: available indexes for IndexScan(t5):
7296 IndexScan(t5 t5_id[0-9].*)
7302 --------------------
7307 /*+ IndexOnlyScanRegexp(t5 t5_[^i].*)*/
7308 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7309 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_val t5_pkey
7312 IndexOnlyScanRegexp(t5 t5_[^i].*)
7318 -------------------------------------
7319 Index Only Scan using t5_pkey on t5
7320 Index Cond: (id = 1)
7323 /*+ IndexOnlyScanRegexp(t5 t5_id[0-9].*)*/
7324 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7325 LOG: available indexes for IndexOnlyScanRegexp(t5): t5_id3 t5_id2 t5_id1
7328 IndexOnlyScanRegexp(t5 t5_id[0-9].*)
7334 ------------------------------------
7335 Index Only Scan using t5_id3 on t5
7336 Index Cond: (id = 1)
7339 /*+ IndexOnlyScanRegexp(t5 t5[^_].*)*/
7340 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7341 LOG: available indexes for IndexOnlyScanRegexp(t5):
7344 IndexOnlyScanRegexp(t5 t5[^_].*)
7350 --------------------
7355 /*+ IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7356 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7357 LOG: available indexes for IndexOnlyScanRegexp(t5):
7360 IndexOnlyScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7366 --------------------
7371 /*+ IndexOnlyScan(t5 t5_id[0-9].*)*/
7372 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7373 LOG: available indexes for IndexOnlyScan(t5):
7376 IndexOnlyScan(t5 t5_id[0-9].*)
7382 --------------------
7387 /*+ BitmapScanRegexp(t5 t5_[^i].*)*/
7388 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7389 LOG: available indexes for BitmapScanRegexp(t5): t5_val t5_pkey
7392 BitmapScanRegexp(t5 t5_[^i].*)
7398 ------------------------------------
7399 Bitmap Heap Scan on t5
7400 Recheck Cond: (id = 1)
7401 -> Bitmap Index Scan on t5_pkey
7402 Index Cond: (id = 1)
7405 /*+ BitmapScanRegexp(t5 t5_id[0-9].*)*/
7406 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7407 LOG: available indexes for BitmapScanRegexp(t5): t5_id3 t5_id2 t5_id1
7410 BitmapScanRegexp(t5 t5_id[0-9].*)
7416 -----------------------------------
7417 Bitmap Heap Scan on t5
7418 Recheck Cond: (id = 1)
7419 -> Bitmap Index Scan on t5_id3
7420 Index Cond: (id = 1)
7423 /*+ BitmapScanRegexp(t5 t5[^_].*)*/
7424 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7425 LOG: available indexes for BitmapScanRegexp(t5):
7428 BitmapScanRegexp(t5 t5[^_].*)
7434 --------------------
7439 /*+ BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)*/
7440 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7441 LOG: available indexes for BitmapScanRegexp(t5):
7444 BitmapScanRegexp(t5 ^.*t5_idaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab)
7450 --------------------
7455 /*+ BitmapScan(t5 t5_id[0-9].*)*/
7456 EXPLAIN (COSTS false) SELECT id FROM t5 WHERE id = 1;
7457 LOG: available indexes for BitmapScan(t5):
7460 BitmapScan(t5 t5_id[0-9].*)
7466 --------------------
7472 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7474 ---------------------------------
7476 -> Seq Scan on p1 p1_1
7478 -> Seq Scan on p1_c1 p1_2
7480 -> Seq Scan on p1_c2 p1_3
7482 -> Seq Scan on p1_c3 p1_4
7484 -> Seq Scan on p1_c4 p1_5
7486 -> Seq Scan on p1_c1_c1 p1_6
7488 -> Seq Scan on p1_c1_c2 p1_7
7490 -> Seq Scan on p1_c3_c1 p1_8
7492 -> Seq Scan on p1_c3_c2 p1_9
7496 /*+ IndexScanRegexp(p1 p1_.*[^0-9]$)*/
7497 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7498 LOG: available indexes for IndexScanRegexp(p1): p1_pkey
7499 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_pkey
7500 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_pkey
7501 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_pkey
7502 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_pkey
7503 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7504 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7505 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7506 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7509 IndexScanRegexp(p1 p1_.*[^0-9]$)
7515 ---------------------------------
7517 -> Seq Scan on p1 p1_1
7519 -> Seq Scan on p1_c1 p1_2
7521 -> Seq Scan on p1_c2 p1_3
7523 -> Seq Scan on p1_c3 p1_4
7525 -> Seq Scan on p1_c4 p1_5
7527 -> Seq Scan on p1_c1_c1 p1_6
7529 -> Seq Scan on p1_c1_c2 p1_7
7531 -> Seq Scan on p1_c3_c1 p1_8
7533 -> Seq Scan on p1_c3_c2 p1_9
7537 /*+ IndexScanRegexp(p1 p1_.*val2.*)*/
7538 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7539 LOG: available indexes for IndexScanRegexp(p1): p1_val2
7540 LOG: available indexes for IndexScanRegexp(p1_c1): p1_c1_val2
7541 LOG: available indexes for IndexScanRegexp(p1_c2): p1_c2_val2
7542 LOG: available indexes for IndexScanRegexp(p1_c3): p1_c3_val2
7543 LOG: available indexes for IndexScanRegexp(p1_c4): p1_c4_val2
7544 LOG: available indexes for IndexScanRegexp(p1_c1_c1): p1_c1_c1_val2
7545 LOG: available indexes for IndexScanRegexp(p1_c1_c2): p1_c1_c2_val2
7546 LOG: available indexes for IndexScanRegexp(p1_c3_c1): p1_c3_c1_val2
7547 LOG: available indexes for IndexScanRegexp(p1_c3_c2): p1_c3_c2_val2
7550 IndexScanRegexp(p1 p1_.*val2.*)
7556 -------------------------------------------------------
7558 -> Index Scan using p1_val2 on p1 p1_1
7559 Index Cond: (val = 1)
7560 -> Index Scan using p1_c1_val2 on p1_c1 p1_2
7561 Index Cond: (val = 1)
7562 -> Index Scan using p1_c2_val2 on p1_c2 p1_3
7563 Index Cond: (val = 1)
7564 -> Index Scan using p1_c3_val2 on p1_c3 p1_4
7565 Index Cond: (val = 1)
7566 -> Index Scan using p1_c4_val2 on p1_c4 p1_5
7567 Index Cond: (val = 1)
7568 -> Index Scan using p1_c1_c1_val2 on p1_c1_c1 p1_6
7569 Index Cond: (val = 1)
7570 -> Index Scan using p1_c1_c2_val2 on p1_c1_c2 p1_7
7571 Index Cond: (val = 1)
7572 -> Index Scan using p1_c3_c1_val2 on p1_c3_c1 p1_8
7573 Index Cond: (val = 1)
7574 -> Index Scan using p1_c3_c2_val2 on p1_c3_c2 p1_9
7575 Index Cond: (val = 1)
7578 /*+ IndexScanRegexp(p1 p1[^_].*)*/
7579 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7580 LOG: available indexes for IndexScanRegexp(p1):
7581 LOG: available indexes for IndexScanRegexp(p1_c1):
7582 LOG: available indexes for IndexScanRegexp(p1_c2):
7583 LOG: available indexes for IndexScanRegexp(p1_c3):
7584 LOG: available indexes for IndexScanRegexp(p1_c4):
7585 LOG: available indexes for IndexScanRegexp(p1_c1_c1):
7586 LOG: available indexes for IndexScanRegexp(p1_c1_c2):
7587 LOG: available indexes for IndexScanRegexp(p1_c3_c1):
7588 LOG: available indexes for IndexScanRegexp(p1_c3_c2):
7591 IndexScanRegexp(p1 p1[^_].*)
7597 ---------------------------------
7599 -> Seq Scan on p1 p1_1
7601 -> Seq Scan on p1_c1 p1_2
7603 -> Seq Scan on p1_c2 p1_3
7605 -> Seq Scan on p1_c3 p1_4
7607 -> Seq Scan on p1_c4 p1_5
7609 -> Seq Scan on p1_c1_c1 p1_6
7611 -> Seq Scan on p1_c1_c2 p1_7
7613 -> Seq Scan on p1_c3_c1 p1_8
7615 -> Seq Scan on p1_c3_c2 p1_9
7619 /*+ IndexScan(p1 p1_.*val2.*)*/
7620 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7621 LOG: available indexes for IndexScan(p1):
7622 LOG: available indexes for IndexScan(p1_c1):
7623 LOG: available indexes for IndexScan(p1_c2):
7624 LOG: available indexes for IndexScan(p1_c3):
7625 LOG: available indexes for IndexScan(p1_c4):
7626 LOG: available indexes for IndexScan(p1_c1_c1):
7627 LOG: available indexes for IndexScan(p1_c1_c2):
7628 LOG: available indexes for IndexScan(p1_c3_c1):
7629 LOG: available indexes for IndexScan(p1_c3_c2):
7632 IndexScan(p1 p1_.*val2.*)
7638 ---------------------------------
7640 -> Seq Scan on p1 p1_1
7642 -> Seq Scan on p1_c1 p1_2
7644 -> Seq Scan on p1_c2 p1_3
7646 -> Seq Scan on p1_c3 p1_4
7648 -> Seq Scan on p1_c4 p1_5
7650 -> Seq Scan on p1_c1_c1 p1_6
7652 -> Seq Scan on p1_c1_c2 p1_7
7654 -> Seq Scan on p1_c3_c1 p1_8
7656 -> Seq Scan on p1_c3_c2 p1_9
7660 /*+ IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)*/
7661 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7662 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_pkey
7663 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_pkey
7664 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_pkey
7665 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_pkey
7666 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_pkey
7667 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7668 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7669 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7670 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7673 IndexOnlyScanRegexp(p1 p1_.*[^0-9]$)
7679 ---------------------------------
7681 -> Seq Scan on p1 p1_1
7683 -> Seq Scan on p1_c1 p1_2
7685 -> Seq Scan on p1_c2 p1_3
7687 -> Seq Scan on p1_c3 p1_4
7689 -> Seq Scan on p1_c4 p1_5
7691 -> Seq Scan on p1_c1_c1 p1_6
7693 -> Seq Scan on p1_c1_c2 p1_7
7695 -> Seq Scan on p1_c3_c1 p1_8
7697 -> Seq Scan on p1_c3_c2 p1_9
7701 /*+ IndexOnlyScanRegexp(p1 p1_.*val2.*)*/
7702 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7703 LOG: available indexes for IndexOnlyScanRegexp(p1): p1_val2
7704 LOG: available indexes for IndexOnlyScanRegexp(p1_c1): p1_c1_val2
7705 LOG: available indexes for IndexOnlyScanRegexp(p1_c2): p1_c2_val2
7706 LOG: available indexes for IndexOnlyScanRegexp(p1_c3): p1_c3_val2
7707 LOG: available indexes for IndexOnlyScanRegexp(p1_c4): p1_c4_val2
7708 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1): p1_c1_c1_val2
7709 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2): p1_c1_c2_val2
7710 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1): p1_c3_c1_val2
7711 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2): p1_c3_c2_val2
7714 IndexOnlyScanRegexp(p1 p1_.*val2.*)
7720 ------------------------------------------------------------
7722 -> Index Only Scan using p1_val2 on p1 p1_1
7723 Index Cond: (val = 1)
7724 -> Index Only Scan using p1_c1_val2 on p1_c1 p1_2
7725 Index Cond: (val = 1)
7726 -> Index Only Scan using p1_c2_val2 on p1_c2 p1_3
7727 Index Cond: (val = 1)
7728 -> Index Only Scan using p1_c3_val2 on p1_c3 p1_4
7729 Index Cond: (val = 1)
7730 -> Index Only Scan using p1_c4_val2 on p1_c4 p1_5
7731 Index Cond: (val = 1)
7732 -> Index Only Scan using p1_c1_c1_val2 on p1_c1_c1 p1_6
7733 Index Cond: (val = 1)
7734 -> Index Only Scan using p1_c1_c2_val2 on p1_c1_c2 p1_7
7735 Index Cond: (val = 1)
7736 -> Index Only Scan using p1_c3_c1_val2 on p1_c3_c1 p1_8
7737 Index Cond: (val = 1)
7738 -> Index Only Scan using p1_c3_c2_val2 on p1_c3_c2 p1_9
7739 Index Cond: (val = 1)
7742 /*+ IndexOnlyScanRegexp(p1 p1[^_].*)*/
7743 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7744 LOG: available indexes for IndexOnlyScanRegexp(p1):
7745 LOG: available indexes for IndexOnlyScanRegexp(p1_c1):
7746 LOG: available indexes for IndexOnlyScanRegexp(p1_c2):
7747 LOG: available indexes for IndexOnlyScanRegexp(p1_c3):
7748 LOG: available indexes for IndexOnlyScanRegexp(p1_c4):
7749 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c1):
7750 LOG: available indexes for IndexOnlyScanRegexp(p1_c1_c2):
7751 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c1):
7752 LOG: available indexes for IndexOnlyScanRegexp(p1_c3_c2):
7755 IndexOnlyScanRegexp(p1 p1[^_].*)
7761 ---------------------------------
7763 -> Seq Scan on p1 p1_1
7765 -> Seq Scan on p1_c1 p1_2
7767 -> Seq Scan on p1_c2 p1_3
7769 -> Seq Scan on p1_c3 p1_4
7771 -> Seq Scan on p1_c4 p1_5
7773 -> Seq Scan on p1_c1_c1 p1_6
7775 -> Seq Scan on p1_c1_c2 p1_7
7777 -> Seq Scan on p1_c3_c1 p1_8
7779 -> Seq Scan on p1_c3_c2 p1_9
7783 /*+ IndexOnlyScan(p1 p1_.*val2.*)*/
7784 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7785 LOG: available indexes for IndexOnlyScan(p1):
7786 LOG: available indexes for IndexOnlyScan(p1_c1):
7787 LOG: available indexes for IndexOnlyScan(p1_c2):
7788 LOG: available indexes for IndexOnlyScan(p1_c3):
7789 LOG: available indexes for IndexOnlyScan(p1_c4):
7790 LOG: available indexes for IndexOnlyScan(p1_c1_c1):
7791 LOG: available indexes for IndexOnlyScan(p1_c1_c2):
7792 LOG: available indexes for IndexOnlyScan(p1_c3_c1):
7793 LOG: available indexes for IndexOnlyScan(p1_c3_c2):
7796 IndexOnlyScan(p1 p1_.*val2.*)
7802 ---------------------------------
7804 -> Seq Scan on p1 p1_1
7806 -> Seq Scan on p1_c1 p1_2
7808 -> Seq Scan on p1_c2 p1_3
7810 -> Seq Scan on p1_c3 p1_4
7812 -> Seq Scan on p1_c4 p1_5
7814 -> Seq Scan on p1_c1_c1 p1_6
7816 -> Seq Scan on p1_c1_c2 p1_7
7818 -> Seq Scan on p1_c3_c1 p1_8
7820 -> Seq Scan on p1_c3_c2 p1_9
7824 /*+ BitmapScanRegexp(p1 p1_.*[^0-9]$)*/
7825 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7826 LOG: available indexes for BitmapScanRegexp(p1): p1_pkey
7827 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_pkey
7828 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_pkey
7829 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_pkey
7830 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_pkey
7831 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_pkey
7832 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_pkey
7833 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_pkey
7834 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_pkey
7837 BitmapScanRegexp(p1 p1_.*[^0-9]$)
7843 ---------------------------------
7845 -> Seq Scan on p1 p1_1
7847 -> Seq Scan on p1_c1 p1_2
7849 -> Seq Scan on p1_c2 p1_3
7851 -> Seq Scan on p1_c3 p1_4
7853 -> Seq Scan on p1_c4 p1_5
7855 -> Seq Scan on p1_c1_c1 p1_6
7857 -> Seq Scan on p1_c1_c2 p1_7
7859 -> Seq Scan on p1_c3_c1 p1_8
7861 -> Seq Scan on p1_c3_c2 p1_9
7865 /*+ BitmapScanRegexp(p1 p1_.*val2.*)*/
7866 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7867 LOG: available indexes for BitmapScanRegexp(p1): p1_val2
7868 LOG: available indexes for BitmapScanRegexp(p1_c1): p1_c1_val2
7869 LOG: available indexes for BitmapScanRegexp(p1_c2): p1_c2_val2
7870 LOG: available indexes for BitmapScanRegexp(p1_c3): p1_c3_val2
7871 LOG: available indexes for BitmapScanRegexp(p1_c4): p1_c4_val2
7872 LOG: available indexes for BitmapScanRegexp(p1_c1_c1): p1_c1_c1_val2
7873 LOG: available indexes for BitmapScanRegexp(p1_c1_c2): p1_c1_c2_val2
7874 LOG: available indexes for BitmapScanRegexp(p1_c3_c1): p1_c3_c1_val2
7875 LOG: available indexes for BitmapScanRegexp(p1_c3_c2): p1_c3_c2_val2
7878 BitmapScanRegexp(p1 p1_.*val2.*)
7884 ------------------------------------------------
7886 -> Bitmap Heap Scan on p1 p1_1
7887 Recheck Cond: (val = 1)
7888 -> Bitmap Index Scan on p1_val2
7889 Index Cond: (val = 1)
7890 -> Bitmap Heap Scan on p1_c1 p1_2
7891 Recheck Cond: (val = 1)
7892 -> Bitmap Index Scan on p1_c1_val2
7893 Index Cond: (val = 1)
7894 -> Bitmap Heap Scan on p1_c2 p1_3
7895 Recheck Cond: (val = 1)
7896 -> Bitmap Index Scan on p1_c2_val2
7897 Index Cond: (val = 1)
7898 -> Bitmap Heap Scan on p1_c3 p1_4
7899 Recheck Cond: (val = 1)
7900 -> Bitmap Index Scan on p1_c3_val2
7901 Index Cond: (val = 1)
7902 -> Bitmap Heap Scan on p1_c4 p1_5
7903 Recheck Cond: (val = 1)
7904 -> Bitmap Index Scan on p1_c4_val2
7905 Index Cond: (val = 1)
7906 -> Bitmap Heap Scan on p1_c1_c1 p1_6
7907 Recheck Cond: (val = 1)
7908 -> Bitmap Index Scan on p1_c1_c1_val2
7909 Index Cond: (val = 1)
7910 -> Bitmap Heap Scan on p1_c1_c2 p1_7
7911 Recheck Cond: (val = 1)
7912 -> Bitmap Index Scan on p1_c1_c2_val2
7913 Index Cond: (val = 1)
7914 -> Bitmap Heap Scan on p1_c3_c1 p1_8
7915 Recheck Cond: (val = 1)
7916 -> Bitmap Index Scan on p1_c3_c1_val2
7917 Index Cond: (val = 1)
7918 -> Bitmap Heap Scan on p1_c3_c2 p1_9
7919 Recheck Cond: (val = 1)
7920 -> Bitmap Index Scan on p1_c3_c2_val2
7921 Index Cond: (val = 1)
7924 /*+ BitmapScanRegexp(p1 p1[^_].*)*/
7925 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7926 LOG: available indexes for BitmapScanRegexp(p1):
7927 LOG: available indexes for BitmapScanRegexp(p1_c1):
7928 LOG: available indexes for BitmapScanRegexp(p1_c2):
7929 LOG: available indexes for BitmapScanRegexp(p1_c3):
7930 LOG: available indexes for BitmapScanRegexp(p1_c4):
7931 LOG: available indexes for BitmapScanRegexp(p1_c1_c1):
7932 LOG: available indexes for BitmapScanRegexp(p1_c1_c2):
7933 LOG: available indexes for BitmapScanRegexp(p1_c3_c1):
7934 LOG: available indexes for BitmapScanRegexp(p1_c3_c2):
7937 BitmapScanRegexp(p1 p1[^_].*)
7943 ---------------------------------
7945 -> Seq Scan on p1 p1_1
7947 -> Seq Scan on p1_c1 p1_2
7949 -> Seq Scan on p1_c2 p1_3
7951 -> Seq Scan on p1_c3 p1_4
7953 -> Seq Scan on p1_c4 p1_5
7955 -> Seq Scan on p1_c1_c1 p1_6
7957 -> Seq Scan on p1_c1_c2 p1_7
7959 -> Seq Scan on p1_c3_c1 p1_8
7961 -> Seq Scan on p1_c3_c2 p1_9
7965 /*+ BitmapScan(p1 p1_.*val2.*)*/
7966 EXPLAIN (COSTS false) SELECT val FROM p1 WHERE val = 1;
7967 LOG: available indexes for BitmapScan(p1):
7968 LOG: available indexes for BitmapScan(p1_c1):
7969 LOG: available indexes for BitmapScan(p1_c2):
7970 LOG: available indexes for BitmapScan(p1_c3):
7971 LOG: available indexes for BitmapScan(p1_c4):
7972 LOG: available indexes for BitmapScan(p1_c1_c1):
7973 LOG: available indexes for BitmapScan(p1_c1_c2):
7974 LOG: available indexes for BitmapScan(p1_c3_c1):
7975 LOG: available indexes for BitmapScan(p1_c3_c2):
7978 BitmapScan(p1 p1_.*val2.*)
7984 ---------------------------------
7986 -> Seq Scan on p1 p1_1
7988 -> Seq Scan on p1_c1 p1_2
7990 -> Seq Scan on p1_c2 p1_3
7992 -> Seq Scan on p1_c3 p1_4
7994 -> Seq Scan on p1_c4 p1_5
7996 -> Seq Scan on p1_c1_c1 p1_6
7998 -> Seq Scan on p1_c1_c2 p1_7
8000 -> Seq Scan on p1_c3_c1 p1_8
8002 -> Seq Scan on p1_c3_c2 p1_9
8006 -- search from hint table
8007 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?;', '', 'SeqScan(t1)');
8008 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?;', '', 'IndexScan(t1)');
8009 INSERT INTO hint_plan.hints (norm_query_string, application_name, hints) VALUES ('EXPLAIN SELECT * FROM t1 WHERE t1.id = ?;', '', 'BitmapScan(t1)');
8010 SELECT * FROM hint_plan.hints ORDER BY id;
8011 id | norm_query_string | application_name | hints
8012 ----+----------------------------------------------------------+------------------+----------------
8013 1 | EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = ?; | | SeqScan(t1)
8014 2 | EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = ?; | | IndexScan(t1)
8015 3 | EXPLAIN SELECT * FROM t1 WHERE t1.id = ?; | | BitmapScan(t1)
8018 SET pg_hint_plan.enable_hint_table = on;
8019 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
8028 --------------------
8033 SET pg_hint_plan.enable_hint_table = off;
8034 EXPLAIN (COSTS false) SELECT * FROM t1 WHERE t1.id = 1;
8036 --------------------------------
8037 Index Scan using t1_pkey on t1
8038 Index Cond: (id = 1)
8041 TRUNCATE hint_plan.hints;
8042 VACUUM ANALYZE hint_plan.hints;
8044 EXPLAIN (COSTS false) SELECT id FROM t1 WHERE t1.id = 1;
8046 -------------------------------------
8047 Index Only Scan using t1_pkey on t1
8048 Index Cond: (id = 1)
8052 CREATE FUNCTION testfunc() RETURNS RECORD AS $$
8056 SELECT /*+ SeqScan(t1) */ * INTO ret FROM t1 LIMIT 1;
8059 $$ LANGUAGE plpgsql;
8068 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 LIMIT 1"
8069 PL/pgSQL function testfunc() line 5 at SQL statement
8076 DROP FUNCTION testfunc();
8077 CREATE FUNCTION testfunc() RETURNS void AS $$
8079 EXECUTE format('/*+ SeqScan(t1) */ SELECT * FROM t1');
8081 $$ LANGUAGE plpgsql;
8090 CONTEXT: SQL statement "/*+ SeqScan(t1) */ SELECT * FROM t1"
8091 PL/pgSQL function testfunc() line 3 at EXECUTE
8097 -- This should not use SeqScan(t1)
8098 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8112 DROP FUNCTION testfunc();
8113 CREATE FUNCTION testfunc() RETURNS void AS $$
8115 PERFORM 1, /*+ SeqScan(t1) */ * from t1;
8117 $$ LANGUAGE plpgsql;
8126 CONTEXT: SQL statement "SELECT 1, /*+ SeqScan(t1) */ * from t1"
8127 PL/pgSQL function testfunc() line 3 at PERFORM
8134 DROP FUNCTION testfunc();
8135 CREATE FUNCTION testfunc() RETURNS int AS $$
8141 FOR v IN SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id LOOP
8146 $$ LANGUAGE plpgsql;
8155 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ v FROM t1 ORDER BY id"
8156 PL/pgSQL function testfunc() line 7 at FOR over SELECT rows
8163 DROP FUNCTION testfunc();
8164 CREATE FUNCTION testfunc() RETURNS int AS $$
8171 FOR v IN EXECUTE 'SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id' LOOP
8176 $$ LANGUAGE plpgsql;
8185 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ val FROM t1 ORDER BY id"
8186 PL/pgSQL function testfunc() line 8 at FOR over EXECUTE statement
8193 DROP FUNCTION testfunc();
8194 CREATE FUNCTION testfunc() RETURNS int AS $$
8196 ref CURSOR FOR SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8201 sum := sum + rec.val;
8205 $$ LANGUAGE plpgsql;
8214 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8215 PL/pgSQL function testfunc() line 7 at FOR over cursor
8222 DROP FUNCTION testfunc();
8223 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8225 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id;
8227 $$ LANGUAGE plpgsql;
8228 SELECT * FROM testfunc() LIMIT 1;
8236 CONTEXT: SQL statement "SELECT /*+ SeqScan(t1) */ * FROM t1 ORDER BY id"
8237 PL/pgSQL function testfunc() line 3 at RETURN QUERY
8243 -- Test for error exit from inner SQL statement.
8244 DROP FUNCTION testfunc();
8245 CREATE FUNCTION testfunc() RETURNS SETOF t1 AS $$
8247 RETURN QUERY SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id;
8249 $$ LANGUAGE plpgsql;
8250 SELECT * FROM testfunc() LIMIT 1;
8251 ERROR: relation "ttx" does not exist
8252 LINE 1: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8254 QUERY: SELECT /*+ SeqScan(t1) */ * FROM ttx ORDER BY id
8255 CONTEXT: PL/pgSQL function testfunc() line 3 at RETURN QUERY
8256 -- this should not use SeqScan(t1) hint.
8257 /*+ IndexScan(t1) */ SELECT * from t1 LIMIT 1;
8270 DROP FUNCTION testfunc();
8271 DROP EXTENSION pg_hint_plan;
8272 CREATE FUNCTION reset_stats_and_wait() RETURNS void AS $$
8278 PERFORM pg_stat_reset();
8279 PERFORM pg_sleep(0.5);
8280 SELECT sum(seq_scan + idx_scan) from pg_stat_user_tables into rows;
8283 $$ LANGUAGE plpgsql;
8284 -- Dynamic query in pl/pgsql
8285 CREATE OR REPLACE FUNCTION dynsql1(x int) RETURNS int AS $$
8288 EXECUTE '/*+ IndexScan(t1) */ SELECT count(*) FROM t1 WHERE id < $1'
8292 $$ VOLATILE LANGUAGE plpgsql;
8294 SET pg_hint_plan.enable_hint = false;
8301 SELECT reset_stats_and_wait();
8302 reset_stats_and_wait
8303 ----------------------
8307 SELECT dynsql1(9000);
8319 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';
8320 relname | seq_scan | idx_scan
8321 ---------+----------+----------
8325 SET pg_hint_plan.enable_hint = true;
8326 SELECT reset_stats_and_wait();
8327 reset_stats_and_wait
8328 ----------------------
8332 SELECT dynsql1(9000);
8340 CONTEXT: SQL statement "/*+ IndexScan(t1) */ SELECT count(*) FROM t1 WHERE id < $1"
8341 PL/pgSQL function dynsql1(integer) line 4 at EXECUTE
8353 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';
8354 relname | seq_scan | idx_scan
8355 ---------+----------+----------
8359 -- Looped dynamic query in pl/pgsql
8360 CREATE OR REPLACE FUNCTION dynsql2(x int, OUT r int) AS $$
8366 FOR c IN SELECT f.f FROM (VALUES ('p1_c1'), ('p1_c2')) f(f) LOOP
8367 FOR s IN EXECUTE '/*+ IndexScan(' || c || ' ' || c || '_pkey) */ SELECT sum(val) FROM ' || c || ' WHERE id < ' || x LOOP
8372 $$ VOLATILE LANGUAGE plpgsql;
8373 SET pg_hint_plan.enable_hint = false;
8374 SELECT reset_stats_and_wait();
8375 reset_stats_and_wait
8376 ----------------------
8380 SELECT dynsql2(9000);
8392 -- one of the index scans happened while planning.
8393 SELECT relname, seq_scan, idx_scan FROM pg_stat_user_tables WHERE schemaname = 'public' AND (relname = 'p1_c1' OR relname = 'p1_c2');
8394 relname | seq_scan | idx_scan
8395 ---------+----------+----------
8400 SET pg_hint_plan.enable_hint = true;
8401 SELECT reset_stats_and_wait();
8402 reset_stats_and_wait
8403 ----------------------
8407 SELECT dynsql2(9000);
8408 LOG: available indexes for IndexScan(p1_c1): p1_c1_pkey
8409 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8410 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8411 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_pkey
8412 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8413 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8414 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_pkey
8415 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8416 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8419 IndexScan(p1_c1 p1_c1_pkey)
8424 CONTEXT: SQL statement "/*+ IndexScan(p1_c1 p1_c1_pkey) */ SELECT sum(val) FROM p1_c1 WHERE id < 9000"
8425 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8426 LOG: available indexes for IndexScan(p1_c2): p1_c2_pkey
8427 CONTEXT: SQL statement "/*+ IndexScan(p1_c2 p1_c2_pkey) */ SELECT sum(val) FROM p1_c2 WHERE id < 9000"
8428 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8431 IndexScan(p1_c2 p1_c2_pkey)
8436 CONTEXT: SQL statement "/*+ IndexScan(p1_c2 p1_c2_pkey) */ SELECT sum(val) FROM p1_c2 WHERE id < 9000"
8437 PL/pgSQL function dynsql2(integer) line 8 at FOR over EXECUTE statement
8449 -- the index scan happened while planning.
8450 SELECT relname, seq_scan, idx_scan FROM pg_stat_user_tables WHERE schemaname = 'public' AND (relname = 'p1_c1' OR relname = 'p1_c2');
8451 relname | seq_scan | idx_scan
8452 ---------+----------+----------
8457 -- Subqueries on inheritance tables under UNION
8458 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8460 SELECT val::int FROM p2 WHERE id < 1000;
8462 ---------------------------------------------
8465 -> Seq Scan on p1 p1_1
8466 Filter: (val < 1000)
8467 -> Seq Scan on p1_c1 p1_2
8468 Filter: (val < 1000)
8469 -> Seq Scan on p1_c2 p1_3
8470 Filter: (val < 1000)
8471 -> Seq Scan on p1_c3 p1_4
8472 Filter: (val < 1000)
8473 -> Seq Scan on p1_c4 p1_5
8474 Filter: (val < 1000)
8475 -> Seq Scan on p1_c1_c1 p1_6
8476 Filter: (val < 1000)
8477 -> Seq Scan on p1_c1_c2 p1_7
8478 Filter: (val < 1000)
8479 -> Seq Scan on p1_c3_c1 p1_8
8480 Filter: (val < 1000)
8481 -> Seq Scan on p1_c3_c2 p1_9
8482 Filter: (val < 1000)
8485 -> Seq Scan on p2 p2_1
8487 -> Seq Scan on p2_c1 p2_2
8489 -> Seq Scan on p2_c2 p2_3
8491 -> Seq Scan on p2_c3 p2_4
8493 -> Seq Scan on p2_c4 p2_5
8495 -> Seq Scan on p2_c1_c1 p2_6
8497 -> Seq Scan on p2_c1_c2 p2_7
8499 -> Seq Scan on p2_c3_c1 p2_8
8501 -> Seq Scan on p2_c3_c2 p2_9
8505 /*+ IndexScan(p1 p1_val2) */
8506 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8508 SELECT val::int FROM p2 WHERE id < 1000;
8509 LOG: available indexes for IndexScan(p1): p1_val3 p1_val2 p1_val1
8510 LOG: available indexes for IndexScan(p1_c1): p1_c1_val3 p1_c1_val2 p1_c1_val1
8511 LOG: available indexes for IndexScan(p1_c2): p1_c2_val3 p1_c2_val2 p1_c2_val1
8512 LOG: available indexes for IndexScan(p1_c3): p1_c3_val3 p1_c3_val2 p1_c3_val1
8513 LOG: available indexes for IndexScan(p1_c4): p1_c4_val3 p1_c4_val2 p1_c4_val1
8514 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_val3 p1_c1_c1_val2 p1_c1_c1_val1
8515 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_val3 p1_c1_c2_val2 p1_c1_c2_val1
8516 LOG: available indexes for IndexScan(p1_c3_c1): p1_c3_c1_val3 p1_c3_c1_val2 p1_c3_c1_val1
8517 LOG: available indexes for IndexScan(p1_c3_c2): p1_c3_c2_val3 p1_c3_c2_val2 p1_c3_c2_val1
8520 IndexScan(p1 p1_val2)
8526 -------------------------------------------------------------
8529 -> Index Scan using p1_val3 on p1 p1_1
8530 Index Cond: (val < 1000)
8531 -> Index Scan using p1_c1_val3 on p1_c1 p1_2
8532 Index Cond: (val < 1000)
8533 -> Index Scan using p1_c2_val3 on p1_c2 p1_3
8534 Index Cond: (val < 1000)
8535 -> Index Scan using p1_c3_val3 on p1_c3 p1_4
8536 Index Cond: (val < 1000)
8537 -> Index Scan using p1_c4_val3 on p1_c4 p1_5
8538 Index Cond: (val < 1000)
8539 -> Index Scan using p1_c1_c1_val3 on p1_c1_c1 p1_6
8540 Index Cond: (val < 1000)
8541 -> Index Scan using p1_c1_c2_val3 on p1_c1_c2 p1_7
8542 Index Cond: (val < 1000)
8543 -> Index Scan using p1_c3_c1_val3 on p1_c3_c1 p1_8
8544 Index Cond: (val < 1000)
8545 -> Index Scan using p1_c3_c2_val3 on p1_c3_c2 p1_9
8546 Index Cond: (val < 1000)
8549 -> Seq Scan on p2 p2_1
8551 -> Seq Scan on p2_c1 p2_2
8553 -> Seq Scan on p2_c2 p2_3
8555 -> Seq Scan on p2_c3 p2_4
8557 -> Seq Scan on p2_c4 p2_5
8559 -> Seq Scan on p2_c1_c1 p2_6
8561 -> Seq Scan on p2_c1_c2 p2_7
8563 -> Seq Scan on p2_c3_c1 p2_8
8565 -> Seq Scan on p2_c3_c2 p2_9
8569 /*+ IndexScan(p1 p1_val2) IndexScan(p2 p2_id_val_idx) */
8570 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8572 SELECT val::int FROM p2 WHERE id < 1000;
8573 LOG: available indexes for IndexScan(p1): p1_val3 p1_val2 p1_val1
8574 LOG: available indexes for IndexScan(p1_c1): p1_c1_val3 p1_c1_val2 p1_c1_val1
8575 LOG: available indexes for IndexScan(p1_c2): p1_c2_val3 p1_c2_val2 p1_c2_val1
8576 LOG: available indexes for IndexScan(p1_c3): p1_c3_val3 p1_c3_val2 p1_c3_val1
8577 LOG: available indexes for IndexScan(p1_c4): p1_c4_val3 p1_c4_val2 p1_c4_val1
8578 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_val3 p1_c1_c1_val2 p1_c1_c1_val1
8579 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_val3 p1_c1_c2_val2 p1_c1_c2_val1
8580 LOG: available indexes for IndexScan(p1_c3_c1): p1_c3_c1_val3 p1_c3_c1_val2 p1_c3_c1_val1
8581 LOG: available indexes for IndexScan(p1_c3_c2): p1_c3_c2_val3 p1_c3_c2_val2 p1_c3_c2_val1
8582 LOG: available indexes for IndexScan(p2): p2_id_val_idx
8583 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
8584 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
8585 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
8586 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
8587 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
8588 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
8589 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
8590 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
8593 IndexScan(p1 p1_val2)
8594 IndexScan(p2 p2_id_val_idx)
8600 -------------------------------------------------------------------------
8603 -> Index Scan using p1_val3 on p1 p1_1
8604 Index Cond: (val < 1000)
8605 -> Index Scan using p1_c1_val3 on p1_c1 p1_2
8606 Index Cond: (val < 1000)
8607 -> Index Scan using p1_c2_val3 on p1_c2 p1_3
8608 Index Cond: (val < 1000)
8609 -> Index Scan using p1_c3_val3 on p1_c3 p1_4
8610 Index Cond: (val < 1000)
8611 -> Index Scan using p1_c4_val3 on p1_c4 p1_5
8612 Index Cond: (val < 1000)
8613 -> Index Scan using p1_c1_c1_val3 on p1_c1_c1 p1_6
8614 Index Cond: (val < 1000)
8615 -> Index Scan using p1_c1_c2_val3 on p1_c1_c2 p1_7
8616 Index Cond: (val < 1000)
8617 -> Index Scan using p1_c3_c1_val3 on p1_c3_c1 p1_8
8618 Index Cond: (val < 1000)
8619 -> Index Scan using p1_c3_c2_val3 on p1_c3_c2 p1_9
8620 Index Cond: (val < 1000)
8623 -> Index Scan using p2_id_val_idx on p2 p2_1
8624 Index Cond: (id < 1000)
8625 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
8626 Index Cond: (id < 1000)
8627 -> Index Scan using p2_c2_id_val_idx on p2_c2 p2_3
8628 Index Cond: (id < 1000)
8629 -> Index Scan using p2_c3_id_val_idx on p2_c3 p2_4
8630 Index Cond: (id < 1000)
8631 -> Index Scan using p2_c4_id_val_idx on p2_c4 p2_5
8632 Index Cond: (id < 1000)
8633 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_6
8634 Index Cond: (id < 1000)
8635 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_7
8636 Index Cond: (id < 1000)
8637 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1 p2_8
8638 Index Cond: (id < 1000)
8639 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2 p2_9
8640 Index Cond: (id < 1000)
8644 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8646 SELECT val::int FROM p2 WHERE id < 1000;
8648 ---------------------------------------------------
8653 -> Seq Scan on p1 p1_1
8654 Filter: (val < 1000)
8655 -> Seq Scan on p1_c1 p1_2
8656 Filter: (val < 1000)
8657 -> Seq Scan on p1_c2 p1_3
8658 Filter: (val < 1000)
8659 -> Seq Scan on p1_c3 p1_4
8660 Filter: (val < 1000)
8661 -> Seq Scan on p1_c4 p1_5
8662 Filter: (val < 1000)
8663 -> Seq Scan on p1_c1_c1 p1_6
8664 Filter: (val < 1000)
8665 -> Seq Scan on p1_c1_c2 p1_7
8666 Filter: (val < 1000)
8667 -> Seq Scan on p1_c3_c1 p1_8
8668 Filter: (val < 1000)
8669 -> Seq Scan on p1_c3_c2 p1_9
8670 Filter: (val < 1000)
8673 -> Seq Scan on p2 p2_1
8675 -> Seq Scan on p2_c1 p2_2
8677 -> Seq Scan on p2_c2 p2_3
8679 -> Seq Scan on p2_c3 p2_4
8681 -> Seq Scan on p2_c4 p2_5
8683 -> Seq Scan on p2_c1_c1 p2_6
8685 -> Seq Scan on p2_c1_c2 p2_7
8687 -> Seq Scan on p2_c3_c1 p2_8
8689 -> Seq Scan on p2_c3_c2 p2_9
8693 /*+ IndexScan(p2 p2_id_val_idx) */
8694 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8696 SELECT val::int FROM p2 WHERE id < 1000;
8697 LOG: available indexes for IndexScan(p2): p2_id_val_idx
8698 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
8699 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
8700 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
8701 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
8702 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
8703 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
8704 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
8705 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
8708 IndexScan(p2 p2_id_val_idx)
8714 -------------------------------------------------------------------------------
8719 -> Seq Scan on p1 p1_1
8720 Filter: (val < 1000)
8721 -> Seq Scan on p1_c1 p1_2
8722 Filter: (val < 1000)
8723 -> Seq Scan on p1_c2 p1_3
8724 Filter: (val < 1000)
8725 -> Seq Scan on p1_c3 p1_4
8726 Filter: (val < 1000)
8727 -> Seq Scan on p1_c4 p1_5
8728 Filter: (val < 1000)
8729 -> Seq Scan on p1_c1_c1 p1_6
8730 Filter: (val < 1000)
8731 -> Seq Scan on p1_c1_c2 p1_7
8732 Filter: (val < 1000)
8733 -> Seq Scan on p1_c3_c1 p1_8
8734 Filter: (val < 1000)
8735 -> Seq Scan on p1_c3_c2 p1_9
8736 Filter: (val < 1000)
8739 -> Index Scan using p2_id_val_idx on p2 p2_1
8740 Index Cond: (id < 1000)
8741 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
8742 Index Cond: (id < 1000)
8743 -> Index Scan using p2_c2_id_val_idx on p2_c2 p2_3
8744 Index Cond: (id < 1000)
8745 -> Index Scan using p2_c3_id_val_idx on p2_c3 p2_4
8746 Index Cond: (id < 1000)
8747 -> Index Scan using p2_c4_id_val_idx on p2_c4 p2_5
8748 Index Cond: (id < 1000)
8749 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_6
8750 Index Cond: (id < 1000)
8751 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_7
8752 Index Cond: (id < 1000)
8753 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1 p2_8
8754 Index Cond: (id < 1000)
8755 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2 p2_9
8756 Index Cond: (id < 1000)
8759 /*+ IndexScan(p1 p1_val2) IndexScan(p2 p2_id_val_idx) */
8760 EXPLAIN (COSTS off) SELECT val FROM p1 WHERE val < 1000
8762 SELECT val::int FROM p2 WHERE id < 1000;
8763 LOG: available indexes for IndexScan(p1): p1_val3 p1_val2 p1_val1
8764 LOG: available indexes for IndexScan(p1_c1): p1_c1_val3 p1_c1_val2 p1_c1_val1
8765 LOG: available indexes for IndexScan(p1_c2): p1_c2_val3 p1_c2_val2 p1_c2_val1
8766 LOG: available indexes for IndexScan(p1_c3): p1_c3_val3 p1_c3_val2 p1_c3_val1
8767 LOG: available indexes for IndexScan(p1_c4): p1_c4_val3 p1_c4_val2 p1_c4_val1
8768 LOG: available indexes for IndexScan(p1_c1_c1): p1_c1_c1_val3 p1_c1_c1_val2 p1_c1_c1_val1
8769 LOG: available indexes for IndexScan(p1_c1_c2): p1_c1_c2_val3 p1_c1_c2_val2 p1_c1_c2_val1
8770 LOG: available indexes for IndexScan(p1_c3_c1): p1_c3_c1_val3 p1_c3_c1_val2 p1_c3_c1_val1
8771 LOG: available indexes for IndexScan(p1_c3_c2): p1_c3_c2_val3 p1_c3_c2_val2 p1_c3_c2_val1
8772 LOG: available indexes for IndexScan(p2): p2_id_val_idx
8773 LOG: available indexes for IndexScan(p2_c1): p2_c1_id_val_idx
8774 LOG: available indexes for IndexScan(p2_c2): p2_c2_id_val_idx
8775 LOG: available indexes for IndexScan(p2_c3): p2_c3_id_val_idx
8776 LOG: available indexes for IndexScan(p2_c4): p2_c4_id_val_idx
8777 LOG: available indexes for IndexScan(p2_c1_c1): p2_c1_c1_id_val_idx
8778 LOG: available indexes for IndexScan(p2_c1_c2): p2_c1_c2_id_val_idx
8779 LOG: available indexes for IndexScan(p2_c3_c1): p2_c3_c1_id_val_idx
8780 LOG: available indexes for IndexScan(p2_c3_c2): p2_c3_c2_id_val_idx
8783 IndexScan(p1 p1_val2)
8784 IndexScan(p2 p2_id_val_idx)
8790 -------------------------------------------------------------------------------
8795 -> Index Scan using p1_val3 on p1 p1_1
8796 Index Cond: (val < 1000)
8797 -> Index Scan using p1_c1_val3 on p1_c1 p1_2
8798 Index Cond: (val < 1000)
8799 -> Index Scan using p1_c2_val3 on p1_c2 p1_3
8800 Index Cond: (val < 1000)
8801 -> Index Scan using p1_c3_val3 on p1_c3 p1_4
8802 Index Cond: (val < 1000)
8803 -> Index Scan using p1_c4_val3 on p1_c4 p1_5
8804 Index Cond: (val < 1000)
8805 -> Index Scan using p1_c1_c1_val3 on p1_c1_c1 p1_6
8806 Index Cond: (val < 1000)
8807 -> Index Scan using p1_c1_c2_val3 on p1_c1_c2 p1_7
8808 Index Cond: (val < 1000)
8809 -> Index Scan using p1_c3_c1_val3 on p1_c3_c1 p1_8
8810 Index Cond: (val < 1000)
8811 -> Index Scan using p1_c3_c2_val3 on p1_c3_c2 p1_9
8812 Index Cond: (val < 1000)
8815 -> Index Scan using p2_id_val_idx on p2 p2_1
8816 Index Cond: (id < 1000)
8817 -> Index Scan using p2_c1_id_val_idx on p2_c1 p2_2
8818 Index Cond: (id < 1000)
8819 -> Index Scan using p2_c2_id_val_idx on p2_c2 p2_3
8820 Index Cond: (id < 1000)
8821 -> Index Scan using p2_c3_id_val_idx on p2_c3 p2_4
8822 Index Cond: (id < 1000)
8823 -> Index Scan using p2_c4_id_val_idx on p2_c4 p2_5
8824 Index Cond: (id < 1000)
8825 -> Index Scan using p2_c1_c1_id_val_idx on p2_c1_c1 p2_6
8826 Index Cond: (id < 1000)
8827 -> Index Scan using p2_c1_c2_id_val_idx on p2_c1_c2 p2_7
8828 Index Cond: (id < 1000)
8829 -> Index Scan using p2_c3_c1_id_val_idx on p2_c3_c1 p2_8
8830 Index Cond: (id < 1000)
8831 -> Index Scan using p2_c3_c2_id_val_idx on p2_c3_c2 p2_9
8832 Index Cond: (id < 1000)
8838 -- Explain result includes "Planning time" if COSTS is enabled, but
8839 -- this test needs it enabled for get rows count. So do tests via psql
8840 -- and grep -v the mutable line.
8841 -- Parse error check
8842 /*+ Rows() */ SELECT 1;
8843 INFO: pg_hint_plan: hint syntax error at or near " "
8844 DETAIL: Rows hint needs at least one relation followed by one correction term.
8857 /*+ Rows(x) */ SELECT 1;
8858 INFO: pg_hint_plan: hint syntax error at or near " "
8859 DETAIL: Rows hint needs at least one relation followed by one correction term.
8873 \o results/pg_hint_plan.tmpout
8874 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8876 \! sql/maskout.sh results/pg_hint_plan.tmpout
8879 Merge Join (cost=xxx..xxx rows=1000 width=xxx)
8880 Merge Cond: (t1.id = t2.id)
8881 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8882 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8884 \o results/pg_hint_plan.tmpout
8885 /*+ Rows(t1 t2 #99) */
8886 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8895 \! sql/maskout.sh results/pg_hint_plan.tmpout
8898 Merge Join (cost=xxx..xxx rows=99 width=xxx)
8899 Merge Cond: (t1.id = t2.id)
8900 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8901 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8903 \o results/pg_hint_plan.tmpout
8904 /*+ Rows(t1 t2 +99) */
8905 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8914 \! sql/maskout.sh results/pg_hint_plan.tmpout
8917 Merge Join (cost=xxx..xxx rows=1099 width=xxx)
8918 Merge Cond: (t1.id = t2.id)
8919 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8920 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8922 \o results/pg_hint_plan.tmpout
8923 /*+ Rows(t1 t2 -99) */
8924 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8933 \! sql/maskout.sh results/pg_hint_plan.tmpout
8936 Merge Join (cost=xxx..xxx rows=901 width=xxx)
8937 Merge Cond: (t1.id = t2.id)
8938 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8939 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8941 \o results/pg_hint_plan.tmpout
8942 /*+ Rows(t1 t2 *99) */
8943 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8952 \! sql/maskout.sh results/pg_hint_plan.tmpout
8955 Merge Join (cost=xxx..xxx rows=99000 width=xxx)
8956 Merge Cond: (t1.id = t2.id)
8957 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8958 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8960 \o results/pg_hint_plan.tmpout
8961 /*+ Rows(t1 t2 *0.01) */
8962 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
8971 \! sql/maskout.sh results/pg_hint_plan.tmpout
8974 Merge Join (cost=xxx..xxx rows=10 width=xxx)
8975 Merge Cond: (t1.id = t2.id)
8976 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8977 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
8979 \o results/pg_hint_plan.tmpout
8980 /*+ Rows(t1 t2 #aa) */
8981 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
8982 INFO: pg_hint_plan: hint syntax error at or near "aa"
8983 DETAIL: Rows hint requires valid number as rows estimation.
8992 \! sql/maskout.sh results/pg_hint_plan.tmpout
8995 Merge Join (cost=xxx..xxx rows=1000 width=xxx)
8996 Merge Cond: (t1.id = t2.id)
8997 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
8998 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
9000 \o results/pg_hint_plan.tmpout
9001 /*+ Rows(t1 t2 /99) */
9002 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id); -- ERROR
9003 INFO: pg_hint_plan: hint syntax error at or near "/99"
9004 DETAIL: Unrecognized rows value type notation.
9013 \! sql/maskout.sh results/pg_hint_plan.tmpout
9016 Merge Join (cost=xxx..xxx rows=1000 width=xxx)
9017 Merge Cond: (t1.id = t2.id)
9018 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
9019 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
9022 \o results/pg_hint_plan.tmpout
9023 /*+ Rows(t1 t2 -99999) */
9024 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id);
9025 WARNING: Force estimate to be at least one row, to avoid possible divide-by-zero when interpolating costs : Rows(t1 t2 -99999)
9034 \! sql/maskout.sh results/pg_hint_plan.tmpout
9037 Merge Join (cost=xxx..xxx rows=1 width=xxx)
9038 Merge Cond: (t1.id = t2.id)
9039 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
9040 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
9042 -- complex join tree
9043 \o results/pg_hint_plan.tmpout
9044 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
9046 \! sql/maskout.sh results/pg_hint_plan.tmpout
9049 Merge Join (cost=xxx..xxx rows=10 width=xxx)
9050 Merge Cond: (t1.id = t3.id)
9051 -> Merge Join (cost=xxx..xxx rows=1000 width=xxx)
9052 Merge Cond: (t1.id = t2.id)
9053 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
9054 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
9055 -> Sort (cost=xxx..xxx rows=100 width=xxx)
9057 -> Seq Scan on t3 (cost=xxx..xxx rows=100 width=xxx)
9059 \o results/pg_hint_plan.tmpout
9060 /*+ Rows(t1 t2 #22) */
9061 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
9070 \! sql/maskout.sh results/pg_hint_plan.tmpout
9073 Merge Join (cost=xxx..xxx rows=1 width=xxx)
9074 Merge Cond: (t1.id = t3.id)
9075 -> Merge Join (cost=xxx..xxx rows=22 width=xxx)
9076 Merge Cond: (t1.id = t2.id)
9077 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
9078 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
9079 -> Sort (cost=xxx..xxx rows=100 width=xxx)
9081 -> Seq Scan on t3 (cost=xxx..xxx rows=100 width=xxx)
9083 \o results/pg_hint_plan.tmpout
9084 /*+ Rows(t1 t3 *10) */
9085 EXPLAIN SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
9094 set max_parallel_workers_per_gather to DEFAULT;
9095 \! sql/maskout.sh results/pg_hint_plan.tmpout
9098 Merge Join (cost=xxx..xxx rows=100 width=xxx)
9099 Merge Cond: (t1.id = t3.id)
9100 -> Merge Join (cost=xxx..xxx rows=1000 width=xxx)
9101 Merge Cond: (t1.id = t2.id)
9102 -> Index Scan using t1_pkey on t1 (cost=xxx..xxx rows=10000 width=xxx)
9103 -> Index Scan using t2_pkey on t2 (cost=xxx..xxx rows=1000 width=xxx)
9104 -> Sort (cost=xxx..xxx rows=100 width=xxx)
9106 -> Seq Scan on t3 (cost=xxx..xxx rows=100 width=xxx)
9108 \! rm results/pg_hint_plan.tmpout
9110 set client_min_messages to 'DEBUG1';
9111 set pg_hint_plan.debug_level to 'verbose';
9112 /*+ SeqScan( */ SELECT 1;
9113 INFO: pg_hint_plan: hint syntax error at or near ""
9114 DETAIL: Closing parenthesis is necessary.
9120 /*+ SeqScan(t1) */ SELECT * FROM t1 LIMIT 0;
9132 set pg_hint_plan.message_level to 'DEBUG1';
9133 set pg_hint_plan.parse_messages to 'NOTICE';
9134 /*+ SeqScan( */ SELECT 1;
9135 NOTICE: pg_hint_plan: hint syntax error at or near ""
9136 DETAIL: Closing parenthesis is necessary.
9142 /*+ SeqScan(t1) */ SELECT * FROM t1 LIMIT 0;
9143 DEBUG: pg_hint_plan:
9154 -- all hint types together
9155 /*+ SeqScan(t1) MergeJoin(t1 t2) Leading(t1 t2) Rows(t1 t2 +10) Parallel(t1 8 hard) Set(random_page_cost 2.0)*/
9156 EXPLAIN (costs off) SELECT * FROM t1 JOIN t2 ON (t1.id = t2.id) JOIN t3 ON (t3.id = t2.id);
9157 DEBUG: adjusted rows 1000 to 1010
9158 DEBUG: pg_hint_plan:
9163 Set(random_page_cost 2.0)
9171 -------------------------------------------------
9174 Merge Cond: (t2.id = t1.id)
9175 -> Index Scan using t2_pkey on t2
9180 -> Parallel Seq Scan on t1
9181 -> Index Scan using t3_pkey on t3
9182 Index Cond: (id = t1.id)