1 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
3 --------------------------------------
5 Merge Cond: (t1.id = t2.id)
6 -> Index Scan using t1_pkey on t1
7 -> Index Scan using t2_pkey on t2
10 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.val = t2.val;
12 -------------------------------------------
14 Merge Cond: (t2.val = t1.val)
15 -> Index Scan using t2_val on t2
17 -> Index Scan using t1_val on t1
21 SET pg_hint_plan.debug_print TO on;
22 SET client_min_messages TO LOG;
23 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
25 --------------------------------------
27 Merge Cond: (t1.id = t2.id)
28 -> Index Scan using t1_pkey on t1
29 -> Index Scan using t2_pkey on t2
32 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.val = t2.val;
34 -------------------------------------------
36 Merge Cond: (t2.val = t1.val)
37 -> Index Scan using t2_val on t2
39 -> Index Scan using t1_val on t1
43 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
44 INFO: hint syntax error at or near "Test (t1 t2) "
45 DETAIL: Keyword "Test" does not exist.
47 --------------------------------------
49 Merge Cond: (t1.id = t2.id)
50 -> Index Scan using t1_pkey on t1
51 -> Index Scan using t2_pkey on t2
54 SET pg_hint_plan.enable TO off;
56 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
58 --------------------------------------
60 Merge Cond: (t1.id = t2.id)
61 -> Index Scan using t1_pkey on t1
62 -> Index Scan using t2_pkey on t2
65 SET pg_hint_plan.enable TO on;
66 /*+Set(enable_indexscan off)*/
67 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
70 Set(enable_indexscan off)
76 ------------------------------
78 Hash Cond: (t1.id = t2.id)
84 /*+ Set(enable_indexscan off) Set(enable_hashjoin off) */
85 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
88 Set(enable_hashjoin off)
89 Set(enable_indexscan off)
95 -------------------------------
97 Merge Cond: (t1.id = t2.id)
106 /*+ Set ( enable_indexscan off ) */
107 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
110 Set(enable_indexscan off)
116 ------------------------------
118 Hash Cond: (t1.id = t2.id)
131 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
134 Set(enable_indexscan off)
140 ------------------------------
142 Hash Cond: (t1.id = t2.id)
148 /*+ Set(enable_indexscan off)Set(enable_nestloop off)Set(enable_mergejoin off)
149 Set(enable_seqscan off)
151 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
154 Set(enable_indexscan off)
155 Set(enable_mergejoin off)
156 Set(enable_nestloop off)
157 Set(enable_seqscan off)
163 --------------------------------------------
165 Hash Cond: (t1.id = t2.id)
166 -> Index Scan using t1_pkey on t1
168 -> Index Scan using t2_pkey on t2
171 /*+Set(work_mem "1M")*/
172 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
173 INFO: invalid value for parameter "work_mem": "1M"
174 HINT: Valid units for this parameter are "kB", "MB", and "GB".
183 --------------------------------------
185 Merge Cond: (t1.id = t2.id)
186 -> Index Scan using t1_pkey on t1
187 -> Index Scan using t2_pkey on t2
190 /*+Set(work_mem "1MB")*/
191 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
200 --------------------------------------
202 Merge Cond: (t1.id = t2.id)
203 -> Index Scan using t1_pkey on t1
204 -> Index Scan using t2_pkey on t2
207 /*+Set(work_mem TO "1MB")*/
208 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
209 INFO: hint syntax error at or near ""1MB")"
210 DETAIL: Closed parenthesis is necessary.
212 --------------------------------------
214 Merge Cond: (t1.id = t2.id)
215 -> Index Scan using t1_pkey on t1
216 -> Index Scan using t2_pkey on t2
220 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
221 INFO: hint syntax error at or near "t2)"
222 DETAIL: Closed parenthesis is necessary.
224 --------------------------------------
226 Merge Cond: (t1.id = t2.id)
227 -> Index Scan using t1_pkey on t1
228 -> Index Scan using t2_pkey on t2
232 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
241 ------------------------------
243 Hash Cond: (t1.id = t2.id)
249 /*+SeqScan(t1)IndexScan(t2)*/
250 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
260 --------------------------------------------
262 Hash Cond: (t1.id = t2.id)
265 -> Index Scan using t2_pkey on t2
269 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
278 --------------------------------------
281 -> Index Scan using t2_pkey on t2
282 Index Cond: (id = t1.id)
285 /*+BitmapScan(t2)NoSeqScan(t1)*/
286 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
296 --------------------------------------
298 -> Index Scan using t1_pkey on t1
299 -> Index Scan using t2_pkey on t2
300 Index Cond: (id = t1.id)
304 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
313 ------------------------------
315 Hash Cond: (t1.id = t2.id)
321 /*+NoBitmapScan(t1)*/
322 EXPLAIN (COSTS false) SELECT * FROM t1, t4 WHERE t1.val < 10;
331 ----------------------------
340 EXPLAIN (COSTS false) SELECT * FROM t3, t4 WHERE t3.id = t4.id AND t4.ctid = '(1,1)';
349 -----------------------------------------------
351 Merge Cond: (t3.id = t4.id)
352 -> Index Scan using t3_pkey on t3
356 TID Cond: (ctid = '(1,1)'::tid)
360 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)';
369 ---------------------------------------
372 Filter: (ctid = '(1,1)'::tid)
373 -> Index Scan using t2_pkey on t2
374 Index Cond: (id = t1.id)
378 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
387 ------------------------------
389 Hash Cond: (t1.id = t2.id)
396 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
405 --------------------------------------
408 -> Index Scan using t1_pkey on t1
409 Index Cond: (id = t2.id)
412 /*+NoMergeJoin(t1 t2)*/
413 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
422 ------------------------------
424 Hash Cond: (t1.id = t2.id)
430 /*+MergeJoin(t1 t3)*/
431 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
440 -------------------------------------
442 Merge Cond: (t1.val = t3.val)
443 -> Index Scan using t1_val on t1
450 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
459 -------------------------------------
462 -> Index Scan using t1_val on t1
463 Index Cond: (val = t3.val)
466 /*+NoHashJoin(t1 t3)*/
467 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
476 -------------------------------------
479 -> Index Scan using t1_val on t1
480 Index Cond: (val = t3.val)
483 /*+MergeJoin(t4 t1 t2 t3)*/
484 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
487 MergeJoin(t1 t2 t3 t4)
493 --------------------------------------------------
495 Merge Cond: (t1.id = t4.id)
497 Merge Cond: (t1.id = t3.id)
499 Merge Cond: (t1.id = t2.id)
500 -> Index Scan using t1_pkey on t1
501 -> Index Scan using t2_pkey on t2
502 -> Index Scan using t3_pkey on t3
508 /*+HashJoin(t3 t4 t1 t2)*/
509 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
512 HashJoin(t1 t2 t3 t4)
518 --------------------------------------------------------
520 Hash Cond: (t3.id = t1.id)
524 Merge Cond: (t1.id = t4.id)
526 Merge Cond: (t1.id = t2.id)
527 -> Index Scan using t1_pkey on t1
528 -> Index Scan using t2_pkey on t2
534 /*+NestLoop(t2 t3 t4 t1) IndexScan(t3)*/
535 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
539 NestLoop(t1 t2 t3 t4)
545 --------------------------------------------------
548 Merge Cond: (t1.id = t4.id)
550 Merge Cond: (t1.id = t2.id)
551 -> Index Scan using t1_pkey on t1
552 -> Index Scan using t2_pkey on t2
556 -> Index Scan using t3_pkey on t3
557 Index Cond: (id = t1.id)
560 /*+NoNestLoop(t4 t1 t3 t2)*/
561 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
564 NoNestLoop(t1 t2 t3 t4)
570 --------------------------------------------------
572 Merge Cond: (t1.id = t4.id)
574 Merge Cond: (t1.id = t3.id)
576 Merge Cond: (t1.id = t2.id)
577 -> Index Scan using t1_pkey on t1
578 -> Index Scan using t2_pkey on t2
579 -> Index Scan using t3_pkey on t3
586 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
595 --------------------------------------------------
599 Merge Cond: (t3.id = t4.id)
600 -> Index Scan using t3_pkey on t3
604 -> Index Scan using t2_pkey on t2
605 Index Cond: (id = t3.id)
606 -> Index Scan using t1_pkey on t1
607 Index Cond: (id = t2.id)
610 /*+Leading(t3 t4 t1)*/
611 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
620 --------------------------------------------------
623 Merge Cond: (t3.id = t1.id)
625 Merge Cond: (t3.id = t4.id)
626 -> Index Scan using t3_pkey on t3
630 -> Index Scan using t1_pkey on t1
631 -> Index Scan using t2_pkey on t2
632 Index Cond: (id = t1.id)
635 /*+Leading(t3 t4 t1 t2)*/
636 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
645 --------------------------------------------------
648 Merge Cond: (t3.id = t1.id)
650 Merge Cond: (t3.id = t4.id)
651 -> Index Scan using t3_pkey on t3
655 -> Index Scan using t1_pkey on t1
656 -> Index Scan using t2_pkey on t2
657 Index Cond: (id = t1.id)
660 /*+Leading(t3 t4 t1 t2 t1)*/
661 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
662 INFO: hint syntax error at or near "Leading(t3 t4 t1 t2 t1)"
663 DETAIL: In Leading hint, specified relation name 4 or less.
669 Leading(t3 t4 t1 t2 t1)
672 --------------------------------------------------
674 Merge Cond: (t1.id = t4.id)
676 Merge Cond: (t1.id = t3.id)
678 Merge Cond: (t1.id = t2.id)
679 -> Index Scan using t1_pkey on t1
680 -> Index Scan using t2_pkey on t2
681 -> Index Scan using t3_pkey on t3
687 /*+Leading(t3 t4 t4)*/
688 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
697 --------------------------------------------------
701 Merge Cond: (t3.id = t4.id)
702 -> Index Scan using t3_pkey on t3
706 -> Index Scan using t2_pkey on t2
707 Index Cond: (id = t3.id)
708 -> Index Scan using t1_pkey on t1
709 Index Cond: (id = t2.id)
712 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
714 -----------------------------------------------
716 -> Values Scan on "*VALUES*"
717 -> Index Scan using t1_pkey on t1
718 Index Cond: (id = "*VALUES*".column1)
722 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
723 INFO: hint syntax error at or near "HashJoin(t1 t2)"
724 DETAIL: Relation "t2" does not exist.
733 -----------------------------------------------
735 -> Values Scan on "*VALUES*"
736 -> Index Scan using t1_pkey on t1
737 Index Cond: (id = "*VALUES*".column1)
740 /*+HashJoin(t1 *VALUES*)*/
741 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
744 HashJoin(*VALUES* t1)
750 -------------------------------------------
752 Hash Cond: (t1.id = "*VALUES*".column1)
755 -> Values Scan on "*VALUES*"
758 /*+HashJoin(t1 *VALUES*) IndexScan(t1) IndexScan(*VALUES*)*/
759 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
763 HashJoin(*VALUES* t1)
770 -------------------------------------------
772 Hash Cond: (t1.id = "*VALUES*".column1)
773 -> Index Scan using t1_pkey on t1
775 -> Values Scan on "*VALUES*"
778 EXPLAIN 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);
780 -----------------------------------------------------------------------------------------------------
781 Index Scan using t1_pkey on t1 (cost=1.89..10.16 rows=1 width=4)
782 Index Cond: (id = $3)
783 InitPlan 2 (returns $1)
784 -> Result (cost=0.94..0.95 rows=1 width=0)
785 InitPlan 1 (returns $0)
786 -> Limit (cost=0.00..0.94 rows=1 width=4)
787 -> Index Scan Backward using t1_pkey on t1 v_1 (cost=0.00..8.43 rows=9 width=4)
788 Index Cond: ((id IS NOT NULL) AND (id < 10))
789 InitPlan 4 (returns $3)
790 -> Result (cost=0.94..0.95 rows=1 width=0)
791 InitPlan 3 (returns $2)
792 -> Limit (cost=0.00..0.94 rows=1 width=4)
793 -> Index Scan Backward using t1_pkey on t1 v_2 (cost=0.00..8.43 rows=9 width=4)
794 Index Cond: ((id IS NOT NULL) AND (id < 10))
798 EXPLAIN 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);
807 -----------------------------------------------------------------------------------------------------
808 Index Scan using t1_pkey on t1 (cost=29.34..37.61 rows=1 width=4)
809 Index Cond: (id = $2)
810 InitPlan 1 (returns $0)
811 -> Aggregate (cost=28.38..28.39 rows=1 width=4)
812 -> Bitmap Heap Scan on t1 v_1 (cost=4.32..28.36 rows=9 width=4)
813 Recheck Cond: (id < 10)
814 -> Bitmap Index Scan on t1_pkey (cost=0.00..4.32 rows=9 width=0)
815 Index Cond: (id < 10)
816 InitPlan 3 (returns $2)
817 -> Result (cost=0.94..0.95 rows=1 width=0)
818 InitPlan 2 (returns $1)
819 -> Limit (cost=0.00..0.94 rows=1 width=4)
820 -> Index Scan Backward using t1_pkey on t1 v_2 (cost=0.00..8.43 rows=9 width=4)
821 Index Cond: ((id IS NOT NULL) AND (id < 10))
825 EXPLAIN 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);
834 -----------------------------------------------------------------------------------------------------
835 Index Scan using t1_pkey on t1 (cost=29.34..37.61 rows=1 width=4)
836 Index Cond: (id = $2)
837 InitPlan 2 (returns $1)
838 -> Result (cost=0.94..0.95 rows=1 width=0)
839 InitPlan 1 (returns $0)
840 -> Limit (cost=0.00..0.94 rows=1 width=4)
841 -> Index Scan Backward using t1_pkey on t1 v_1 (cost=0.00..8.43 rows=9 width=4)
842 Index Cond: ((id IS NOT NULL) AND (id < 10))
843 InitPlan 3 (returns $2)
844 -> Aggregate (cost=28.38..28.39 rows=1 width=4)
845 -> Bitmap Heap Scan on t1 v_2 (cost=4.32..28.36 rows=9 width=4)
846 Recheck Cond: (id < 10)
847 -> Bitmap Index Scan on t1_pkey (cost=0.00..4.32 rows=9 width=0)
848 Index Cond: (id < 10)
852 EXPLAIN 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);
861 -----------------------------------------------------------------------------------------------------
862 Bitmap Heap Scan on t1 (cost=6.15..10.17 rows=1 width=4)
863 Recheck Cond: (id = $3)
864 InitPlan 2 (returns $1)
865 -> Result (cost=0.94..0.95 rows=1 width=0)
866 InitPlan 1 (returns $0)
867 -> Limit (cost=0.00..0.94 rows=1 width=4)
868 -> Index Scan Backward using t1_pkey on t1 v_1 (cost=0.00..8.43 rows=9 width=4)
869 Index Cond: ((id IS NOT NULL) AND (id < 10))
870 InitPlan 4 (returns $3)
871 -> Result (cost=0.94..0.95 rows=1 width=0)
872 InitPlan 3 (returns $2)
873 -> Limit (cost=0.00..0.94 rows=1 width=4)
874 -> Index Scan Backward using t1_pkey on t1 v_2 (cost=0.00..8.43 rows=9 width=4)
875 Index Cond: ((id IS NOT NULL) AND (id < 10))
876 -> Bitmap Index Scan on t1_pkey (cost=0.00..4.26 rows=1 width=0)
877 Index Cond: (id = $3)
880 /*+BitmapScan(v_1)BitmapScan(v_2)*/
881 EXPLAIN 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);
891 ------------------------------------------------------------------------------------
892 Index Scan using t1_pkey on t1 (cost=56.78..65.05 rows=1 width=4)
893 Index Cond: (id = $1)
894 InitPlan 1 (returns $0)
895 -> Aggregate (cost=28.38..28.39 rows=1 width=4)
896 -> Bitmap Heap Scan on t1 v_1 (cost=4.32..28.36 rows=9 width=4)
897 Recheck Cond: (id < 10)
898 -> Bitmap Index Scan on t1_pkey (cost=0.00..4.32 rows=9 width=0)
899 Index Cond: (id < 10)
900 InitPlan 2 (returns $1)
901 -> Aggregate (cost=28.38..28.39 rows=1 width=4)
902 -> Bitmap Heap Scan on t1 v_2 (cost=4.32..28.36 rows=9 width=4)
903 Recheck Cond: (id < 10)
904 -> Bitmap Index Scan on t1_pkey (cost=0.00..4.32 rows=9 width=0)
905 Index Cond: (id < 10)
908 /*+BitmapScan(v_1)BitmapScan(t1)*/
909 EXPLAIN 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);
919 -----------------------------------------------------------------------------------------------------
920 Bitmap Heap Scan on t1 (cost=33.60..37.61 rows=1 width=4)
921 Recheck Cond: (id = $2)
922 InitPlan 1 (returns $0)
923 -> Aggregate (cost=28.38..28.39 rows=1 width=4)
924 -> Bitmap Heap Scan on t1 v_1 (cost=4.32..28.36 rows=9 width=4)
925 Recheck Cond: (id < 10)
926 -> Bitmap Index Scan on t1_pkey (cost=0.00..4.32 rows=9 width=0)
927 Index Cond: (id < 10)
928 InitPlan 3 (returns $2)
929 -> Result (cost=0.94..0.95 rows=1 width=0)
930 InitPlan 2 (returns $1)
931 -> Limit (cost=0.00..0.94 rows=1 width=4)
932 -> Index Scan Backward using t1_pkey on t1 v_2 (cost=0.00..8.43 rows=9 width=4)
933 Index Cond: ((id IS NOT NULL) AND (id < 10))
934 -> Bitmap Index Scan on t1_pkey (cost=0.00..4.26 rows=1 width=0)
935 Index Cond: (id = $2)
938 /*+BitmapScan(v_2)BitmapScan(t1)*/
939 EXPLAIN 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);
949 -----------------------------------------------------------------------------------------------------
950 Bitmap Heap Scan on t1 (cost=33.60..37.61 rows=1 width=4)
951 Recheck Cond: (id = $2)
952 InitPlan 2 (returns $1)
953 -> Result (cost=0.94..0.95 rows=1 width=0)
954 InitPlan 1 (returns $0)
955 -> Limit (cost=0.00..0.94 rows=1 width=4)
956 -> Index Scan Backward using t1_pkey on t1 v_1 (cost=0.00..8.43 rows=9 width=4)
957 Index Cond: ((id IS NOT NULL) AND (id < 10))
958 InitPlan 3 (returns $2)
959 -> Aggregate (cost=28.38..28.39 rows=1 width=4)
960 -> Bitmap Heap Scan on t1 v_2 (cost=4.32..28.36 rows=9 width=4)
961 Recheck Cond: (id < 10)
962 -> Bitmap Index Scan on t1_pkey (cost=0.00..4.32 rows=9 width=0)
963 Index Cond: (id < 10)
964 -> Bitmap Index Scan on t1_pkey (cost=0.00..4.26 rows=1 width=0)
965 Index Cond: (id = $2)
968 /*+BitmapScan(v_1)BitmapScan(v_2)BitmapScan(t1)*/
969 EXPLAIN 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);
980 ------------------------------------------------------------------------------------
981 Bitmap Heap Scan on t1 (cost=61.04..65.05 rows=1 width=4)
982 Recheck Cond: (id = $1)
983 InitPlan 1 (returns $0)
984 -> Aggregate (cost=28.38..28.39 rows=1 width=4)
985 -> Bitmap Heap Scan on t1 v_1 (cost=4.32..28.36 rows=9 width=4)
986 Recheck Cond: (id < 10)
987 -> Bitmap Index Scan on t1_pkey (cost=0.00..4.32 rows=9 width=0)
988 Index Cond: (id < 10)
989 InitPlan 2 (returns $1)
990 -> Aggregate (cost=28.38..28.39 rows=1 width=4)
991 -> Bitmap Heap Scan on t1 v_2 (cost=4.32..28.36 rows=9 width=4)
992 Recheck Cond: (id < 10)
993 -> Bitmap Index Scan on t1_pkey (cost=0.00..4.32 rows=9 width=0)
994 Index Cond: (id < 10)
995 -> Bitmap Index Scan on t1_pkey (cost=0.00..4.26 rows=1 width=0)
996 Index Cond: (id = $1)