OSDN Git Service

結合のインナーテーブルのスキャンヒントが無視されるバグを修正した。
[pghintplan/pg_hint_plan.git] / sql / pg_hint_plan.sql
1 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
2 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.val = t2.val;
3
4 LOAD 'pg_hint_plan';
5 SET pg_hint_plan.debug_print TO on;
6 SET client_min_messages TO LOG;
7
8 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
9 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.val = t2.val;
10
11 /*+ Test (t1 t2) */
12 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
13 SET pg_hint_plan.enable TO off;
14 /*+ Test (t1 t2) */
15 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
16 SET pg_hint_plan.enable TO on;
17
18 /*+Set(enable_indexscan off)*/
19 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
20 /*+ Set(enable_indexscan off) Set(enable_hashjoin off) */
21 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
22
23 /*+      Set     (       enable_indexscan        off     )       */
24 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
25 /*+      
26                 Set      
27                 (        
28                 enable_indexscan         
29                 off      
30                 )        
31                 */              
32 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
33 /*+ Set(enable_indexscan off)Set(enable_nestloop off)Set(enable_mergejoin off)          
34                 Set(enable_seqscan off)
35                 */
36 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
37 /*+Set(work_mem "1M")*/
38 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
39 /*+Set(work_mem "1MB")*/
40 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
41 /*+Set(work_mem TO "1MB")*/
42 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
43
44 /*+SeqScan(t1 t2)*/
45 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
46 /*+SeqScan(t1)*/
47 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
48 /*+SeqScan(t1)IndexScan(t2)*/
49 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
50 /*+BitmapScan(t2)*/
51 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
52 /*+BitmapScan(t2)NoSeqScan(t1)*/
53 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
54 /*+NoIndexScan(t1)*/
55 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
56
57 /*+NoBitmapScan(t1)*/
58 EXPLAIN (COSTS false) SELECT * FROM t1, t4 WHERE t1.val < 10;
59 /*+TidScan(t4)*/
60 EXPLAIN (COSTS false) SELECT * FROM t3, t4 WHERE t3.id = t4.id AND t4.ctid = '(1,1)';
61 /*+NoTidScan(t1)*/
62 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id AND t1.ctid = '(1,1)';
63
64 /*+HashJoin(t1 t2)*/
65 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
66 /*+NestLoop(t1 t2)*/
67 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
68 /*+NoMergeJoin(t1 t2)*/
69 EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
70
71 /*+MergeJoin(t1 t3)*/
72 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
73 /*+NestLoop(t1 t3)*/
74 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
75 /*+NoHashJoin(t1 t3)*/
76 EXPLAIN (COSTS false) SELECT * FROM t1, t3 WHERE t1.val = t3.val;
77
78 /*+MergeJoin(t4 t1 t2 t3)*/
79 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
80 /*+HashJoin(t3 t4 t1 t2)*/
81 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
82 /*+NestLoop(t2 t3 t4 t1) IndexScan(t3)*/
83 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
84 /*+NoNestLoop(t4 t1 t3 t2)*/
85 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
86
87 /*+Leading(t3 t4)*/
88 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
89 /*+Leading(t3 t4 t1)*/
90 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
91 /*+Leading(t3 t4 t1 t2)*/
92 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
93 /*+Leading(t3 t4 t1 t2 t1)*/
94 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
95 /*+Leading(t3 t4 t4)*/
96 EXPLAIN (COSTS false) SELECT * FROM t1, t2, t3, t4 WHERE t1.id = t2.id AND t1.id = t3.id AND t1.id = t4.id;
97
98 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
99 /*+HashJoin(t1 t2)*/
100 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
101 /*+HashJoin(t1 *VALUES*)*/
102 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
103 /*+HashJoin(t1 *VALUES*) IndexScan(t1) IndexScan(*VALUES*)*/
104 EXPLAIN (COSTS false) SELECT * FROM t1, (VALUES(1,1),(2,2),(3,3)) AS t2(id,val) WHERE t1.id = t2.id;
105
106 -- single table scan hint test
107 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);
108 /*+BitmapScan(v_1)*/
109 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);
110 /*+BitmapScan(v_2)*/
111 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);
112 /*+BitmapScan(t1)*/
113 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);
114 /*+BitmapScan(v_1)BitmapScan(v_2)*/
115 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);
116 /*+BitmapScan(v_1)BitmapScan(t1)*/
117 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);
118 /*+BitmapScan(v_2)BitmapScan(t1)*/
119 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);
120 /*+BitmapScan(v_1)BitmapScan(v_2)BitmapScan(t1)*/
121 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);