OSDN Git Service

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