OSDN Git Service

Merge branch 'master' into ut
[pghintplan/pg_hint_plan.git] / sql / ut-S.sql
1 LOAD 'pg_hint_plan';
2 SET pg_hint_plan.enable 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 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 complexity query block
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 definition table
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 ----
457 ---- No. S-2-4 VALUES clause
458 ----
459
460 -- No. S-2-4-1
461 EXPLAIN (COSTS false) SELECT * FROM (VALUES(1,1,1,'1')) AS t1 (c1) WHERE t1.c1 = 1;
462 /*+SeqScan(t1)*/
463 EXPLAIN (COSTS false) SELECT * FROM (VALUES(1,1,1,'1')) AS t1 (c1) WHERE t1.c1 = 1;
464 /*+SeqScan(*VALUES*)*/
465 EXPLAIN (COSTS false) SELECT * FROM (VALUES(1,1,1,'1')) AS t1 (c1) WHERE t1.c1 = 1;
466
467 -- No. S-2-4-2
468 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;
469 /*+SeqScan(t1 t2)*/
470 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;
471 /*+SeqScan(*VALUES*)*/
472 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;
473
474 ----
475 ---- No. S-3-1 scan method hint
476 ----
477
478 -- No. S-3-1-1
479 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
480 /*+SeqScan(t1)*/
481 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
482
483 -- No. S-3-1-2
484 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
485 /*+SeqScan(t1)*/
486 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
487
488 -- No. S-3-1-3
489 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
490 /*+IndexScan(t1)*/
491 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
492
493 -- No. S-3-1-4
494 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
495 /*+IndexScan(t1)*/
496 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
497
498 -- No. S-3-1-5
499 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c3 < 10;
500 /*+BitmapScan(t1)*/
501 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c3 < 10;
502
503 -- No. S-3-1-6
504 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
505 /*+BitmapScan(t1)*/
506 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
507
508 -- No. S-3-1-7
509 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
510 /*+TidScan(t1)*/
511 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
512
513 -- No. S-3-1-8
514 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid IN ('(1,1)', '(2,2)', '(3,3)');
515 /*+TidScan(t1)*/
516 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid IN ('(1,1)', '(2,2)', '(3,3)');
517
518 -- No. S-3-1-9
519 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
520 /*+NoSeqScan(t1)*/
521 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
522
523 -- No. S-3-1-10
524 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
525 /*+NoSeqScan(t1)*/
526 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
527
528 -- No. S-3-1-11
529 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
530 /*+NoIndexScan(t1)*/
531 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
532
533 -- No. S-3-1-12
534 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
535 /*+NoIndexScan(t1)*/
536 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 >= 1;
537
538 -- No. S-3-1-13
539 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c3 < 10;
540 /*+NoBitmapScan(t1)*/
541 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c3 < 10;
542
543 -- No. S-3-1-14
544 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
545 /*+NoBitmapScan(t1)*/
546 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
547
548 -- No. S-3-1-15
549 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
550 /*+NoTidScan(t1)*/
551 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1 AND t1.ctid = '(1,1)';
552
553 -- No. S-3-1-16
554 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
555 /*+NoTidScan(t1)*/
556 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE t1.c1 = 1;
557
558 ----
559 ---- No. S-3-3 index name specified
560 ----
561
562 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
563 SET enable_tidscan TO off;
564 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
565 SET enable_indexscan TO off;
566 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
567 RESET enable_tidscan;
568 RESET enable_indexscan;
569
570 -- No. S-3-3-1
571 /*+IndexScan(ti1 ti1_i3)*/
572 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
573
574 -- No. S-3-3-2
575 /*+IndexScan(ti1 ti1_i3 ti1_i2)*/
576 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
577
578 -- No. S-3-3-3
579 /*+IndexScan(ti1 ti1_i4 ti1_i3 ti1_i2 ti1_i1)*/
580 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
581
582 -- No. S-3-3-4
583 /*+BitmapScan(ti1 ti1_i3)*/
584 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
585
586 -- No. S-3-3-5
587 /*+BitmapScan(ti1 ti1_i3 ti1_i2)*/
588 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
589
590 -- No. S-3-3-6
591 /*+BitmapScan(ti1 ti1_i4 ti1_i3 ti1_i2 ti1_i1)*/
592 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE ti1.c2 = 1 AND ctid = '(1,1)';
593
594 ----
595 ---- No. S-3-4 index type
596 ----
597
598 \d s1.ti1
599 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)';
600
601 -- No. S-3-4-1
602 /*+IndexScan(ti1 ti1_btree)*/
603 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)';
604
605 -- No. S-3-4-2
606 /*+IndexScan(ti1 ti1_hash)*/
607 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)';
608
609 -- No. S-3-4-3
610 /*+IndexScan(ti1 ti1_gist)*/
611 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)';
612
613 -- No. S-3-4-4
614 /*+IndexScan(ti1 ti1_gin)*/
615 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)';
616
617 -- No. S-3-4-5
618 /*+IndexScan(ti1 ti1_expr)*/
619 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)';
620
621 -- No. S-3-4-6
622 /*+IndexScan(ti1 ti1_pred)*/
623 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)';
624
625 -- No. S-3-4-7
626 /*+IndexScan(ti1 ti1_uniq)*/
627 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)';
628
629 -- No. S-3-4-8
630 /*+IndexScan(ti1 ti1_multi)*/
631 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)';
632
633 -- No. S-3-4-9
634 /*+IndexScan(ti1 ti1_ts)*/
635 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)';
636
637 -- No. S-3-4-10
638 /*+IndexScan(ti1 ti1_pkey)*/
639 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)';
640
641 -- No. S-3-4-11
642 /*+IndexScan(ti1 ti1_c2_key)*/
643 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)';
644
645 -- No. S-3-4-12
646 /*+BitmapScan(ti1 ti1_btree)*/
647 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)';
648
649 -- No. S-3-4-13
650 /*+BitmapScan(ti1 ti1_hash)*/
651 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)';
652
653 -- No. S-3-4-14
654 /*+BitmapScan(ti1 ti1_gist)*/
655 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)';
656
657 -- No. S-3-4-15
658 /*+BitmapScan(ti1 ti1_gin)*/
659 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)';
660
661 -- No. S-3-4-16
662 /*+BitmapScan(ti1 ti1_expr)*/
663 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)';
664
665 -- No. S-3-4-17
666 /*+BitmapScan(ti1 ti1_pred)*/
667 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)';
668
669 -- No. S-3-4-18
670 /*+BitmapScan(ti1 ti1_uniq)*/
671 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)';
672
673 -- No. S-3-4-19
674 /*+BitmapScan(ti1 ti1_multi)*/
675 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)';
676
677 -- No. S-3-4-20
678 /*+BitmapScan(ti1 ti1_ts)*/
679 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)';
680
681 -- No. S-3-4-10
682 /*+BitmapScan(ti1 ti1_pkey)*/
683 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)';
684
685 -- No. S-3-4-11
686 /*+BitmapScan(ti1 ti1_c2_key)*/
687 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)';
688
689 ----
690 ---- No. S-3-5 not used index
691 ----
692
693 -- No. S-3-5-1
694 /*+IndexScan(ti1 ti1_pred)*/
695 EXPLAIN (COSTS true) SELECT * FROM s1.ti1 WHERE c1 = 100;
696
697 -- No. S-3-5-2
698 /*+BitmapScan(ti1 ti1_pred)*/
699 EXPLAIN (COSTS true) SELECT * FROM s1.ti1 WHERE c1 = 100;
700
701 ----
702 ---- No. S-3-6 not exist index
703 ----
704
705 -- No. S-3-6-1
706 /*+IndexScan(ti1 not_exist)*/
707 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 100;
708
709 -- No. S-3-6-2
710 /*+BitmapScan(ti1 not_exist)*/
711 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 100;
712
713 ----
714 ---- No. S-3-7 query structure
715 ----
716
717 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1 AND t1.ctid = '(1,1)';
718
719 -- No. S-3-7-1
720 /*+SeqScan(t1)*/
721 EXPLAIN (COSTS false) SELECT * FROM s1.t1 WHERE c1 = 100;
722
723 -- No. S-3-7-2
724 /*+SeqScan(t1)BitmapScan(t2)*/
725 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1 AND t1.ctid = '(1,1)';
726
727 -- No. S-3-7-3
728 /*+SeqScan(t1)*/
729 EXPLAIN (COSTS false) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1 AND t1.ctid = '(1,1)';
730
731 ----
732 ---- No. S-3-8 query structure
733 ----
734
735 -- No. S-3-8-1
736 EXPLAIN (COSTS false) 
737 WITH c1 (c1) AS (
738 SELECT max(b1t1.c1) FROM s1.t1 b1t1 WHERE b1t1.c1 = 1)
739 SELECT max(b3t1.c1), (
740 SELECT max(b2t1.c1) FROM s1.t1 b2t1 WHERE b2t1.c1 = 1
741                   ) FROM s1.t1 b3t1 WHERE b3t1.c1 = (
742 SELECT max(b4t1.c1) FROM s1.t1 b4t1 WHERE b4t1.c1 = 1);
743 /*+SeqScan(b1t1)IndexScan(b2t1 t1_pkey)BitmapScan(b3t1 t1_pkey)TidScan(b4t1)
744 */
745 EXPLAIN (COSTS false) 
746 WITH c1 (c1) AS (
747 SELECT max(b1t1.c1) FROM s1.t1 b1t1 WHERE b1t1.c1 = 1)
748 SELECT max(b3t1.c1), (
749 SELECT max(b2t1.c1) FROM s1.t1 b2t1 WHERE b2t1.c1 = 1
750                   ) FROM s1.t1 b3t1 WHERE b3t1.c1 = (
751 SELECT max(b4t1.c1) FROM s1.t1 b4t1 WHERE b4t1.c1 = 1);
752
753 -- No. S-3-8-2
754 EXPLAIN (COSTS false) 
755 WITH cte1 (c1) AS (
756 SELECT max(b1t1.c1) FROM s1.t1 b1t1 JOIN s1.t2 b1t2 ON(b1t1.c1 = b1t2.c1) WHERE b1t1.c1 = 1)
757 SELECT max(b3t1.c1), (
758 SELECT max(b2t1.c1) FROM s1.t1 b2t1 JOIN s1.t2 b2t2 ON(b2t1.c1 = b2t2.c1) WHERE b2t1.c1 = 1
759                   ) FROM s1.t1 b3t1 JOIN s1.t2 b3t2 ON(b3t1.c1 = b3t2.c1) JOIN cte1 ON(b3t1.c1 = cte1.c1) WHERE b3t1.c1 = (
760 SELECT max(b4t1.c1) FROM s1.t1 b4t1 JOIN s1.t2 b4t2 ON(b4t1.c1 = b4t2.c1) WHERE b4t1.c1 = 1);
761 /*+SeqScan(b1t1)IndexScan(b2t1 t1_pkey)BitmapScan(b3t1 t1_pkey)TidScan(b4t1)
762 TidScan(b1t2)SeqScan(b2t2)IndexScan(b3t2 t2_pkey)BitmapScan(b4t2 t2_pkey)
763 */
764 EXPLAIN (COSTS false) 
765 WITH cte1 (c1) AS (
766 SELECT max(b1t1.c1) FROM s1.t1 b1t1 JOIN s1.t2 b1t2 ON(b1t1.c1 = b1t2.c1) WHERE b1t1.c1 = 1)
767 SELECT max(b3t1.c1), (
768 SELECT max(b2t1.c1) FROM s1.t1 b2t1 JOIN s1.t2 b2t2 ON(b2t1.c1 = b2t2.c1) WHERE b2t1.c1 = 1
769                   ) FROM s1.t1 b3t1 JOIN s1.t2 b3t2 ON(b3t1.c1 = b3t2.c1) JOIN cte1 ON(b3t1.c1 = cte1.c1) WHERE b3t1.c1 = (
770 SELECT max(b4t1.c1) FROM s1.t1 b4t1 JOIN s1.t2 b4t2 ON(b4t1.c1 = b4t2.c1) WHERE b4t1.c1 = 1);
771
772 -- No. S-3-8-3
773 EXPLAIN (COSTS false) 
774 WITH cte1 (c1) AS (
775 SELECT max(b1t1.c1) FROM s1.t1 b1t1 JOIN s1.t2 b1t2 ON(b1t1.c1 = b1t2.c1) WHERE b1t1.c1 = 1)
776 SELECT max(b3t1.c1), (
777 SELECT max(b2t1.c1) FROM s1.t1 b2t1 WHERE b2t1.c1 = 1
778                   ) FROM s1.t1 b3t1 JOIN s1.t2 b3t2 ON(b3t1.c1 = b3t2.c1) JOIN cte1 ON(b3t1.c1 = cte1.c1) WHERE b3t1.c1 = (
779 SELECT max(b4t1.c1) FROM s1.t1 b4t1 WHERE b4t1.c1 = 1);
780 /*+SeqScan(b1t1)IndexScan(b2t1 t1_pkey)BitmapScan(b3t1 t1_pkey)TidScan(b4t1)
781 TidScan(b1t2)IndexScan(b3t2 t2_pkey)
782 */
783 EXPLAIN (COSTS false) 
784 WITH cte1 (c1) AS (
785 SELECT max(b1t1.c1) FROM s1.t1 b1t1 JOIN s1.t2 b1t2 ON(b1t1.c1 = b1t2.c1) WHERE b1t1.c1 = 1)
786 SELECT max(b3t1.c1), (
787 SELECT max(b2t1.c1) FROM s1.t1 b2t1 WHERE b2t1.c1 = 1
788                   ) FROM s1.t1 b3t1 JOIN s1.t2 b3t2 ON(b3t1.c1 = b3t2.c1) JOIN cte1 ON(b3t1.c1 = cte1.c1) WHERE b3t1.c1 = (
789 SELECT max(b4t1.c1) FROM s1.t1 b4t1 WHERE b4t1.c1 = 1);
790
791 ----
792 ---- No. S-3-9 inheritance table select type
793 ----
794
795 -- No. S-3-9-1
796 EXPLAIN (COSTS false) SELECT * FROM ONLY s1.p1 WHERE c1 = 1;
797 /*+IndexScan(p1)*/
798 EXPLAIN (COSTS false) SELECT * FROM ONLY s1.p1 WHERE c1 = 1;
799
800 -- No. S-3-9-2
801 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE c1 = 1;
802 /*+IndexScan(p1)*/
803 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE c1 = 1;
804
805 ----
806 ---- No. S-3-10 inheritance table number
807 ----
808
809 -- No. S-3-10-1
810 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE c1 = 1;
811 /*+IndexScan(p1)*/
812 EXPLAIN (COSTS false) SELECT * FROM s1.p1 WHERE c1 = 1;
813
814 -- No. S-3-10-2
815 EXPLAIN (COSTS false) SELECT * FROM s1.p2 WHERE c1 = 1;
816 /*+IndexScan(p2)*/
817 EXPLAIN (COSTS false) SELECT * FROM s1.p2 WHERE c1 = 1;
818
819 ----
820 ---- No. S-3-11 inheritance table specified table
821 ----
822
823 EXPLAIN (COSTS false) SELECT * FROM s1.p2 WHERE c1 = 1;
824
825 -- No. S-3-11-1
826 /*+IndexScan(p2)*/
827 EXPLAIN (COSTS false) SELECT * FROM s1.p2 WHERE c1 = 1;
828
829 -- No. S-3-11-2
830 /*+IndexScan(p2c1)*/
831 EXPLAIN (COSTS false) SELECT * FROM s1.p2 WHERE c1 = 1;
832
833 -- No. S-3-11-3
834 /*+IndexScan(p2 p2_pkey p2c1_pkey p2c1c1_pkey)*/
835 EXPLAIN (COSTS false) SELECT * FROM s1.p2 WHERE c1 = 1;
836
837 -- No. S-3-11-4
838 /*+IndexScan(p2 p2c1_pkey)*/
839 EXPLAIN (COSTS true) SELECT * FROM s1.p2 WHERE c1 = 1;
840
841 ----
842 ---- No. S-3-12 specified same table
843 ----
844
845 -- No. S-3-12-1
846 /*+IndexScan(ti1) BitmapScan(ti1)*/
847 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
848
849 -- No. S-3-12-2
850 /*+IndexScan(ti1 ti1_pkey) BitmapScan(ti1 ti1_btree)*/
851 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
852
853 -- No. S-3-12-3
854 /*+BitmapScan(ti1) IndexScan(ti1) BitmapScan(ti1)*/
855 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
856
857 -- No. S-3-12-4
858 /*+BitmapScan(ti1 ti1_hash) IndexScan(ti1 ti1_pkey) BitmapScan(ti1 ti1_btree)*/
859 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
860
861 ----
862 ---- No. S-3-13 message output
863 ----
864
865 -- No. S-3-13-1
866 /*+SeqScan(ti1)*/
867 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
868
869 -- No. S-3-13-2
870 /*+SeqScan(ti1 ti1_pkey)*/
871 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
872
873 -- No. S-3-13-3
874 /*+SeqScan(ti1 ti1_pkey ti1_btree)*/
875 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
876
877 -- No. S-3-13-4
878 /*+IndexScan(ti1)*/
879 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
880
881 -- No. S-3-13-5
882 /*+IndexScan(ti1 ti1_pkey)*/
883 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
884
885 -- No. S-3-13-6
886 /*+IndexScan(ti1 ti1_pkey ti1_btree)*/
887 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
888
889 -- No. S-3-13-7
890 /*+BitmapScan(ti1)*/
891 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
892
893 -- No. S-3-13-8
894 /*+BitmapScan(ti1 ti1_pkey)*/
895 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
896
897 -- No. S-3-13-9
898 /*+BitmapScan(ti1 ti1_pkey ti1_btree)*/
899 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
900
901 -- No. S-3-13-10
902 /*+TidScan(ti1)*/
903 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
904
905 -- No. S-3-13-11
906 /*+TidScan(ti1 ti1_pkey)*/
907 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
908
909 -- No. S-3-13-12
910 /*+TidScan(ti1 ti1_pkey ti1_btree)*/
911 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
912
913 -- No. S-3-13-13
914 /*+NoSeqScan(ti1)*/
915 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
916
917 -- No. S-3-13-14
918 /*+NoSeqScan(ti1 ti1_pkey)*/
919 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
920
921 -- No. S-3-13-15
922 /*+NoSeqScan(ti1 ti1_pkey ti1_btree)*/
923 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
924
925 -- No. S-3-13-16
926 /*+NoIndexScan(ti1)*/
927 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
928
929 -- No. S-3-13-17
930 /*+NoIndexScan(ti1 ti1_pkey)*/
931 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
932
933 -- No. S-3-13-18
934 /*+NoIndexScan(ti1 ti1_pkey ti1_btree)*/
935 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
936
937 -- No. S-3-13-19
938 /*+NoBitmapScan(ti1)*/
939 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
940
941 -- No. S-3-13-20
942 /*+NoBitmapScan(ti1 ti1_pkey)*/
943 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
944
945 -- No. S-3-13-21
946 /*+NoBitmapScan(ti1 ti1_pkey ti1_btree)*/
947 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
948
949 -- No. S-3-13-22
950 /*+NoTidScan(ti1)*/
951 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
952
953 -- No. S-3-13-23
954 /*+NoTidScan(ti1 ti1_pkey)*/
955 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
956
957 -- No. S-3-13-24
958 /*+NoTidScan(ti1 ti1_pkey ti1_btree)*/
959 EXPLAIN (COSTS false) SELECT * FROM s1.ti1 WHERE c1 = 1 AND ctid = '(1,1)';
960