OSDN Git Service

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