OSDN Git Service

機能試験表との試験番号のずれをなおした。
[pghintplan/pg_hint_plan.git] / sql / ut-S.sql
1 LOAD 'pg_hint_plan';
2 SET pg_hint_plan.enable_hint TO on;
3 SET pg_hint_plan.debug_print TO on;
4 SET client_min_messages TO LOG;
5 SET search_path TO public;
6
7 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
8 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
9 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c3 < 10;
10 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
11
12 ----
13 ---- No. S-1-1 specified pattern of the object name
14 ----
15
16 -- No. S-1-1-1
17 /*+SeqScan(t1)*/
18 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
19
20 -- No. S-1-1-2
21 /*+SeqScan(t1)*/
22 EXPLAIN (COSTS false) SELECT * FROM s1.t1 t_1 WHERE t_1.c1 = 1;
23
24 -- No. S-1-1-3
25 /*+SeqScan(t_1)*/
26 EXPLAIN (COSTS false) SELECT * FROM s1.t1 t_1 WHERE t_1.c1 = 1;
27
28 ----
29 ---- No. S-1-2 specified schema name in the hint option
30 ----
31
32 -- No. S-1-2-1
33 /*+SeqScan(t1)*/
34 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
35
36 -- No. S-1-2-2
37 /*+SeqScan(s1.t1)*/
38 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
39
40 ----
41 ---- No. S-1-3 table doesn't exist in the hint option
42 ----
43
44 -- No. S-1-3-1
45 /*+SeqScan(t1)*/
46 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
47
48 -- No. S-1-3-2
49 /*+SeqScan(t2)*/
50 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
51
52 ----
53 ---- No. S-1-4 conflict table name
54 ----
55
56 -- No. S-1-4-1
57 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = 1 AND t1.c1 = t2.c1;
58 /*+SeqScan(t1)*/
59 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = 1 AND t1.c1 = t2.c1;
60
61 -- No. S-1-4-2
62 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s2.t1 WHERE s1.t1.c1 = 1 AND s1.t1.c1 = s2.t1.c1;
63 /*+BitmapScan(t1)*/
64 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s2.t1 WHERE s1.t1.c1 = 1 AND s1.t1.c1 = s2.t1.c1;
65
66 /*+BitmapScan(t1)*/
67 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s2.t1 s2t1 WHERE s1.t1.c1 = 1 AND s1.t1.c1 = s2t1.c1;
68 /*+BitmapScan(s2t1)*/
69 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s2.t1 s2t1 WHERE s1.t1.c1 = 1 AND s1.t1.c1 = s2t1.c1;
70
71 -- No. S-1-4-3
72 EXPLAIN (COSTS false) SELECT (SELECT max(c1) FROM s1.t1 WHERE s1.t1.c1 = 1) FROM s1.t1 WHERE s1.t1.c1 = 1;
73 /*+BitmapScan(t1)*/
74 EXPLAIN (COSTS false) SELECT (SELECT max(c1) FROM s1.t1 WHERE s1.t1.c1 = 1) FROM s1.t1 WHERE s1.t1.c1 = 1;
75
76 /*+BitmapScan(t11)*/
77 EXPLAIN (COSTS false) SELECT (SELECT max(c1) FROM s1.t1 t11 WHERE t11.c1 = 1) FROM s1.t1 t12 WHERE t12.c1 = 1;
78 /*+BitmapScan(t12)*/
79 EXPLAIN (COSTS false) SELECT (SELECT max(c1) FROM s1.t1 t11 WHERE t11.c1 = 1) FROM s1.t1 t12 WHERE t12.c1 = 1;
80
81 ----
82 ---- No. S-1-5 object type for the hint
83 ----
84
85 -- No. S-1-5-1
86 /*+SeqScan(t1)*/
87 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
88
89 -- No. S-1-5-2
90 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE p1.c1 = 1;
91 /*+IndexScan(p1)*/
92 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE p1.c1 = 1;
93
94 -- No. S-1-5-3
95 EXPLAIN (COSTS false) SELECT * FROM s1.ul1 WHERE ul1.c1 = 1;
96 /*+SeqScan(ul1)*/
97 EXPLAIN (COSTS false) SELECT * FROM s1.ul1 WHERE ul1.c1 = 1;
98
99 -- No. S-1-5-4
100 CREATE TEMP TABLE tm1 (LIKE s1.t1 INCLUDING ALL);
101 EXPLAIN (COSTS false) SELECT * FROM tm1 WHERE tm1.c1 = 1;
102 /*+SeqScan(tm1)*/
103 EXPLAIN (COSTS false) SELECT * FROM tm1 WHERE tm1.c1 = 1;
104
105 -- No. S-1-5-5
106 EXPLAIN (COSTS false) SELECT * FROM pg_catalog.pg_class WHERE oid = 1;
107 /*+SeqScan(pg_class)*/
108 EXPLAIN (COSTS false) SELECT * FROM pg_catalog.pg_class WHERE oid = 1;
109
110 -- No. S-1-5-6
111 -- refer ut-fdw.sql
112
113 -- No. S-1-5-7
114 EXPLAIN (COSTS false) SELECT * FROM s1.f1() AS ft1 WHERE ft1.c1 = 1;
115 /*+SeqScan(ft1)*/
116 EXPLAIN (COSTS false) SELECT * FROM s1.f1() AS ft1 WHERE ft1.c1 = 1;
117
118 -- No. S-1-5-8
119 EXPLAIN (COSTS false) SELECT * FROM (VALUES(1,1,1,'1'), (2,2,2,'2'), (3,3,3,'3')) AS val1 (c1, c2, c3, c4) WHERE val1.c1 = 1;
120 /*+SeqScan(val1)*/
121 EXPLAIN (COSTS false) SELECT * FROM (VALUES(1,1,1,'1'), (2,2,2,'2'), (3,3,3,'3')) AS val1 (c1, c2, c3, c4) WHERE val1.c1 = 1;
122 /*+SeqScan(*VALUES*)*/
123 EXPLAIN (COSTS false) SELECT * FROM (VALUES(1,1,1,'1'), (2,2,2,'2'), (3,3,3,'3')) AS val1 (c1, c2, c3, c4) WHERE val1.c1 = 1;
124
125 -- No. S-1-5-9
126 EXPLAIN (COSTS false) WITH c1(c1) AS (SELECT max(c1) FROM s1.t1 WHERE t1.c1 = 1)
127 SELECT * FROM s1.t1, c1 WHERE t1.c1 = 1 AND t1.c1 = c1.c1;
128 /*+SeqScan(c1)*/
129 EXPLAIN (COSTS false) WITH c1(c1) AS (SELECT max(c1) FROM s1.t1 WHERE t1.c1 = 1)
130 SELECT * FROM s1.t1, c1 WHERE t1.c1 = 1 AND t1.c1 = c1.c1;
131
132 -- No. S-1-5-10
133 EXPLAIN (COSTS false) SELECT * FROM s1.v1 WHERE v1.c1 = 1;
134 /*+SeqScan(v1)*/
135 EXPLAIN (COSTS false) SELECT * FROM s1.v1 WHERE v1.c1 = 1;
136
137 -- No. S-1-5-11
138 EXPLAIN (COSTS false) SELECT * FROM (SELECT * FROM s1.t1 WHERE t1.c1 = 1) AS s1 WHERE s1.c1 = 1;
139 /*+SeqScan(s1)*/
140 EXPLAIN (COSTS false) SELECT * FROM (SELECT * FROM s1.t1 WHERE t1.c1 = 1) AS s1 WHERE s1.c1 = 1;
141
142 ----
143 ---- No. S-2-1 some complexity query blocks
144 ----
145
146 -- No. S-2-1-1
147 EXPLAIN (COSTS false)
148 SELECT max(bmt1.c1), (
149 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.c1 = b1t2.c1 AND b1t1.c1 = b1t3.c1 AND b1t1.c1 = b1t4.c1
150 )
151                     FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
152 ;
153 /*+SeqScan(bmt1)IndexScan(bmt2 t2_pkey)BitmapScan(bmt3 t3_pkey)TidScan(bmt4)
154 TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
155 */
156 EXPLAIN (COSTS false)
157 SELECT max(bmt1.c1), (
158 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.c1 = b1t2.c1 AND b1t1.c1 = b1t3.c1 AND b1t1.c1 = b1t4.c1
159 )
160                     FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
161 ;
162
163 -- No. S-2-1-2
164 EXPLAIN (COSTS false)
165 SELECT max(bmt1.c1), (
166 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.c1 = b1t2.c1 AND b1t1.c1 = b1t3.c1 AND b1t1.c1 = b1t4.c1
167 ), (
168 SELECT max(b2t1.c1) FROM s1.t1 b2t1, s1.t2 b2t2, s1.t3 b2t3, s1.t4 b2t4 WHERE b2t1.c1 = b2t2.c1 AND b2t1.c1 = b2t3.c1 AND b2t1.c1 = b2t4.c1
169 )
170                     FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
171 ;
172 /*+SeqScan(bmt1)IndexScan(bmt2 t2_pkey)BitmapScan(bmt3 t3_pkey)TidScan(bmt4)
173 TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
174 BitmapScan(b2t1 t1_pkey)TidScan(b2t2)SeqScan(b2t3)IndexScan(b2t4 t4_pkey)
175 */
176 EXPLAIN (COSTS false)
177 SELECT max(bmt1.c1), (
178 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.c1 = b1t2.c1 AND b1t1.c1 = b1t3.c1 AND b1t1.c1 = b1t4.c1
179 ), (
180 SELECT max(b2t1.c1) FROM s1.t1 b2t1, s1.t2 b2t2, s1.t3 b2t3, s1.t4 b2t4 WHERE b2t1.c1 = b2t2.c1 AND b2t1.c1 = b2t3.c1 AND b2t1.c1 = b2t4.c1
181 )
182                     FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
183 ;
184
185 -- No. S-2-1-3
186 EXPLAIN (COSTS false) SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, (SELECT * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = sbmt4.c1;
187 /*+SeqScan(bmt1)IndexScan(bmt2 t2_pkey)BitmapScan(bmt3 t3_pkey)TidScan(bmt4)
188 */
189 EXPLAIN (COSTS false) SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, (SELECT * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = sbmt4.c1;
190
191 -- No. S-2-1-4
192 EXPLAIN (COSTS false) SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, (SELECT * FROM s1.t3 bmt3) sbmt3, (SELECT * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
193 /*+SeqScan(bmt1)IndexScan(bmt2 t2_pkey)BitmapScan(bmt3 t3_pkey)TidScan(bmt4)
194 */
195 EXPLAIN (COSTS false) SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, (SELECT * FROM s1.t3 bmt3) sbmt3, (SELECT * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
196
197 -- No. S-2-1-5
198 EXPLAIN (COSTS false)
199 SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
200   AND bmt1.c1 <> (
201 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.c1 = b1t2.c1 AND b1t1.c1 = b1t3.c1 AND b1t1.c1 = b1t4.c1
202 )
203 ;
204 /*+SeqScan(bmt1)IndexScan(bmt2 t2_pkey)BitmapScan(bmt3 t3_pkey)TidScan(bmt4)
205 TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
206 */
207 EXPLAIN (COSTS false)
208 SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
209   AND bmt1.c1 <> (
210 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.c1 = b1t2.c1 AND b1t1.c1 = b1t3.c1 AND b1t1.c1 = b1t4.c1
211 )
212 ;
213
214 -- No. S-2-1-6
215 EXPLAIN (COSTS false)
216 SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
217   AND bmt1.c1 <> (
218 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.c1 = b1t2.c1 AND b1t1.c1 = b1t3.c1 AND b1t1.c1 = b1t4.c1
219 ) AND bmt1.c1 <> (
220 SELECT max(b2t1.c1) FROM s1.t1 b2t1, s1.t2 b2t2, s1.t3 b2t3, s1.t4 b2t4 WHERE b2t1.c1 = b2t2.c1 AND b2t1.c1 = b2t3.c1 AND b2t1.c1 = b2t4.c1
221 )
222 ;
223 /*+SeqScan(bmt1)IndexScan(bmt2 t2_pkey)BitmapScan(bmt3 t3_pkey)TidScan(bmt4)
224 TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
225 BitmapScan(b2t1 t1_pkey)TidScan(b2t2)SeqScan(b2t3)IndexScan(b2t4 t4_pkey)
226 */
227 EXPLAIN (COSTS false)
228 SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
229   AND bmt1.c1 <> (
230 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.c1 = b1t2.c1 AND b1t1.c1 = b1t3.c1 AND b1t1.c1 = b1t4.c1
231 ) AND bmt1.c1 <> (
232 SELECT max(b2t1.c1) FROM s1.t1 b2t1, s1.t2 b2t2, s1.t3 b2t3, s1.t4 b2t4 WHERE b2t1.c1 = b2t2.c1 AND b2t1.c1 = b2t3.c1 AND b2t1.c1 = b2t4.c1
233 )
234 ;
235
236 -- No. S-2-1-7
237 EXPLAIN (COSTS false)
238 WITH c1 (c1) AS (
239 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.c1 = b1t2.c1 AND b1t1.c1 = b1t3.c1 AND b1t1.c1 = b1t4.c1
240 )
241 SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4
242 , c1
243                                                                         WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
244 AND bmt1.c1 = c1.c1
245 ;
246 /*+SeqScan(bmt1)IndexScan(bmt2 t2_pkey)BitmapScan(bmt3 t3_pkey)TidScan(bmt4)
247 TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
248 */
249 EXPLAIN (COSTS false)
250 WITH c1 (c1) AS (
251 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.c1 = b1t2.c1 AND b1t1.c1 = b1t3.c1 AND b1t1.c1 = b1t4.c1
252 )
253 SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4
254 , c1
255                                                                         WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
256 AND bmt1.c1 = c1.c1
257 ;
258
259 -- No. S-2-1-8
260 EXPLAIN (COSTS false)
261 WITH c1 (c1) AS (
262 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.c1 = b1t2.c1 AND b1t1.c1 = b1t3.c1 AND b1t1.c1 = b1t4.c1
263 )
264 , c2 (c1) AS (
265 SELECT max(b2t1.c1) FROM s1.t1 b2t1, s1.t2 b2t2, s1.t3 b2t3, s1.t4 b2t4 WHERE b2t1.c1 = b2t2.c1 AND b2t1.c1 = b2t3.c1 AND b2t1.c1 = b2t4.c1
266 )
267 SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4
268 , c1, c2
269                                                                         WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
270 AND bmt1.c1 = c1.c1
271 AND bmt1.c1 = c2.c1
272 ;
273 /*+SeqScan(bmt1)IndexScan(bmt2 t2_pkey)BitmapScan(bmt3 t3_pkey)TidScan(bmt4)
274 TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
275 BitmapScan(b2t1 t1_pkey)TidScan(b2t2)SeqScan(b2t3)IndexScan(b2t4 t4_pkey)
276 */
277 EXPLAIN (COSTS false)
278 WITH c1 (c1) AS (
279 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.c1 = b1t2.c1 AND b1t1.c1 = b1t3.c1 AND b1t1.c1 = b1t4.c1
280 )
281 , c2 (c1) AS (
282 SELECT max(b2t1.c1) FROM s1.t1 b2t1, s1.t2 b2t2, s1.t3 b2t3, s1.t4 b2t4 WHERE b2t1.c1 = b2t2.c1 AND b2t1.c1 = b2t3.c1 AND b2t1.c1 = b2t4.c1
283 )
284 SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4
285 , c1, c2
286                                                                         WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
287 AND bmt1.c1 = c1.c1
288 AND bmt1.c1 = c2.c1
289 ;
290
291 ----
292 ---- No. S-2-2 the number of the tables per quiry block
293 ----
294
295 -- No. S-2-2-1
296 EXPLAIN (COSTS false)
297 WITH c1 (c1) AS (
298 SELECT max(b1t1.c1) FROM s1.t1 b1t1 WHERE b1t1.ctid = '(1,1)' AND b1t1.c1 = 1
299 )
300 SELECT max(bmt1.c1), (
301 SELECT max(b2t1.c1) FROM s1.t1 b2t1 WHERE b2t1.ctid = '(1,1)' AND b2t1.c1 = 1
302 )
303                     FROM s1.t1 bmt1, c1 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = 1
304 AND bmt1.c1 <> (
305 SELECT max(b3t1.c1) FROM s1.t1 b3t1 WHERE b3t1.ctid = '(1,1)' AND b3t1.c1 = 1
306 )
307 ;
308 /*+SeqScan(bmt1)
309 TidScan(b1t1)
310 BitmapScan(b2t1 t1_pkey)
311 IndexScan(b3t1 t1_pkey)
312 */
313 EXPLAIN (COSTS false)
314 WITH c1 (c1) AS (
315 SELECT max(b1t1.c1) FROM s1.t1 b1t1 WHERE b1t1.ctid = '(1,1)' AND b1t1.c1 = 1
316 )
317 SELECT max(bmt1.c1), (
318 SELECT max(b2t1.c1) FROM s1.t1 b2t1 WHERE b2t1.ctid = '(1,1)' AND b2t1.c1 = 1
319 )
320                     FROM s1.t1 bmt1, c1 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = 1
321 AND bmt1.c1 <> (
322 SELECT max(b3t1.c1) FROM s1.t1 b3t1 WHERE b3t1.ctid = '(1,1)' AND b3t1.c1 = 1
323 )
324 ;
325
326 -- No. S-2-2-2
327 EXPLAIN (COSTS false)
328 WITH c1 (c1) AS (
329 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2 WHERE b1t1.ctid = '(1,1)' AND b1t1.c1 = b1t2.c1 AND b1t2.ctid = '(1,1)'
330 )
331 SELECT max(bmt1.c1), (
332 SELECT max(b2t1.c1) FROM s1.t1 b2t1, s1.t2 b2t2 WHERE b2t1.ctid = '(1,1)' AND b2t1.c1 = b2t2.c1 AND b2t2.ctid = '(1,1)'
333 )
334                     FROM s1.t1 bmt1, s1.t2 bmt2, c1 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = bmt2.c1 AND bmt2.ctid = '(1,1)'
335 AND bmt1.c1 <> (
336 SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2 WHERE b3t1.ctid = '(1,1)' AND b3t1.c1 = b3t2.c1 AND b3t2.ctid = '(1,1)'
337 )
338 ;
339 /*+SeqScan(bmt1)IndexScan(bmt2 t2_pkey)
340 TidScan(b1t1)SeqScan(b1t2)
341 BitmapScan(b2t1 t1_pkey)TidScan(b2t2)
342 IndexScan(b3t1 t1_pkey)BitmapScan(b3t2 t2_pkey)
343 */
344 EXPLAIN (COSTS false)
345 WITH c1 (c1) AS (
346 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2 WHERE b1t1.ctid = '(1,1)' AND b1t1.c1 = b1t2.c1 AND b1t2.ctid = '(1,1)'
347 )
348 SELECT max(bmt1.c1), (
349 SELECT max(b2t1.c1) FROM s1.t1 b2t1, s1.t2 b2t2 WHERE b2t1.ctid = '(1,1)' AND b2t1.c1 = b2t2.c1 AND b2t2.ctid = '(1,1)'
350 )
351                     FROM s1.t1 bmt1, s1.t2 bmt2, c1 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = bmt2.c1 AND bmt2.ctid = '(1,1)'
352 AND bmt1.c1 <> (
353 SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2 WHERE b3t1.ctid = '(1,1)' AND b3t1.c1 = b3t2.c1 AND b3t2.ctid = '(1,1)'
354 )
355 ;
356
357 -- No. S-2-2-3
358 EXPLAIN (COSTS false)
359 WITH c1 (c1) AS (
360 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.ctid = '(1,1)' AND b1t1.c1 = b1t2.c1 AND b1t2.ctid = '(1,1)' AND b1t1.c1 = b1t3.c1 AND b1t3.ctid = '(1,1)' AND b1t1.c1 = b1t4.c1 AND b1t4.ctid = '(1,1)'
361 )
362 SELECT max(bmt1.c1), (
363 SELECT max(b2t1.c1) FROM s1.t1 b2t1, s1.t2 b2t2, s1.t3 b2t3, s1.t4 b2t4 WHERE b2t1.ctid = '(1,1)' AND b2t1.c1 = b2t2.c1 AND b2t2.ctid = '(1,1)' AND b2t1.c1 = b2t3.c1 AND b2t3.ctid = '(1,1)' AND b2t1.c1 = b2t4.c1 AND b2t4.ctid = '(1,1)'
364 )
365                     FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4, c1 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = bmt2.c1 AND bmt2.ctid = '(1,1)' AND bmt1.c1 = bmt3.c1 AND bmt3.ctid = '(1,1)' AND bmt1.c1 = bmt4.c1 AND bmt4.ctid = '(1,1)' AND bmt1.c1 = c1.c1
366 AND bmt1.c1 <> (
367 SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2, s1.t3 b3t3, s1.t4 b3t4 WHERE b3t1.ctid = '(1,1)' AND b3t1.c1 = b3t2.c1 AND b3t2.ctid = '(1,1)' AND b3t1.c1 = b3t3.c1 AND b3t3.ctid = '(1,1)' AND b3t1.c1 = b3t4.c1 AND b3t4.ctid = '(1,1)'
368 )
369 ;
370 /*+SeqScan(bmt1)IndexScan(bmt2 t2_pkey)BitmapScan(bmt3 t3_pkey)TidScan(bmt4)
371 TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
372 BitmapScan(b2t1 t1_pkey)TidScan(b2t2)SeqScan(b2t3)IndexScan(b2t4 t4_pkey)
373 IndexScan(b3t1 t1_pkey)BitmapScan(b3t2 t2_pkey)TidScan(b3t3)SeqScan(b3t4)
374 */
375 EXPLAIN (COSTS false)
376 WITH c1 (c1) AS (
377 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.ctid = '(1,1)' AND b1t1.c1 = b1t2.c1 AND b1t2.ctid = '(1,1)' AND b1t1.c1 = b1t3.c1 AND b1t3.ctid = '(1,1)' AND b1t1.c1 = b1t4.c1 AND b1t4.ctid = '(1,1)'
378 )
379 SELECT max(bmt1.c1), (
380 SELECT max(b2t1.c1) FROM s1.t1 b2t1, s1.t2 b2t2, s1.t3 b2t3, s1.t4 b2t4 WHERE b2t1.ctid = '(1,1)' AND b2t1.c1 = b2t2.c1 AND b2t2.ctid = '(1,1)' AND b2t1.c1 = b2t3.c1 AND b2t3.ctid = '(1,1)' AND b2t1.c1 = b2t4.c1 AND b2t4.ctid = '(1,1)'
381 )
382                     FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4, c1 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = bmt2.c1 AND bmt2.ctid = '(1,1)' AND bmt1.c1 = bmt3.c1 AND bmt3.ctid = '(1,1)' AND bmt1.c1 = bmt4.c1 AND bmt4.ctid = '(1,1)' AND bmt1.c1 = c1.c1
383 AND bmt1.c1 <> (
384 SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2, s1.t3 b3t3, s1.t4 b3t4 WHERE b3t1.ctid = '(1,1)' AND b3t1.c1 = b3t2.c1 AND b3t2.ctid = '(1,1)' AND b3t1.c1 = b3t3.c1 AND b3t3.ctid = '(1,1)' AND b3t1.c1 = b3t4.c1 AND b3t4.ctid = '(1,1)'
385 )
386 ;
387
388 -- No. S-2-2-4
389 EXPLAIN (COSTS false)
390 WITH c1 (c1) AS (
391 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.ctid = '(1,1)' AND b1t1.c1 = b1t2.c1 AND b1t2.ctid = '(1,1)' AND b1t1.c1 = b1t3.c1 AND b1t3.ctid = '(1,1)' AND b1t1.c1 = b1t4.c1 AND b1t4.ctid = '(1,1)'
392 )
393 SELECT max(bmt1.c1), (
394 SELECT max(b2t1.c1) FROM s1.t1 b2t1 WHERE b2t1.ctid = '(1,1)' AND b2t1.c1 = 1
395 )
396                     FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4, c1 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = bmt2.c1 AND bmt2.ctid = '(1,1)' AND bmt1.c1 = bmt3.c1 AND bmt3.ctid = '(1,1)' AND bmt1.c1 = bmt4.c1 AND bmt4.ctid = '(1,1)' AND bmt1.c1 = c1.c1
397 AND bmt1.c1 <> (
398 SELECT max(b3t1.c1) FROM s1.t1 b3t1 WHERE b3t1.ctid = '(1,1)'
399 )
400 ;
401 /*+SeqScan(bmt1)IndexScan(bmt2 t2_pkey)BitmapScan(bmt3 t3_pkey)TidScan(bmt4)
402 TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
403 BitmapScan(b2t1 t1_pkey)
404 IndexScan(b3t1 t1_pkey)
405 */
406 EXPLAIN (COSTS false)
407 WITH c1 (c1) AS (
408 SELECT max(b1t1.c1) FROM s1.t1 b1t1, s1.t2 b1t2, s1.t3 b1t3, s1.t4 b1t4 WHERE b1t1.ctid = '(1,1)' AND b1t1.c1 = b1t2.c1 AND b1t2.ctid = '(1,1)' AND b1t1.c1 = b1t3.c1 AND b1t3.ctid = '(1,1)' AND b1t1.c1 = b1t4.c1 AND b1t4.ctid = '(1,1)'
409 )
410 SELECT max(bmt1.c1), (
411 SELECT max(b2t1.c1) FROM s1.t1 b2t1 WHERE b2t1.ctid = '(1,1)' AND b2t1.c1 = 1
412 )
413                     FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4, c1 WHERE bmt1.ctid = '(1,1)' AND bmt1.c1 = bmt2.c1 AND bmt2.ctid = '(1,1)' AND bmt1.c1 = bmt3.c1 AND bmt3.ctid = '(1,1)' AND bmt1.c1 = bmt4.c1 AND bmt4.ctid = '(1,1)' AND bmt1.c1 = c1.c1
414 AND bmt1.c1 <> (
415 SELECT max(b3t1.c1) FROM s1.t1 b3t1 WHERE b3t1.ctid = '(1,1)'
416 )
417 ;
418
419 ----
420 ---- No. S-2-3 RULE or VIEW
421 ----
422
423 -- No. S-2-3-1
424 EXPLAIN (COSTS false) UPDATE s1.r1 SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
425 /*+TidScan(t1)SeqScan(t2)IndexScan(t3 t3_pkey)BitmapScan(t4 t4_pkey)
426 SeqScan(r1)*/
427 EXPLAIN (COSTS false) UPDATE s1.r1 SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
428 EXPLAIN (COSTS false) UPDATE s1.r1_ SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
429 /*+TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
430 SeqScan(r1_)*/
431 EXPLAIN (COSTS false) UPDATE s1.r1_ SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
432
433 -- No. S-2-3-2
434 EXPLAIN (COSTS false) UPDATE s1.r2 SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
435 /*+TidScan(t1)SeqScan(t2)IndexScan(t3 t3_pkey)BitmapScan(t4 t4_pkey)
436 SeqScan(r2)*/
437 EXPLAIN (COSTS false) UPDATE s1.r2 SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
438 EXPLAIN (COSTS false) UPDATE s1.r2_ SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
439 /*+TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
440 BitmapScan(b2t1 t1_pkey)TidScan(b2t2)SeqScan(b2t3)IndexScan(b2t4 t4_pkey)
441 SeqScan(r2_)*/
442 EXPLAIN (COSTS false) UPDATE s1.r2_ SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
443
444 -- No. S-2-3-3
445 EXPLAIN (COSTS false) UPDATE s1.r3 SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
446 /*+TidScan(t1)SeqScan(t2)IndexScan(t3 t3_pkey)BitmapScan(t4 t4_pkey)
447 SeqScan(r3)*/
448 EXPLAIN (COSTS false) UPDATE s1.r3 SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
449 EXPLAIN (COSTS false) UPDATE s1.r3_ SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
450 /*+TidScan(b1t1)SeqScan(b1t2)IndexScan(b1t3 t3_pkey)BitmapScan(b1t4 t4_pkey)
451 BitmapScan(b2t1 t1_pkey)TidScan(b2t2)SeqScan(b2t3)IndexScan(b2t4 t4_pkey)
452 IndexScan(b3t1 t1_pkey)BitmapScan(b3t2 t2_pkey)TidScan(b3t3)SeqScan(b3t4)
453 SeqScan(r3_)*/
454 EXPLAIN (COSTS false) UPDATE s1.r3_ SET c1 = c1 WHERE c1 = 1 AND ctid = '(1,1)';
455
456 -- No. S-2-3-4
457 EXPLAIN (COSTS false) SELECT * FROM s1.v1 v1, s1.v1 v2 WHERE v1.c1 = v2.c1;
458 /*+BitmapScan(v1t1)*/
459 EXPLAIN (COSTS false) SELECT * FROM s1.v1 v1, s1.v1 v2 WHERE v1.c1 = v2.c1;
460
461 -- No. S-2-3-5
462 EXPLAIN (COSTS false) SELECT * FROM s1.v1 v1, s1.v1_ v2 WHERE v1.c1 = v2.c1;
463 /*+SeqScan(v1t1)BitmapScan(v1t1_)*/
464 EXPLAIN (COSTS false) SELECT * FROM s1.v1 v1, s1.v1_ v2 WHERE v1.c1 = v2.c1;
465
466 -- No. S-2-3-6
467 EXPLAIN (COSTS false) SELECT * FROM s1.r4 t1, s1.r4 t2 WHERE t1.c1 = t2.c1;
468 /*+BitmapScan(r4t1)*/
469 EXPLAIN (COSTS false) SELECT * FROM s1.r4 t1, s1.r4 t2 WHERE t1.c1 = t2.c1;
470
471 -- No. S-2-3-7
472 EXPLAIN (COSTS false) SELECT * FROM s1.r4 t1, s1.r5 t2 WHERE t1.c1 = t2.c1;
473 /*+SeqScan(r4t1)BitmapScan(r5t1)*/
474 EXPLAIN (COSTS false) SELECT * FROM s1.r4 t1, s1.r5 t2 WHERE t1.c1 = t2.c1;
475
476 ----
477 ---- No. S-2-4 VALUES clause
478 ----
479
480 -- No. S-2-4-1
481 EXPLAIN (COSTS false) SELECT * FROM (VALUES(1,1,1,'1')) AS t1 (c1) WHERE t1.c1 = 1;
482 /*+SeqScan(t1)*/
483 EXPLAIN (COSTS false) SELECT * FROM (VALUES(1,1,1,'1')) AS t1 (c1) WHERE t1.c1 = 1;
484 /*+SeqScan(*VALUES*)*/
485 EXPLAIN (COSTS false) SELECT * FROM (VALUES(1,1,1,'1')) AS t1 (c1) WHERE t1.c1 = 1;
486
487 -- No. S-2-4-2
488 EXPLAIN (COSTS false) SELECT * FROM (VALUES(1,1,1,'1')) AS t1 (c1, c2, c3, c4), (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t2 (c1, c2) WHERE t1.c1 = t2.c1;
489 /*+SeqScan(t1 t2)*/
490 EXPLAIN (COSTS false) SELECT * FROM (VALUES(1,1,1,'1')) AS t1 (c1, c2, c3, c4), (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t2 (c1, c2) WHERE t1.c1 = t2.c1;
491 /*+SeqScan(*VALUES*)*/
492 EXPLAIN (COSTS false) SELECT * FROM (VALUES(1,1,1,'1')) AS t1 (c1, c2, c3, c4), (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t2 (c1, c2) WHERE t1.c1 = t2.c1;
493
494 ----
495 ---- No. S-3-1 scan method hint
496 ----
497
498 -- No. S-3-1-1
499 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
500 /*+SeqScan(t1)*/
501 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
502
503 -- No. S-3-1-2
504 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
505 /*+SeqScan(t1)*/
506 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
507
508 -- No. S-3-1-3
509 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
510 /*+IndexScan(t1)*/
511 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
512
513 -- No. S-3-1-4
514 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
515 /*+IndexScan(t1)*/
516 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
517
518 -- No. S-3-1-5
519 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c3 < 10;
520 /*+BitmapScan(t1)*/
521 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c3 < 10;
522
523 -- No. S-3-1-6
524 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
525 /*+BitmapScan(t1)*/
526 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
527
528 -- No. S-3-1-7
529 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
530 /*+TidScan(t1)*/
531 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
532
533 -- No. S-3-1-8
534 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid IN ('(1,1)', '(2,2)', '(3,3)');
535 /*+TidScan(t1)*/
536 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid IN ('(1,1)', '(2,2)', '(3,3)');
537
538 -- No. S-3-1-9
539 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
540 /*+NoSeqScan(t1)*/
541 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
542
543 -- No. S-3-1-10
544 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
545 /*+NoSeqScan(t1)*/
546 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
547
548 -- No. S-3-1-11
549 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
550 /*+NoIndexScan(t1)*/
551 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
552
553 -- No. S-3-1-12
554 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
555 /*+NoIndexScan(t1)*/
556 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
557
558 -- No. S-3-1-13
559 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c3 < 10;
560 /*+NoBitmapScan(t1)*/
561 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c3 < 10;
562
563 -- No. S-3-1-14
564 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
565 /*+NoBitmapScan(t1)*/
566 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
567
568 -- No. S-3-1-15
569 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
570 /*+NoTidScan(t1)*/
571 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
572
573 -- No. S-3-1-16
574 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
575 /*+NoTidScan(t1)*/
576 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
577
578 -- No. S-3-1-17
579 EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 = 1;
580 /*+IndexOnlyScan(t1)*/
581 EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 = 1;
582
583 -- No. S-3-1-18
584 EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 >= 1;
585 /*+IndexOnlyScan(t1)*/
586 EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 >= 1;
587
588 -- No. S-3-1-19
589 EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 = 1;
590 /*+NoIndexOnlyScan(t1)*/
591 EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 = 1;
592
593 -- No. S-3-1-20
594 EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 >= 1;
595 /*+NoIndexOnlyScan(t1)*/
596 EXPLAIN (COSTS false) SELECT c1 FROM s1.t1 WHERE t1.c1 >= 1;
597
598 ----
599 ---- No. S-3-3 index name specified
600 ----
601
602 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
603 SET enable_tidscan TO off;
604 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
605 SET enable_indexscan TO off;
606 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
607 RESET enable_tidscan;
608 RESET enable_indexscan;
609
610 EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE ti1.c2 >= 1;
611
612 -- No. S-3-3-1
613 /*+IndexScan(ti1 ti1_i3)*/
614 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
615
616 -- No. S-3-3-2
617 /*+IndexScan(ti1 ti1_i3 ti1_i2)*/
618 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
619
620 -- No. S-3-3-3
621 /*+IndexScan(ti1 ti1_i4 ti1_i3 ti1_i2 ti1_i1)*/
622 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
623
624 -- No. S-3-3-4
625 /*+BitmapScan(ti1 ti1_i3)*/
626 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
627
628 -- No. S-3-3-5
629 /*+BitmapScan(ti1 ti1_i3 ti1_i2)*/
630 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
631
632 -- No. S-3-3-6
633 /*+BitmapScan(ti1 ti1_i4 ti1_i3 ti1_i2 ti1_i1)*/
634 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
635
636 -- No. S-3-3-7
637 /*+IndexOnlyScan(ti1 ti1_i3)*/
638 EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE ti1.c2 >= 1;
639
640 -- No. S-3-3-8
641 /*+IndexOnlyScan(ti1 ti1_i3 ti1_i2)*/
642 EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE ti1.c2 >= 1;
643
644 -- No. S-3-3-9
645 /*+IndexOnlyScan(ti1 ti1_i4 ti1_i3 ti1_i2 ti1_i1)*/
646 EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE ti1.c2 >= 1;
647
648 ----
649 ---- No. S-3-4 index type
650 ----
651
652 \d s1.ti1
653 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
654
655 -- No. S-3-4-1
656 /*+IndexScan(ti1 ti1_btree)*/
657 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
658
659 -- No. S-3-4-2
660 /*+IndexScan(ti1 ti1_hash)*/
661 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
662
663 -- No. S-3-4-3
664 /*+IndexScan(ti1 ti1_gist)*/
665 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
666
667 -- No. S-3-4-4
668 /*+IndexScan(ti1 ti1_gin)*/
669 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
670
671 -- No. S-3-4-5
672 /*+IndexScan(ti1 ti1_expr)*/
673 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
674
675 -- No. S-3-4-6
676 /*+IndexScan(ti1 ti1_pred)*/
677 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
678
679 -- No. S-3-4-7
680 /*+IndexScan(ti1 ti1_uniq)*/
681 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
682
683 -- No. S-3-4-8
684 /*+IndexScan(ti1 ti1_multi)*/
685 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
686
687 -- No. S-3-4-9
688 /*+IndexScan(ti1 ti1_ts)*/
689 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
690
691 -- No. S-3-4-10
692 /*+IndexScan(ti1 ti1_pkey)*/
693 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
694
695 -- No. S-3-4-11
696 /*+IndexScan(ti1 ti1_c2_key)*/
697 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
698
699 -- No. S-3-4-12
700 /*+BitmapScan(ti1 ti1_btree)*/
701 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
702
703 -- No. S-3-4-13
704 /*+BitmapScan(ti1 ti1_hash)*/
705 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
706
707 -- No. S-3-4-14
708 /*+BitmapScan(ti1 ti1_gist)*/
709 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
710
711 -- No. S-3-4-15
712 /*+BitmapScan(ti1 ti1_gin)*/
713 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
714
715 -- No. S-3-4-16
716 /*+BitmapScan(ti1 ti1_expr)*/
717 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
718
719 -- No. S-3-4-17
720 /*+BitmapScan(ti1 ti1_pred)*/
721 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
722
723 -- No. S-3-4-18
724 /*+BitmapScan(ti1 ti1_uniq)*/
725 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
726
727 -- No. S-3-4-19
728 /*+BitmapScan(ti1 ti1_multi)*/
729 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
730
731 -- No. S-3-4-20
732 /*+BitmapScan(ti1 ti1_ts)*/
733 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
734
735 -- No. S-3-4-21
736 /*+BitmapScan(ti1 ti1_pkey)*/
737 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
738
739 -- No. S-3-4-22
740 /*+BitmapScan(ti1 ti1_c2_key)*/
741 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 < 100 AND c2 = 1 AND lower(c4) = '1' AND to_tsvector('english', c4) @@ 'a & b' AND ctid = '(1,1)';
742
743 -- No. S-3-4-23
744 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
745 /*+IndexOnlyScan(ti1 ti1_btree)*/
746 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
747
748 -- No. S-3-4-24
749 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
750 /*+IndexOnlyScan(ti1 ti1_hash)*/
751 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
752
753 -- No. S-3-4-25
754 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 1;
755 /*+IndexOnlyScan(ti1 ti1_gist)*/
756 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 1;
757
758 -- No. S-3-4-26
759 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
760 /*+IndexOnlyScan(ti1 ti1_gin)*/
761 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
762
763 -- No. S-3-4-27
764 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 100;
765 /*+IndexOnlyScan(ti1 ti1_expr)*/
766 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 < 100;
767
768 -- No. S-3-4-28
769 EXPLAIN (COSTS false) SELECT c4 FROM s1.ti1 WHERE lower(c4) >= '1';
770 /*+IndexOnlyScan(ti1 ti1_pred)*/
771 EXPLAIN (COSTS false) SELECT c4 FROM s1.ti1 WHERE lower(c4) >= '1';
772
773 -- No. S-3-4-29
774 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
775 /*+IndexOnlyScan(ti1 ti1_uniq)*/
776 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
777
778 -- No. S-3-4-30
779 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
780 /*+IndexOnlyScan(ti1 ti1_multi)*/
781 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
782
783 -- No. S-3-4-31
784 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE to_tsvector('english', c4) @@ 'a & b';
785 /*+IndexOnlyScan(ti1 ti1_ts)*/
786 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE to_tsvector('english', c4) @@ 'a & b';
787
788 -- No. S-3-4-32
789 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
790 /*+IndexOnlyScan(ti1 ti1_pkey)*/
791 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
792
793 -- No. S-3-4-33
794 EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE c2 >= 1;
795 /*+IndexOnlyScan(ti1 ti1_c2_key)*/
796 EXPLAIN (COSTS false) SELECT c2 FROM s1.ti1 WHERE c2 >= 1;
797
798 ----
799 ---- No. S-3-5 not used index
800 ----
801
802 -- No. S-3-5-1
803 /*+IndexScan(ti1 ti1_pred)*/
804 EXPLAIN (COSTS true) SELECT * FROM s1.ti1 WHERE c1 = 100;
805
806 -- No. S-3-5-2
807 /*+BitmapScan(ti1 ti1_pred)*/
808 EXPLAIN (COSTS true) SELECT * FROM s1.ti1 WHERE c1 = 100;
809
810 -- No. S-3-5-3
811 /*+IndexOnlyScan(ti1 ti1_pred)*/
812 EXPLAIN (COSTS true) SELECT c1 FROM s1.ti1 WHERE c1 = 100;
813
814 -- No. S-3-5-4
815 /*+IndexScan(ti1 not_exist)*/
816 EXPLAIN (COSTS true) SELECT * FROM s1.ti1 WHERE c1 = 100;
817
818 -- No. S-3-5-5
819 /*+BitmapScan(ti1 not_exist)*/
820 EXPLAIN (COSTS true) SELECT * FROM s1.ti1 WHERE c1 = 100;
821
822 -- No. S-3-5-6
823 /*+IndexOnlyScan(ti1 not_exist)*/
824 EXPLAIN (COSTS true) SELECT c1 FROM s1.ti1 WHERE c1 = 100;
825
826 -- No. S-3-5-7
827 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
828 /*+TidScan(t1)*/
829 EXPLAIN (COSTS true) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
830
831 ----
832 ---- No. S-3-6 query structure
833 ----
834
835 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1 AND t1.ctid = '(1,1)';
836
837 -- No. S-3-6-1
838 /*+SeqScan(t1)*/
839 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE c1 = 100;
840
841 -- No. S-3-6-2
842 /*+SeqScan(t1)BitmapScan(t2)*/
843 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1 AND t1.ctid = '(1,1)';
844
845 -- No. S-3-6-3
846 /*+SeqScan(t1)*/
847 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1 AND t1.ctid = '(1,1)';
848
849 ----
850 ---- No. S-3-7 number of tables in a query block
851 ----
852
853 -- No. S-3-7-1
854 EXPLAIN (COSTS false) 
855 WITH c1 (c1) AS (
856 SELECT max(b1t1.c1) FROM s1.t1 b1t1 WHERE b1t1.c1 = 1)
857 SELECT max(b3t1.c1), (
858 SELECT max(b2t1.c1) FROM s1.t1 b2t1 WHERE b2t1.c1 = 1
859                   ) FROM s1.t1 b3t1 WHERE b3t1.c1 = (
860 SELECT max(b4t1.c1) FROM s1.t1 b4t1 WHERE b4t1.c1 = 1);
861 /*+SeqScan(b1t1)IndexScan(b2t1 t1_pkey)BitmapScan(b3t1 t1_pkey)TidScan(b4t1)
862 */
863 EXPLAIN (COSTS false) 
864 WITH c1 (c1) AS (
865 SELECT max(b1t1.c1) FROM s1.t1 b1t1 WHERE b1t1.c1 = 1)
866 SELECT max(b3t1.c1), (
867 SELECT max(b2t1.c1) FROM s1.t1 b2t1 WHERE b2t1.c1 = 1
868                   ) FROM s1.t1 b3t1 WHERE b3t1.c1 = (
869 SELECT max(b4t1.c1) FROM s1.t1 b4t1 WHERE b4t1.c1 = 1);
870
871 -- No. S-3-7-2
872 EXPLAIN (COSTS false) 
873 WITH cte1 (c1) AS (
874 SELECT max(b1t1.c1) FROM s1.t1 b1t1 JOIN s1.t2 b1t2 ON(b1t1.c1 = b1t2.c1) WHERE b1t1.c1 = 1)
875 SELECT max(b3t1.c1), (
876 SELECT max(b2t1.c1) FROM s1.t1 b2t1 JOIN s1.t2 b2t2 ON(b2t1.c1 = b2t2.c1) WHERE b2t1.c1 = 1
877                   ) FROM s1.t1 b3t1 JOIN s1.t2 b3t2 ON(b3t1.c1 = b3t2.c1) JOIN cte1 ON(b3t1.c1 = cte1.c1) WHERE b3t1.c1 = (
878 SELECT max(b4t1.c1) FROM s1.t1 b4t1 JOIN s1.t2 b4t2 ON(b4t1.c1 = b4t2.c1) WHERE b4t1.c1 = 1);
879 /*+SeqScan(b1t1)IndexScan(b2t1 t1_pkey)BitmapScan(b3t1 t1_pkey)TidScan(b4t1)
880 TidScan(b1t2)SeqScan(b2t2)IndexScan(b3t2 t2_pkey)BitmapScan(b4t2 t2_pkey)
881 */
882 EXPLAIN (COSTS false) 
883 WITH cte1 (c1) AS (
884 SELECT max(b1t1.c1) FROM s1.t1 b1t1 JOIN s1.t2 b1t2 ON(b1t1.c1 = b1t2.c1) WHERE b1t1.c1 = 1)
885 SELECT max(b3t1.c1), (
886 SELECT max(b2t1.c1) FROM s1.t1 b2t1 JOIN s1.t2 b2t2 ON(b2t1.c1 = b2t2.c1) WHERE b2t1.c1 = 1
887                   ) FROM s1.t1 b3t1 JOIN s1.t2 b3t2 ON(b3t1.c1 = b3t2.c1) JOIN cte1 ON(b3t1.c1 = cte1.c1) WHERE b3t1.c1 = (
888 SELECT max(b4t1.c1) FROM s1.t1 b4t1 JOIN s1.t2 b4t2 ON(b4t1.c1 = b4t2.c1) WHERE b4t1.c1 = 1);
889
890 -- No. S-3-7-3
891 EXPLAIN (COSTS false) 
892 WITH cte1 (c1) AS (
893 SELECT max(b1t1.c1) FROM s1.t1 b1t1 JOIN s1.t2 b1t2 ON(b1t1.c1 = b1t2.c1) WHERE b1t1.c1 = 1)
894 SELECT max(b3t1.c1), (
895 SELECT max(b2t1.c1) FROM s1.t1 b2t1 WHERE b2t1.c1 = 1
896                   ) FROM s1.t1 b3t1 JOIN s1.t2 b3t2 ON(b3t1.c1 = b3t2.c1) JOIN cte1 ON(b3t1.c1 = cte1.c1) WHERE b3t1.c1 = (
897 SELECT max(b4t1.c1) FROM s1.t1 b4t1 WHERE b4t1.c1 = 1);
898 /*+SeqScan(b1t1)IndexScan(b2t1 t1_pkey)BitmapScan(b3t1 t1_pkey)TidScan(b4t1)
899 TidScan(b1t2)IndexScan(b3t2 t2_pkey)
900 */
901 EXPLAIN (COSTS false) 
902 WITH cte1 (c1) AS (
903 SELECT max(b1t1.c1) FROM s1.t1 b1t1 JOIN s1.t2 b1t2 ON(b1t1.c1 = b1t2.c1) WHERE b1t1.c1 = 1)
904 SELECT max(b3t1.c1), (
905 SELECT max(b2t1.c1) FROM s1.t1 b2t1 WHERE b2t1.c1 = 1
906                   ) FROM s1.t1 b3t1 JOIN s1.t2 b3t2 ON(b3t1.c1 = b3t2.c1) JOIN cte1 ON(b3t1.c1 = cte1.c1) WHERE b3t1.c1 = (
907 SELECT max(b4t1.c1) FROM s1.t1 b4t1 WHERE b4t1.c1 = 1);
908
909 ----
910 ---- No. S-3-8 inheritance table select type
911 ----
912
913 -- No. S-3-8-1
914 EXPLAIN (COSTS false) SELECT * FROM ONLY s1.p1 WHERE c1 = 1;
915 /*+IndexScan(p1)*/
916 EXPLAIN (COSTS false) SELECT * FROM ONLY s1.p1 WHERE c1 = 1;
917
918 -- No. S-3-8-2
919 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE c1 = 1;
920 /*+IndexScan(p1)*/
921 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE c1 = 1;
922
923 ----
924 ---- No. S-3-9 inheritance table number
925 ----
926
927 -- No. S-3-9-1
928 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE c1 = 1;
929 /*+IndexScan(p1)*/
930 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE c1 = 1;
931
932 -- No. S-3-9-2
933 EXPLAIN (COSTS false) SELECT * FROM s1.p2 WHERE c1 = 1;
934 /*+IndexScan(p2)*/
935 EXPLAIN (COSTS false) SELECT * FROM s1.p2 WHERE c1 = 1;
936
937 ----
938 ---- No. S-3-10 inheritance table specified table
939 ----
940
941 EXPLAIN (COSTS false) SELECT * FROM s1.p2 WHERE c1 = 1;
942
943 -- No. S-3-10-1
944 /*+IndexScan(p2)*/
945 EXPLAIN (COSTS false) SELECT * FROM s1.p2 WHERE c1 = 1;
946
947 -- No. S-3-10-2
948 /*+IndexScan(p2c1)*/
949 EXPLAIN (COSTS false) SELECT * FROM s1.p2 WHERE c1 = 1;
950
951 -- No. S-3-10-3
952 EXPLAIN SELECT c4 FROM s1.p1 WHERE c2 * 2 < 100 AND c1 < 10;
953 /*+IndexScan(p1 p1_parent)*/
954 EXPLAIN SELECT c4 FROM s1.p1 WHERE c2 * 2 < 100 AND c1 < 10;
955
956 -- No. S-3-10-4
957 /*+IndexScan(p1 p1_i2)*/
958 EXPLAIN SELECT c2 FROM s1.p1 WHERE c2 = 1;
959
960 -- No. S-3-10-5
961 /*+IndexScan(p2 p2c1_pkey)*/
962 EXPLAIN (COSTS true) SELECT * FROM s1.p2 WHERE c1 = 1;
963
964 ----
965 ---- No. S-3-12 specified same table
966 ----
967
968 -- No. S-3-12-1
969 /*+IndexScan(ti1) BitmapScan(ti1)*/
970 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
971
972 -- No. S-3-12-2
973 /*+IndexScan(ti1 ti1_pkey) BitmapScan(ti1 ti1_btree)*/
974 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
975
976 -- No. S-3-12-3
977 /*+BitmapScan(ti1) IndexScan(ti1) BitmapScan(ti1)*/
978 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
979
980 -- No. S-3-12-4
981 /*+BitmapScan(ti1 ti1_hash) IndexScan(ti1 ti1_pkey) BitmapScan(ti1 ti1_btree)*/
982 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
983
984 ----
985 ---- No. S-3-13 message output of hint
986 ----
987
988 -- No. S-3-13-1
989 /*+SeqScan(ti1)*/
990 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
991
992 -- No. S-3-13-2
993 /*+SeqScan(ti1 ti1_pkey)*/
994 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
995
996 -- No. S-3-13-3
997 /*+SeqScan(ti1 ti1_pkey ti1_btree)*/
998 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
999
1000 -- No. S-3-13-4
1001 /*+IndexScan(ti1)*/
1002 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1003
1004 -- No. S-3-13-5
1005 /*+IndexScan(ti1 ti1_pkey)*/
1006 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1007
1008 -- No. S-3-13-6
1009 /*+IndexScan(ti1 ti1_pkey ti1_btree)*/
1010 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1011
1012 -- No. S-3-13-7
1013 /*+BitmapScan(ti1)*/
1014 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1015
1016 -- No. S-3-13-8
1017 /*+BitmapScan(ti1 ti1_pkey)*/
1018 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1019
1020 -- No. S-3-13-9
1021 /*+BitmapScan(ti1 ti1_pkey ti1_btree)*/
1022 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1023
1024 -- No. S-3-13-10
1025 /*+TidScan(ti1)*/
1026 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1027
1028 -- No. S-3-13-11
1029 /*+TidScan(ti1 ti1_pkey)*/
1030 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1031
1032 -- No. S-3-13-12
1033 /*+TidScan(ti1 ti1_pkey ti1_btree)*/
1034 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1035
1036 -- No. S-3-13-13
1037 /*+NoSeqScan(ti1)*/
1038 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1039
1040 -- No. S-3-13-14
1041 /*+NoSeqScan(ti1 ti1_pkey)*/
1042 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1043
1044 -- No. S-3-13-15
1045 /*+NoSeqScan(ti1 ti1_pkey ti1_btree)*/
1046 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1047
1048 -- No. S-3-13-16
1049 /*+NoIndexScan(ti1)*/
1050 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1051
1052 -- No. S-3-13-17
1053 /*+NoIndexScan(ti1 ti1_pkey)*/
1054 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1055
1056 -- No. S-3-13-18
1057 /*+NoIndexScan(ti1 ti1_pkey ti1_btree)*/
1058 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1059
1060 -- No. S-3-13-19
1061 /*+NoBitmapScan(ti1)*/
1062 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1063
1064 -- No. S-3-13-20
1065 /*+NoBitmapScan(ti1 ti1_pkey)*/
1066 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1067
1068 -- No. S-3-13-21
1069 /*+NoBitmapScan(ti1 ti1_pkey ti1_btree)*/
1070 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1071
1072 -- No. S-3-13-22
1073 /*+NoTidScan(ti1)*/
1074 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1075
1076 -- No. S-3-13-23
1077 /*+NoTidScan(ti1 ti1_pkey)*/
1078 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1079
1080 -- No. S-3-13-24
1081 /*+NoTidScan(ti1 ti1_pkey ti1_btree)*/
1082 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
1083
1084 -- No. S-3-13-25
1085 /*+IndexOnlyScan(ti1)*/
1086 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
1087
1088 -- No. S-3-13-26
1089 /*+IndexOnlyScan(ti1 ti1_pkey)*/
1090 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
1091
1092 -- No. S-3-13-27
1093 /*+IndexOnlyScan(ti1 ti1_pkey ti1_btree)*/
1094 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 >= 1;
1095
1096 -- No. S-3-13-28
1097 /*+NoIndexOnlyScan(ti1)*/
1098 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
1099
1100 -- No. S-3-13-29
1101 /*+NoIndexOnlyScan(ti1 ti1_pkey)*/
1102 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
1103
1104 -- No. S-3-13-30
1105 /*+NoIndexOnlyScan(ti1 ti1_pkey ti1_btree)*/
1106 EXPLAIN (COSTS false) SELECT c1 FROM s1.ti1 WHERE c1 = 1;
1107
1108
1109 ----
1110 ---- No. S-3-14 regular expression
1111 ----
1112 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c2 = 1;
1113
1114 -- No. S-3-14-1
1115 /*+IndexScanRegexp(ti1 ti1_.*_key)*/
1116 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c2 = 1;
1117
1118 -- No. S-3-14-2
1119 /*+IndexScanRegexp(ti1 ti1_i.)*/
1120 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c2 = 1;
1121
1122 -- No. S-3-14-3
1123 /*+IndexScanRegexp(ti1 no.*_exist)*/
1124 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c2 = 1;
1125
1126 -- No. S-3-14-4
1127 /*+IndexScanRegexp(p1 .*pkey)*/
1128 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE c1 = 1;
1129
1130 -- No. S-3-14-5
1131 /*+IndexScanRegexp(p1 p1.*i)*/
1132 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE c1 = 1;
1133
1134 -- No. S-3-14-6
1135 /*+IndexScanRegexp(p1 no.*_exist)*/
1136 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE c1 = 1;
1137
1138 ----
1139 ---- No. S-3-15 message output of index candidate
1140 ----
1141
1142 -- No. S-3-15-1
1143 /*+IndexScan(ti1 ti1_i1)*/
1144 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c2 = 1;
1145 -- No. S-3-15-2
1146 /*+IndexScan(ti1 not_exist)*/
1147 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c2 = 1;
1148 -- No. S-3-15-3
1149 /*+IndexScan(ti1 ti1_i1 ti1_i2)*/
1150 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c2 = 1;
1151 -- No. S-3-15-4
1152 /*+IndexScan(ti1 ti1_i1 not_exist)*/
1153 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c2 = 1;
1154 -- No. S-3-15-5
1155 /*+IndexScan(ti1 not_exist1 not_exist2)*/
1156 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c2 = 1;