OSDN Git Service

Support DECLARE CURSOR syntax and added regression for table hinting.
[pghintplan/pg_hint_plan.git] / sql / ut-R.sql
1 LOAD 'pg_hint_plan';
2 SET pg_hint_plan.enable_hint TO on;
3 SET pg_hint_plan.debug_print TO on;
4 SET client_min_messages TO LOG;
5 SET search_path TO public;
6
7 \o results/ut-R.tmpout
8 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
9 \o
10 \! sql/maskout.sh results/ut-R.tmpout
11
12 ----
13 ---- No. R-1-1 specified pattern of the object name
14 ----
15
16 -- No. R-1-1-1
17 \o results/ut-R.tmpout
18 /*+Rows(t1 t2 #1)*/
19 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
20 \o
21 \! sql/maskout.sh results/ut-R.tmpout
22
23 -- No. R-1-1-2
24 \o results/ut-R.tmpout
25 /*+Rows(t1 t2 #1)*/
26 EXPLAIN SELECT * FROM s1.t1 t_1, s1.t2 t_2 WHERE t_1.c1 = t_2.c1;
27 \o
28 \! sql/maskout.sh results/ut-R.tmpout
29
30 -- No. R-1-1-3
31 \o results/ut-R.tmpout
32 /*+Rows(t_1 t_2 #1)*/
33 EXPLAIN SELECT * FROM s1.t1 t_1, s1.t2 t_2 WHERE t_1.c1 = t_2.c1;
34 \o
35 \! sql/maskout.sh results/ut-R.tmpout
36
37 ----
38 ---- No. R-1-2 specified schema name in the hint option
39 ----
40
41 -- No. R-1-2-1
42 \o results/ut-R.tmpout
43 /*+Rows(t1 t2 #1)*/
44 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
45 \o
46 \! sql/maskout.sh results/ut-R.tmpout
47
48 -- No. R-1-2-2
49 \o results/ut-R.tmpout
50 /*+Rows(s1.t1 s1.t2 #1)*/
51 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
52 \o
53 \! sql/maskout.sh results/ut-R.tmpout
54
55 ----
56 ---- No. R-1-3 table doesn't exist in the hint option
57 ----
58
59 -- No. R-1-3-1
60 \o results/ut-R.tmpout
61 /*+Rows(t1 t2 #1)*/
62 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
63 \o
64 \! sql/maskout.sh results/ut-R.tmpout
65
66 -- No. R-1-3-2
67 \o results/ut-R.tmpout
68 /*+Rows(t3 t4 #1)*/
69 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
70 \o
71 \! sql/maskout.sh results/ut-R.tmpout
72
73 ----
74 ---- No. R-1-4 conflict table name
75 ----
76
77 -- No. R-1-4-1
78 \o results/ut-R.tmpout
79 /*+Rows(t1 t2 #1)*/
80 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
81 \o
82 \! sql/maskout.sh results/ut-R.tmpout
83
84
85 -- No. R-1-4-2
86 \o results/ut-R.tmpout
87 EXPLAIN SELECT * FROM s1.t1, s2.t1 WHERE s1.t1.c1 = s2.t1.c1;
88 \o
89 \! sql/maskout.sh results/ut-R.tmpout
90
91 \o results/ut-R.tmpout
92 /*+Rows(t1 t1 #1)*/
93 EXPLAIN SELECT * FROM s1.t1, s2.t1 WHERE s1.t1.c1 = s2.t1.c1;
94 \o
95 \! sql/maskout.sh results/ut-R.tmpout
96
97 \o results/ut-R.tmpout
98 /*+Rows(s1.t1 s2.t1 #1)*/
99 EXPLAIN SELECT * FROM s1.t1, s2.t1 WHERE s1.t1.c1 = s2.t1.c1;
100 \o
101 \! sql/maskout.sh results/ut-R.tmpout
102
103 \o results/ut-R.tmpout
104 EXPLAIN SELECT * FROM s1.t1, s2.t1 s2t1 WHERE s1.t1.c1 = s2t1.c1;
105 \o
106 \! sql/maskout.sh results/ut-R.tmpout
107
108 \o results/ut-R.tmpout
109 /*+Rows(t1 s2t1 #1)*/
110 EXPLAIN SELECT * FROM s1.t1, s2.t1 s2t1 WHERE s1.t1.c1 = s2t1.c1;
111 \o
112 \! sql/maskout.sh results/ut-R.tmpout
113
114 -- No. R-1-4-3
115 \o results/ut-R.tmpout
116 EXPLAIN SELECT *, (SELECT max(t1.c1) FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1) FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
117 \o
118 \! sql/maskout.sh results/ut-R.tmpout
119
120 \o results/ut-R.tmpout
121 /*+Rows(t1 t2 #1)*/
122 EXPLAIN SELECT *, (SELECT max(t1.c1) FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1) FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
123 \o
124 \! sql/maskout.sh results/ut-R.tmpout
125
126 \o results/ut-R.tmpout
127 /*+Rows(st1 st2 #1)Rows(t1 t2 #1)*/
128 EXPLAIN SELECT *, (SELECT max(st1.c1) FROM s1.t1 st1, s1.t2 st2 WHERE st1.c1 = st2.c1) FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
129 \o
130 \! sql/maskout.sh results/ut-R.tmpout
131
132 ----
133 ---- No. R-1-5 conflict table name
134 ----
135
136 -- No. R-1-5-1
137 \o results/ut-R.tmpout
138 /*+Rows(t1 t2 #1)*/
139 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
140 \o
141 \! sql/maskout.sh results/ut-R.tmpout
142
143 -- No. R-1-5-2
144 \o results/ut-R.tmpout
145 /*+Rows(t1 t1 #1)*/
146 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
147 \o
148 \! sql/maskout.sh results/ut-R.tmpout
149
150 -- No. R-1-5-3
151 \o results/ut-R.tmpout
152 /*+(t1 t1)(t2 t2)*/
153 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
154 \o
155 \! sql/maskout.sh results/ut-R.tmpout
156
157 \o results/ut-R.tmpout
158 EXPLAIN SELECT * FROM s1.t1, s1.t2, s1.t3 WHERE t1.c1 = t2.c1 AND t1.c1 = t3.c1;
159 \o
160 \! sql/maskout.sh results/ut-R.tmpout
161
162 \o results/ut-R.tmpout
163 /*+(t1 t2 t1 t2)*/
164 EXPLAIN SELECT * FROM s1.t1, s1.t2, s1.t3, s1.t4 WHERE t1.c1 = t2.c1 AND t1.c1 = t3.c1 AND t1.c1 = t4.c1;
165 \o
166 \! sql/maskout.sh results/ut-R.tmpout
167
168 ----
169 ---- No. R-1-6 object type for the hint
170 ----
171
172 -- No. R-1-6-1
173 \o results/ut-R.tmpout
174 /*+Rows(t1 t2 #1)*/
175 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
176 \o
177 \! sql/maskout.sh results/ut-R.tmpout
178
179 -- No. R-1-6-2
180 \o results/ut-R.tmpout
181 EXPLAIN SELECT * FROM s1.p1 t1, s1.p1 t2 WHERE t1.c1 = t2.c1;
182 \o
183 \! sql/maskout.sh results/ut-R.tmpout
184
185 \o results/ut-R.tmpout
186 /*+Rows(t1 t2 #1)*/
187 EXPLAIN SELECT * FROM s1.p1 t1, s1.p1 t2 WHERE t1.c1 = t2.c1;
188 \o
189 \! sql/maskout.sh results/ut-R.tmpout
190
191 -- No. R-1-6-3
192 \o results/ut-R.tmpout
193 EXPLAIN SELECT * FROM s1.ul1 t1, s1.ul1 t2 WHERE t1.c1 = t2.c1;
194 \o
195 \! sql/maskout.sh results/ut-R.tmpout
196
197 \o results/ut-R.tmpout
198 /*+Rows(t1 t2 #1)*/
199 EXPLAIN SELECT * FROM s1.ul1 t1, s1.ul1 t2 WHERE t1.c1 = t2.c1;
200 \o
201 \! sql/maskout.sh results/ut-R.tmpout
202
203 -- No. R-1-6-4
204 CREATE TEMP TABLE tm1 (LIKE s1.t1 INCLUDING ALL);
205 \o results/ut-R.tmpout
206 EXPLAIN SELECT * FROM tm1 t1, tm1 t2 WHERE t1.c1 = t2.c1;
207 \o
208 \! sql/maskout.sh results/ut-R.tmpout
209
210 \o results/ut-R.tmpout
211 /*+Rows(t1 t2 #1)*/
212 EXPLAIN SELECT * FROM tm1 t1, tm1 t2 WHERE t1.c1 = t2.c1;
213 \o
214 \! sql/maskout.sh results/ut-R.tmpout
215
216 -- No. R-1-6-5
217 CREATE TEMP TABLE t_pg_class WITH OIDS AS SELECT * from pg_class LIMIT 100;
218 \o results/ut-R.tmpout
219 EXPLAIN SELECT * FROM t_pg_class t1, t_pg_class t2 WHERE t1.oid = t2.oid;
220 \o
221 \! sql/maskout.sh results/ut-R.tmpout
222
223 \o results/ut-R.tmpout
224 /*+Rows(t1 t2 #1)*/
225 EXPLAIN SELECT * FROM t_pg_class t1, t_pg_class t2 WHERE t1.oid = t2.oid;
226 \o
227 \! sql/maskout.sh results/ut-R.tmpout
228
229
230 -- No. R-1-6-6
231 -- refer ut-fdw.sql
232
233 -- No. R-1-6-7
234 \o results/ut-R.tmpout
235 EXPLAIN SELECT * FROM s1.f1() t1, s1.f1() t2 WHERE t1.c1 = t2.c1;
236 \o
237 \! sql/maskout.sh results/ut-R.tmpout
238
239 \o results/ut-R.tmpout
240 /*+Rows(t1 t2 #1)*/
241 EXPLAIN SELECT * FROM s1.f1() t1, s1.f1() t2 WHERE t1.c1 = t2.c1;
242 \o
243 \! sql/maskout.sh results/ut-R.tmpout
244
245 -- No. R-1-6-8
246 \o results/ut-R.tmpout
247 EXPLAIN SELECT * FROM (VALUES(1,1,1,'1'), (2,2,2,'2'), (3,3,3,'3')) AS t1 (c1, c2, c3, c4),  s1.t2 WHERE t1.c1 = t2.c1;
248 \o
249 \! sql/maskout.sh results/ut-R.tmpout
250
251 \o results/ut-R.tmpout
252 /*+Rows(t1 t2 #1)*/
253 EXPLAIN SELECT * FROM (VALUES(1,1,1,'1'), (2,2,2,'2'), (3,3,3,'3')) AS t1 (c1, c2, c3, c4),  s1.t2 WHERE t1.c1 = t2.c1;
254 \o
255 \! sql/maskout.sh results/ut-R.tmpout
256
257 \o results/ut-R.tmpout
258 /*+Rows(*VALUES* t2 #1)*/
259 EXPLAIN SELECT * FROM (VALUES(1,1,1,'1'), (2,2,2,'2'), (3,3,3,'3')) AS t1 (c1, c2, c3, c4),  s1.t2 WHERE t1.c1 = t2.c1;
260 \o
261 \! sql/maskout.sh results/ut-R.tmpout
262
263 -- No. R-1-6-9
264 \o results/ut-R.tmpout
265 EXPLAIN WITH c1(c1) AS (SELECT max(t1.c1) FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1) SELECT * FROM s1.t1, c1 WHERE t1.c1 = c1.c1;
266 \o
267 \! sql/maskout.sh results/ut-R.tmpout
268
269 \o results/ut-R.tmpout
270 /*+Rows(t1 t2 #1)Rows(t1 c1 +1)*/
271 EXPLAIN WITH c1(c1) AS (SELECT max(t1.c1) FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1) SELECT * FROM s1.t1, c1 WHERE t1.c1 = c1.c1;
272 \o
273 \! sql/maskout.sh results/ut-R.tmpout
274
275 -- No. R-1-6-10
276 \o results/ut-R.tmpout
277 EXPLAIN SELECT * FROM s1.v1 t1, s1.v1 t2 WHERE t1.c1 = t2.c1;
278 \o
279 \! sql/maskout.sh results/ut-R.tmpout
280
281 \o results/ut-R.tmpout
282 /*+Rows(t1 t2 #1)*/
283 EXPLAIN SELECT * FROM s1.v1 t1, s1.v1 t2 WHERE t1.c1 = t2.c1;
284 \o
285 \! sql/maskout.sh results/ut-R.tmpout
286
287 \o results/ut-R.tmpout
288 /*+Rows(v1t1 v1t1_ #1)*/
289 EXPLAIN SELECT * FROM s1.v1 t1, s1.v1_ t2 WHERE t1.c1 = t2.c1;
290 \o
291 \! sql/maskout.sh results/ut-R.tmpout
292
293 -- No. R-1-6-11
294 \o results/ut-R.tmpout
295 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1 AND t1.c1 = (SELECT max(st1.c1) FROM s1.t1 st1, s1.t2 st2 WHERE st1.c1 = st2.c1);
296 \o
297 \! sql/maskout.sh results/ut-R.tmpout
298
299 \o results/ut-R.tmpout
300 /*+Rows(t1 t2 #1)Rows(st1 st2 #1)*/
301 EXPLAIN (COSTS true) SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1 AND t1.c1 = (SELECT max(st1.c1) FROM s1.t1 st1, s1.t2 st2 WHERE st1.c1 = st2.c1);
302 \o
303 \! sql/maskout.sh results/ut-R.tmpout
304 --
305 -- There are cases where difference in the measured value and predicted value
306 -- depending upon the version of PostgreSQL
307 --
308
309 \o results/ut-R.tmpout
310 EXPLAIN SELECT * FROM s1.t1, (SELECT t2.c1 FROM s1.t2) st2 WHERE t1.c1 = st2.c1;
311 \o
312 \! sql/maskout.sh results/ut-R.tmpout
313
314 \o results/ut-R.tmpout
315 /*+Rows(t1 st2 #1)*/
316 EXPLAIN SELECT * FROM s1.t1, (SELECT t2.c1 FROM s1.t2) st2 WHERE t1.c1 = st2.c1;
317 \o
318 \! sql/maskout.sh results/ut-R.tmpout
319
320 \o results/ut-R.tmpout
321 /*+Rows(t1 t2 #1)*/
322 EXPLAIN SELECT * FROM s1.t1, (SELECT t2.c1 FROM s1.t2) st2 WHERE t1.c1 = st2.c1;
323 \o
324 \! sql/maskout.sh results/ut-R.tmpout
325
326
327 ----
328 ---- No. R-1-7 specified number of conditions
329 ----
330
331 -- No. R-1-7-1
332 \o results/ut-R.tmpout
333 /*+Rows(t1 #1)*/
334 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
335 \o
336 \! sql/maskout.sh results/ut-R.tmpout
337
338 -- No. R-1-7-2
339 \o results/ut-R.tmpout
340 /*+Rows(t1 t2 1)*/
341 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
342 \o
343 \! sql/maskout.sh results/ut-R.tmpout
344
345 -- No. R-1-7-3
346 \o results/ut-R.tmpout
347 /*+Rows(t1 t2 #notrows)*/
348 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
349 \o
350 \! sql/maskout.sh results/ut-R.tmpout
351
352 ----
353 ---- No. R-2-1 some complexity query blocks
354 ----
355
356 -- No. R-2-1-1
357 \o results/ut-R.tmpout
358 /*+
359 Leading(bmt1 bmt2 bmt3 bmt4)
360 Leading(b1t2 b1t3 b1t4 b1t1)
361 Leading(b2t3 b2t4 b2t1 b2t2)
362 MergeJoin(bmt1 bmt2)HashJoin(bmt1 bmt2 bmt3)NestLoop(bmt1 bmt2 bmt3 bmt4)
363 MergeJoin(b1t2 b1t3)HashJoin(b1t2 b1t3 b1t4)NestLoop(b1t2 b1t3 b1t4 b1t1)
364 MergeJoin(b2t3 b2t4)HashJoin(b2t3 b2t4 b2t1)NestLoop(b2t3 b2t4 b2t1 b2t2)
365 */
366 EXPLAIN
367 SELECT max(bmt1.c1), (
368 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
369 ), (
370 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
371 )
372                     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
373 ;
374 \o
375 \! sql/maskout.sh results/ut-R.tmpout
376
377 \o results/ut-R.tmpout
378 /*+
379 Leading(bmt1 bmt2 bmt3 bmt4)
380 Leading(b1t2 b1t3 b1t4 b1t1)
381 Leading(b2t3 b2t4 b2t1 b2t2)
382 MergeJoin(bmt1 bmt2)HashJoin(bmt1 bmt2 bmt3)NestLoop(bmt1 bmt2 bmt3 bmt4)
383 MergeJoin(b1t2 b1t3)HashJoin(b1t2 b1t3 b1t4)NestLoop(b1t2 b1t3 b1t4 b1t1)
384 MergeJoin(b2t3 b2t4)HashJoin(b2t3 b2t4 b2t1)NestLoop(b2t3 b2t4 b2t1 b2t2)
385 Rows(bmt1 bmt2 #1)Rows(bmt1 bmt2 bmt3 #1)Rows(bmt1 bmt2 bmt3 bmt4 #1)
386 Rows(b1t2 b1t3 #1)Rows(b1t2 b1t3 b1t4 #1)Rows(b1t2 b1t3 b1t4 b1t1 #1)
387 Rows(b2t3 b2t4 #1)Rows(b2t3 b2t4 b2t1 #1)Rows(b2t3 b2t4 b2t1 b2t2 #1)
388 */
389 EXPLAIN
390 SELECT max(bmt1.c1), (
391 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
392 ), (
393 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)
394                     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
395 ;
396 \o
397 \! sql/maskout.sh results/ut-R.tmpout
398
399 -- No. R-2-1-2
400 \o results/ut-R.tmpout
401 /*+
402 Leading(bmt1 bmt2 bmt3 bmt4)
403 Leading(b1t2 b1t3 b1t4 b1t1)
404 Leading(b2t3 b2t4 b2t1 b2t2)
405 Leading(b3t4 b3t1 b3t2 b3t3)
406 MergeJoin(bmt1 bmt2)HashJoin(bmt1 bmt2 bmt3)NestLoop(bmt1 bmt2 bmt3 bmt4)
407 MergeJoin(b1t2 b1t3)HashJoin(b1t2 b1t3 b1t4)NestLoop(b1t2 b1t3 b1t4 b1t1)
408 MergeJoin(b2t3 b2t4)HashJoin(b2t3 b2t4 b2t1)NestLoop(b2t3 b2t4 b2t1 b2t2)
409 MergeJoin(b3t4 b3t1)HashJoin(b3t4 b3t1 b3t2)NestLoop(b3t1 b3t2 b3t3 b3t4)
410 */
411 EXPLAIN
412 SELECT max(bmt1.c1), (
413 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
414 ), (
415 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
416 ), (
417 SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2, s1.t3 b3t3, s1.t4 b3t4 WHERE b3t1.c1 = b3t2.c1 AND b3t1.c1 = b3t3.c1 AND b3t1.c1 = b3t4.c1
418 )
419                     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
420 ;
421 \o
422 \! sql/maskout.sh results/ut-R.tmpout
423
424 \o results/ut-R.tmpout
425 /*+
426 Leading(bmt1 bmt2 bmt3 bmt4)
427 Leading(b1t2 b1t3 b1t4 b1t1)
428 Leading(b2t3 b2t4 b2t1 b2t2)
429 Leading(b3t4 b3t1 b3t2 b3t3)
430 MergeJoin(bmt1 bmt2)HashJoin(bmt1 bmt2 bmt3)NestLoop(bmt1 bmt2 bmt3 bmt4)
431 MergeJoin(b1t2 b1t3)HashJoin(b1t2 b1t3 b1t4)NestLoop(b1t2 b1t3 b1t4 b1t1)
432 MergeJoin(b2t3 b2t4)HashJoin(b2t3 b2t4 b2t1)NestLoop(b2t3 b2t4 b2t1 b2t2)
433 MergeJoin(b3t4 b3t1)HashJoin(b3t4 b3t1 b3t2)NestLoop(b3t1 b3t2 b3t3 b3t4)
434 Rows(bmt1 bmt2 #1)Rows(bmt1 bmt2 bmt3 #1)Rows(bmt1 bmt2 bmt3 bmt4 #1)
435 Rows(b1t2 b1t3 #1)Rows(b1t2 b1t3 b1t4 #1)Rows(b1t2 b1t3 b1t4 b1t1 #1)
436 Rows(b2t3 b2t4 #1)Rows(b2t3 b2t4 b2t1 #1)Rows(b2t3 b2t4 b2t1 b2t2 #1)
437 Rows(b3t4 b3t1 #1)Rows(b3t4 b3t1 b3t2 #1)Rows(b3t1 b3t2 b3t3 b3t4 #1)
438 */
439 EXPLAIN
440 SELECT max(bmt1.c1), (
441 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
442 ), (
443 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
444 ), (
445 SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2, s1.t3 b3t3, s1.t4 b3t4 WHERE b3t1.c1 = b3t2.c1 AND b3t1.c1 = b3t3.c1 AND b3t1.c1 = b3t4.c1
446 )
447                     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
448 ;
449 \o
450 \! sql/maskout.sh results/ut-R.tmpout
451
452 -- No. R-2-1-3
453 \o results/ut-R.tmpout
454 /*+
455 Leading(bmt4 bmt3 bmt2 bmt1)
456 */
457 EXPLAIN SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
458 \o
459 \! sql/maskout.sh results/ut-R.tmpout
460
461 \o results/ut-R.tmpout
462 /*+
463 Leading(bmt4 bmt3 bmt2 bmt1)
464 Rows(bmt4 bmt3 #1)Rows(bmt4 bmt3 bmt2 #1)Rows(bmt1 bmt2 bmt3 bmt4 #1)
465 */
466 EXPLAIN SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
467 \o
468 \! sql/maskout.sh results/ut-R.tmpout
469
470 -- No. R-2-1-4
471 \o results/ut-R.tmpout
472 /*+
473 Leading(bmt4 bmt3 bmt2 bmt1)
474 */
475 EXPLAIN SELECT max(bmt1.c1) FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = sbmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
476 \o
477 \! sql/maskout.sh results/ut-R.tmpout
478
479 \o results/ut-R.tmpout
480 /*+
481 Leading(bmt4 bmt3 bmt2 bmt1)
482 Rows(bmt4 bmt3 #1)Rows(bmt4 bmt3 bmt2 #1)Rows(bmt1 bmt2 bmt3 bmt4 #1)
483 */
484 EXPLAIN SELECT max(bmt1.c1) FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = sbmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
485 \o
486 \! sql/maskout.sh results/ut-R.tmpout
487
488 -- No. R-2-1-5
489 \o results/ut-R.tmpout
490 /*+
491 Leading(bmt1 bmt2 bmt3 bmt4)
492 Leading(b1t2 b1t3 b1t4 b1t1)
493 Leading(b2t3 b2t4 b2t1 b2t2)
494 MergeJoin(bmt1 bmt2)HashJoin(bmt1 bmt2 bmt3)NestLoop(bmt1 bmt2 bmt3 bmt4)
495 MergeJoin(b1t2 b1t3)HashJoin(b1t2 b1t3 b1t4)NestLoop(b1t2 b1t3 b1t4 b1t1)
496 MergeJoin(b2t3 b2t4)HashJoin(b2t3 b2t4 b2t1)NestLoop(b2t3 b2t4 b2t1 b2t2)
497 */
498 EXPLAIN
499 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
500 AND bmt1.c1 <> (
501 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
502 ) AND bmt1.c1 <> (
503 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
504 );
505 \o
506 \! sql/maskout.sh results/ut-R.tmpout
507
508 \o results/ut-R.tmpout
509 /*+
510 Leading(bmt1 bmt2 bmt3 bmt4)
511 Leading(b1t2 b1t3 b1t4 b1t1)
512 Leading(b2t3 b2t4 b2t1 b2t2)
513 MergeJoin(bmt1 bmt2)HashJoin(bmt1 bmt2 bmt3)NestLoop(bmt1 bmt2 bmt3 bmt4)
514 MergeJoin(b1t2 b1t3)HashJoin(b1t2 b1t3 b1t4)NestLoop(b1t2 b1t3 b1t4 b1t1)
515 MergeJoin(b2t3 b2t4)HashJoin(b2t3 b2t4 b2t1)NestLoop(b2t3 b2t4 b2t1 b2t2)
516 Rows(bmt1 bmt2 #1)Rows(bmt1 bmt2 bmt3 #1)Rows(bmt1 bmt2 bmt3 bmt4 #1)
517 Rows(b1t2 b1t3 #1)Rows(b1t2 b1t3 b1t4 #1)Rows(b1t2 b1t3 b1t4 b1t1 #1)
518 Rows(b2t3 b2t4 #1)Rows(b2t3 b2t4 b2t1 #1)Rows(b2t3 b2t4 b2t1 b2t2 #1)
519 */
520 EXPLAIN
521 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
522 AND bmt1.c1 <> (
523 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
524 ) AND bmt1.c1 <> (
525 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
526 )
527 ;
528 \o
529 \! sql/maskout.sh results/ut-R.tmpout
530
531 -- No. R-2-1-6
532 \o results/ut-R.tmpout
533 /*+
534 Leading(bmt1 bmt2 bmt3 bmt4)
535 Leading(b1t2 b1t3 b1t4 b1t1)
536 Leading(b2t3 b2t4 b2t1 b2t2)
537 Leading(b3t4 b3t1 b3t2 b3t3)
538 MergeJoin(bmt1 bmt2)HashJoin(bmt1 bmt2 bmt3)NestLoop(bmt1 bmt2 bmt3 bmt4)
539 MergeJoin(b1t2 b1t3)HashJoin(b1t2 b1t3 b1t4)NestLoop(b1t2 b1t3 b1t4 b1t1)
540 MergeJoin(b2t3 b2t4)HashJoin(b2t3 b2t4 b2t1)NestLoop(b2t3 b2t4 b2t1 b2t2)
541 MergeJoin(b3t4 b3t1)HashJoin(b3t4 b3t1 b3t2)NestLoop(b3t1 b3t2 b3t3 b3t4)
542 */
543 EXPLAIN
544 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
545   AND bmt1.c1 <> (
546 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
547 ) AND bmt1.c1 <> (
548 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
549 ) AND bmt1.c1 <> (
550 SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2, s1.t3 b3t3, s1.t4 b3t4 WHERE b3t1.c1 = b3t2.c1 AND b3t1.c1 = b3t3.c1 AND b3t1.c1 = b3t4.c1
551 )
552 ;
553 \o
554 \! sql/maskout.sh results/ut-R.tmpout
555
556 \o results/ut-R.tmpout
557 /*+
558 Leading(bmt1 bmt2 bmt3 bmt4)
559 Leading(b1t2 b1t3 b1t4 b1t1)
560 Leading(b2t3 b2t4 b2t1 b2t2)
561 Leading(b3t4 b3t1 b3t2 b3t3)
562 MergeJoin(bmt1 bmt2)HashJoin(bmt1 bmt2 bmt3)NestLoop(bmt1 bmt2 bmt3 bmt4)
563 MergeJoin(b1t2 b1t3)HashJoin(b1t2 b1t3 b1t4)NestLoop(b1t2 b1t3 b1t4 b1t1)
564 MergeJoin(b2t3 b2t4)HashJoin(b2t3 b2t4 b2t1)NestLoop(b2t3 b2t4 b2t1 b2t2)
565 MergeJoin(b3t4 b3t1)HashJoin(b3t4 b3t1 b3t2)NestLoop(b3t1 b3t2 b3t3 b3t4)
566 Rows(bmt1 bmt2 #1)Rows(bmt1 bmt2 bmt3 #1)Rows(bmt1 bmt2 bmt3 bmt4 #1)
567 Rows(b1t2 b1t3 #1)Rows(b1t2 b1t3 b1t4 #1)Rows(b1t2 b1t3 b1t4 b1t1 #1)
568 Rows(b2t3 b2t4 #1)Rows(b2t3 b2t4 b2t1 #1)Rows(b2t3 b2t4 b2t1 b2t2 #1)
569 Rows(b3t4 b3t1 #1)Rows(b3t4 b3t1 b3t2 #1)Rows(b3t1 b3t2 b3t3 b3t4 #1)
570 */
571 EXPLAIN
572 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
573   AND bmt1.c1 <> (
574 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
575 ) AND bmt1.c1 <> (
576 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
577 ) AND bmt1.c1 <> (
578 SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2, s1.t3 b3t3, s1.t4 b3t4 WHERE b3t1.c1 = b3t2.c1 AND b3t1.c1 = b3t3.c1 AND b3t1.c1 = b3t4.c1
579 )
580 ;
581 \o
582 \! sql/maskout.sh results/ut-R.tmpout
583
584 -- No. R-2-1-7
585 \o results/ut-R.tmpout
586 /*+
587 Leading(c2 c1 bmt1 bmt2 bmt3 bmt4)
588 Leading(b1t2 b1t3 b1t4 b1t1)
589 Leading(b2t3 b2t4 b2t1 b2t2)
590 MergeJoin(c2 c1)HashJoin(c2 c1 bmt1)NestLoop(c2 c1 bmt1 bmt2)MergeJoin(c2 c1 bmt1 bmt2 bmt3)HashJoin(c2 c1 bmt1 bmt2 bmt3 bmt4)
591 MergeJoin(b1t2 b1t3)HashJoin(b1t2 b1t3 b1t4)NestLoop(b1t2 b1t3 b1t4 b1t1)
592 MergeJoin(b2t3 b2t4)HashJoin(b2t3 b2t4 b2t1)NestLoop(b2t3 b2t4 b2t1 b2t2)
593 */
594 EXPLAIN
595 WITH c1 (c1) AS (
596 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
597 )
598 , c2 (c1) AS (
599 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
600 )
601 SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4
602 , c1, c2
603                                                                         WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
604 AND bmt1.c1 = c1.c1
605 AND bmt1.c1 = c2.c1
606 ;
607 \o
608 \! sql/maskout.sh results/ut-R.tmpout
609
610 \o results/ut-R.tmpout
611 /*+
612 Leading(c2 c1 bmt1 bmt2 bmt3 bmt4)
613 Leading(b1t2 b1t3 b1t4 b1t1)
614 Leading(b2t3 b2t4 b2t1 b2t2)
615 MergeJoin(c2 c1)HashJoin(c2 c1 bmt1)NestLoop(c2 c1 bmt1 bmt2)MergeJoin(c2 c1 bmt1 bmt2 bmt3)HashJoin(c2 c1 bmt1 bmt2 bmt3 bmt4)
616 MergeJoin(b1t2 b1t3)HashJoin(b1t2 b1t3 b1t4)NestLoop(b1t2 b1t3 b1t4 b1t1)
617 MergeJoin(b2t3 b2t4)HashJoin(b2t3 b2t4 b2t1)NestLoop(b2t3 b2t4 b2t1 b2t2)
618 Rows(c2 c1 #1)Rows(c2 c1 bmt1 #1)Rows(c2 c1 bmt1 bmt2 #1)Rows(c2 c1 bmt1 bmt2 bmt3 #1)Rows(c2 c1 bmt1 bmt2 bmt3 bmt4 #1)
619 Rows(b1t2 b1t3 #1)Rows(b1t2 b1t3 b1t4 #1)Rows(b1t2 b1t3 b1t4 b1t1 #1)
620 Rows(b2t3 b2t4 #1)Rows(b2t3 b2t4 b2t1 #1)Rows(b2t3 b2t4 b2t1 b2t2 #1)
621 */
622 EXPLAIN
623 WITH c1 (c1) AS (
624 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
625 )
626 , c2 (c1) AS (
627 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
628 )
629 SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4
630 , c1, c2
631                                                                         WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
632 AND bmt1.c1 = c1.c1
633 AND bmt1.c1 = c2.c1;
634 \o
635 \! sql/maskout.sh results/ut-R.tmpout
636
637 -- No. R-2-1-8
638 \o results/ut-R.tmpout
639 /*+
640 Leading(c3 c2 c1 bmt1 bmt2 bmt3 bmt4)
641 Leading(b1t2 b1t3 b1t4 b1t1)
642 Leading(b2t3 b2t4 b2t1 b2t2)
643 Leading(b3t4 b3t1 b3t2 b3t3)
644 MergeJoin(c3 c2)HashJoin(c3 c2 c1)NestLoop(c3 c2 c1 bmt1)MergeJoin(c3 c2 c1 bmt1 bmt2)HashJoin(c3 c2 c1 bmt1 bmt2 bmt3)NestLoop(c3 c2 c1 bmt1 bmt2 bmt3 bmt4)
645 MergeJoin(b1t2 b1t3)HashJoin(b1t2 b1t3 b1t4)NestLoop(b1t2 b1t3 b1t4 b1t1)
646 MergeJoin(b2t3 b2t4)HashJoin(b2t3 b2t4 b2t1)NestLoop(b2t3 b2t4 b2t1 b2t2)
647 MergeJoin(b3t4 b3t1)HashJoin(b3t4 b3t1 b3t2)NestLoop(b3t1 b3t2 b3t3 b3t4)
648 */
649 EXPLAIN
650 WITH c1 (c1) AS (
651 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
652 )
653 , c2 (c1) AS (
654 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
655 )
656 , c3 (c1) AS (
657 SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2, s1.t3 b3t3, s1.t4 b3t4 WHERE b3t1.c1 = b3t2.c1 AND b3t1.c1 = b3t3.c1 AND b3t1.c1 = b3t4.c1
658 )
659 SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4
660 , c1, c2, c3
661                                                                         WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
662 AND bmt1.c1 = c1.c1
663 AND bmt1.c1 = c2.c1
664 AND bmt1.c1 = c3.c1;
665 \o
666 \! sql/maskout.sh results/ut-R.tmpout
667
668 \o results/ut-R.tmpout
669 /*+
670 Leading(c3 c2 c1 bmt1 bmt2 bmt3 bmt4)
671 Leading(b1t2 b1t3 b1t4 b1t1)
672 Leading(b2t3 b2t4 b2t1 b2t2)
673 Leading(b3t4 b3t1 b3t2 b3t3)
674 MergeJoin(c3 c2)HashJoin(c3 c2 c1)NestLoop(c3 c2 c1 bmt1)MergeJoin(c3 c2 c1 bmt1 bmt2)HashJoin(c3 c2 c1 bmt1 bmt2 bmt3)NestLoop(c3 c2 c1 bmt1 bmt2 bmt3 bmt4)
675 MergeJoin(b1t2 b1t3)HashJoin(b1t2 b1t3 b1t4)NestLoop(b1t2 b1t3 b1t4 b1t1)
676 MergeJoin(b2t3 b2t4)HashJoin(b2t3 b2t4 b2t1)NestLoop(b2t3 b2t4 b2t1 b2t2)
677 MergeJoin(b3t4 b3t1)HashJoin(b3t4 b3t1 b3t2)NestLoop(b3t1 b3t2 b3t3 b3t4)
678 Rows(c3 c2 #1)Rows(c3 c2 c1 #1)Rows(c3 c2 c1 bmt1 #1)Rows(c3 c2 c1 bmt1 bmt2 #1)Rows(c3 c2 c1 bmt1 bmt2 bmt3 #1)Rows(c3 c2 c1 bmt1 bmt2 bmt3 bmt4 #1)
679 Rows(b1t2 b1t3 #1)Rows(b1t2 b1t3 b1t4 #1)Rows(b1t2 b1t3 b1t4 b1t1 #1)
680 Rows(b2t3 b2t4 #1)Rows(b2t3 b2t4 b2t1 #1)Rows(b2t3 b2t4 b2t1 b2t2 #1)
681 Rows(b3t4 b3t1 #1)Rows(b3t4 b3t1 b3t2 #1)Rows(b3t1 b3t2 b3t3 b3t4 #1)
682 */
683 EXPLAIN
684 WITH c1 (c1) AS (
685 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
686 )
687 , c2 (c1) AS (
688 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
689 )
690 , c3 (c1) AS (
691 SELECT max(b3t1.c1) FROM s1.t1 b3t1, s1.t2 b3t2, s1.t3 b3t3, s1.t4 b3t4 WHERE b3t1.c1 = b3t2.c1 AND b3t1.c1 = b3t3.c1 AND b3t1.c1 = b3t4.c1
692 )
693 SELECT max(bmt1.c1) FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4
694 , c1, c2, c3
695                                                                         WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1
696 AND bmt1.c1 = c1.c1
697 AND bmt1.c1 = c2.c1
698 AND bmt1.c1 = c3.c1;
699 \o
700 \! sql/maskout.sh results/ut-R.tmpout
701
702 ----
703 ---- No. R-2-2 the number of the tables per quiry block
704 ----
705
706 -- No. R-2-2-1
707 \o results/ut-R.tmpout
708 /*+
709 Leading(c1 bmt1)
710 */
711 EXPLAIN
712 WITH c1 (c1) AS (
713 SELECT b1t1.c1 FROM s1.t1 b1t1 WHERE b1t1.c1 = 1
714 )
715 SELECT bmt1.c1, (
716 SELECT b2t1.c1 FROM s1.t1 b2t1 WHERE b2t1.c1 = 1
717 )
718                     FROM s1.t1 bmt1, c1 WHERE bmt1.c1 = 1
719 AND bmt1.c1 = c1.c1
720 AND bmt1.c1 <> (
721 SELECT b3t1.c1 FROM s1.t1 b3t1 WHERE b3t1.c1 = 1
722 );
723 \o
724 \! sql/maskout.sh results/ut-R.tmpout
725
726 \o results/ut-R.tmpout
727 /*+
728 Leading(c1 bmt1)
729 Rows(bmt1 c1 #1)
730 Rows(b1t1 c1 #1)
731 Rows(b2t1 c1 #1)
732 Rows(b3t1 c1 #1)
733 */
734 EXPLAIN
735 WITH c1 (c1) AS (
736 SELECT b1t1.c1 FROM s1.t1 b1t1 WHERE b1t1.c1 = 1
737 )
738 SELECT bmt1.c1, (
739 SELECT b2t1.c1 FROM s1.t1 b2t1 WHERE b2t1.c1 = 1
740 )
741                     FROM s1.t1 bmt1, c1 WHERE bmt1.c1 = 1
742 AND bmt1.c1 = c1.c1
743 AND bmt1.c1 <> (
744 SELECT b3t1.c1 FROM s1.t1 b3t1 WHERE b3t1.c1 = 1
745 );
746 \o
747 \! sql/maskout.sh results/ut-R.tmpout
748
749 -- No. R-2-2-2
750 \o results/ut-R.tmpout
751 /*+
752 Leading(c1 bmt2 bmt1)
753 Leading(b1t2 b1t1)
754 Leading(b2t2 b2t1)
755 Leading(b3t2 b3t1)
756 MergeJoin(c1 bmt2)
757 HashJoin(c1 bmt1 bmt2)
758 MergeJoin(b1t1 b1t2)
759 MergeJoin(b2t1 b2t2)
760 MergeJoin(b3t1 b3t2)
761 */
762 EXPLAIN
763 WITH c1 (c1) AS (
764 SELECT b1t1.c1 FROM s1.t1 b1t1, s1.t2 b1t2 WHERE b1t1.c1 = b1t2.c1
765 )
766 SELECT bmt1.c1, (
767 SELECT b2t1.c1 FROM s1.t1 b2t1, s1.t2 b2t2 WHERE b2t1.c1 = b2t2.c1
768 )
769                     FROM s1.t1 bmt1, s1.t2 bmt2, c1 WHERE bmt1.c1 = bmt2.c1
770 AND bmt1.c1 = c1.c1
771 AND bmt1.c1 <> (
772 SELECT b3t1.c1 FROM s1.t1 b3t1, s1.t2 b3t2 WHERE b3t1.c1 = b3t2.c1
773 );
774 \o
775 \! sql/maskout.sh results/ut-R.tmpout
776
777 \o results/ut-R.tmpout
778 /*+
779 Leading(c1 bmt2 bmt1)
780 Leading(b1t2 b1t1)
781 Leading(b2t2 b2t1)
782 Leading(b3t2 b3t1)
783 MergeJoin(c1 bmt2)
784 HashJoin(c1 bmt1 bmt2)
785 MergeJoin(b1t1 b1t2)
786 MergeJoin(b2t1 b2t2)
787 MergeJoin(b3t1 b3t2)
788 Rows(c1 bmt2 #1)
789 Rows(c1 bmt1 bmt2 #1)
790 Rows(b1t1 b1t2 #1)
791 Rows(b2t1 b2t2 #1)
792 Rows(b3t1 b3t2 #1)
793 */
794 EXPLAIN
795 WITH c1 (c1) AS (
796 SELECT b1t1.c1 FROM s1.t1 b1t1, s1.t2 b1t2 WHERE b1t1.c1 = b1t2.c1
797 )
798 SELECT bmt1.c1, (
799 SELECT b2t1.c1 FROM s1.t1 b2t1, s1.t2 b2t2 WHERE b2t1.c1 = b2t2.c1
800 )
801                     FROM s1.t1 bmt1, s1.t2 bmt2, c1 WHERE bmt1.c1 = bmt2.c1
802 AND bmt1.c1 = c1.c1
803 AND bmt1.c1 <> (
804 SELECT b3t1.c1 FROM s1.t1 b3t1, s1.t2 b3t2 WHERE b3t1.c1 = b3t2.c1
805 )
806 ;
807 \o
808 \! sql/maskout.sh results/ut-R.tmpout
809
810 -- No. R-2-2-3
811 \o results/ut-R.tmpout
812 /*+
813 Leading(c1 bmt4 bmt3 bmt2 bmt1)
814 Leading(b1t4 b1t3 b1t2 b1t1) 
815 Leading(b2t4 b2t3 b2t2 b2t1)
816 Leading(b3t4 b3t3 b3t2 b3t1)
817 MergeJoin(c1 bmt4)
818 HashJoin(c1 bmt4 bmt3)
819 NestLoop(c1 bmt4 bmt3 bmt2)
820 MergeJoin(c1 bmt4 bmt3 bmt2 bmt1)
821 HashJoin(b1t4 b1t3)
822 NestLoop(b1t4 b1t3 b1t2)
823 MergeJoin(b1t4 b1t3 b1t2 b1t1)
824 HashJoin(b2t4 b2t3)
825 NestLoop(b2t4 b2t3 b2t2)
826 MergeJoin(b2t4 b2t3 b2t2 b2t1)
827 HashJoin(b3t4 b3t3)
828 NestLoop(b3t4 b3t3 b3t2)
829 MergeJoin(b3t4 b3t3 b3t2 b3t1)
830 */
831 EXPLAIN
832 WITH c1 (c1) AS (
833 SELECT 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
834 )
835 SELECT bmt1.c1, (
836 SELECT 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
837 )
838                     FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4, c1 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1 AND bmt1.c1 = c1.c1
839 AND bmt1.c1 <> (
840 SELECT b3t1.c1 FROM s1.t1 b3t1, s1.t2 b3t2, s1.t3 b3t3, s1.t4 b3t4 WHERE b3t1.c1 = b3t2.c1 AND b3t1.c1 = b3t3.c1 AND b3t1.c1 = b3t4.c1
841 );
842 \o
843 \! sql/maskout.sh results/ut-R.tmpout
844
845 \o results/ut-R.tmpout
846 /*+
847 Leading(c1 bmt4 bmt3 bmt2 bmt1)
848 Leading(b1t4 b1t3 b1t2 b1t1) 
849 Leading(b2t4 b2t3 b2t2 b2t1)
850 Leading(b3t4 b3t3 b3t2 b3t1)
851 MergeJoin(c1 bmt4)
852 HashJoin(c1 bmt4 bmt3)
853 NestLoop(c1 bmt4 bmt3 bmt2)
854 MergeJoin(c1 bmt4 bmt3 bmt2 bmt1)
855 HashJoin(b1t4 b1t3)
856 NestLoop(b1t4 b1t3 b1t2)
857 MergeJoin(b1t4 b1t3 b1t2 b1t1)
858 HashJoin(b2t4 b2t3)
859 NestLoop(b2t4 b2t3 b2t2)
860 MergeJoin(b2t4 b2t3 b2t2 b2t1)
861 HashJoin(b3t4 b3t3)
862 NestLoop(b3t4 b3t3 b3t2)
863 MergeJoin(b3t4 b3t3 b3t2 b3t1)
864 Rows(c1 bmt4 #1)
865 Rows(c1 bmt4 bmt3 #1)
866 Rows(c1 bmt4 bmt3 bmt2 #1)
867 Rows(c1 bmt4 bmt3 bmt2 bmt1 #1)
868 Rows(b1t4 b1t3 #1)
869 Rows(b1t4 b1t3 b1t2 #1)
870 Rows(b1t4 b1t3 b1t2 b1t1 #1)
871 Rows(b2t4 b2t3 #1)
872 Rows(b2t4 b2t3 b2t2 #1)
873 Rows(b2t4 b2t3 b2t2 b2t1 #1)
874 Rows(b3t4 b3t3 #1)
875 Rows(b3t4 b3t3 b3t2 #1)
876 Rows(b3t4 b3t3 b3t2 b3t1 #1)
877 */
878 EXPLAIN
879 WITH c1 (c1) AS (
880 SELECT 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
881 )
882 SELECT bmt1.c1, (
883 SELECT 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
884 )
885                     FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4, c1 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1 AND bmt1.c1 = c1.c1
886 AND bmt1.c1 <> (
887 SELECT b3t1.c1 FROM s1.t1 b3t1, s1.t2 b3t2, s1.t3 b3t3, s1.t4 b3t4 WHERE b3t1.c1 = b3t2.c1 AND b3t1.c1 = b3t3.c1 AND b3t1.c1 = b3t4.c1
888 );
889 \o
890 \! sql/maskout.sh results/ut-R.tmpout
891
892 -- No. R-2-2-4
893 \o results/ut-R.tmpout
894 /*+
895 Leading(c1 bmt4 bmt3 bmt2 bmt1)
896 Leading(b1t4 b1t3 b1t2 b1t1)
897 MergeJoin(c1 bmt4)
898 HashJoin(c1 bmt4 bmt3)
899 NestLoop(c1 bmt4 bmt3 bmt2)
900 MergeJoin(c1 bmt4 bmt3 bmt2 bmt1)
901 MergeJoin(b1t4 b1t3)
902 HashJoin(b1t4 b1t3 b1t2)
903 NestLoop(b1t4 b1t3 b1t2 b1t1)
904 */
905 EXPLAIN
906 WITH c1 (c1) AS (
907 SELECT 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
908 )
909 SELECT bmt1.c1, (
910 SELECT b2t1.c1 FROM s1.t1 b2t1 WHERE b2t1.c1 = 1
911 )
912                     FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4, c1 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1 AND bmt1.c1 = c1.c1
913 AND bmt1.c1 <> (
914 SELECT b3t1.c1 FROM s1.t1 b3t1
915 );
916 \o
917 \! sql/maskout.sh results/ut-R.tmpout
918
919 \o results/ut-R.tmpout
920 /*+
921 Leading(c1 bmt4 bmt3 bmt2 bmt1)
922 Leading(b1t4 b1t3 b1t2 b1t1)
923 MergeJoin(c1 bmt4)
924 HashJoin(c1 bmt4 bmt3)
925 NestLoop(c1 bmt4 bmt3 bmt2)
926 MergeJoin(c1 bmt4 bmt3 bmt2 bmt1)
927 MergeJoin(b1t4 b1t3)
928 HashJoin(b1t4 b1t3 b1t2)
929 NestLoop(b1t4 b1t3 b1t2 b1t1)
930 Rows(c1 bmt4 #1)
931 Rows(c1 bmt4 bmt3 #1)
932 Rows(c1 bmt4 bmt3 bmt2 #1)
933 Rows(c1 bmt4 bmt3 bmt2 bmt1 #1)
934 Rows(b1t4 b1t3 #1)
935 Rows(b1t4 b1t3 b1t2 #1)
936 Rows(b1t4 b1t3 b1t2 b1t1 #1)
937 */
938 EXPLAIN
939 WITH c1 (c1) AS (
940 SELECT 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
941 )
942 SELECT bmt1.c1, (
943 SELECT b2t1.c1 FROM s1.t1 b2t1 WHERE b2t1.c1 = 1
944 )
945                     FROM s1.t1 bmt1, s1.t2 bmt2, s1.t3 bmt3, s1.t4 bmt4, c1 WHERE bmt1.c1 = bmt2.c1 AND bmt1.c1 = bmt3.c1 AND bmt1.c1 = bmt4.c1 AND bmt1.c1 = c1.c1
946 AND bmt1.c1 <> (
947 SELECT b3t1.c1 FROM s1.t1 b3t1
948 );
949 \o
950 \! sql/maskout.sh results/ut-R.tmpout
951
952 ----
953 ---- No. R-2-3 RULE or VIEW
954 ----
955
956 -- No. R-2-3-1
957 \o results/ut-R.tmpout
958 /*+
959 Leading(r1 t1 t2 t3 t4)
960 */
961 EXPLAIN UPDATE s1.r1 SET c1 = c1 WHERE c1 = 1;
962 \o
963 \! sql/maskout.sh results/ut-R.tmpout
964
965 \o results/ut-R.tmpout
966 /*+
967 Leading(r1 t1 t2 t3 t4)
968 Rows(r1 t1 t2 t3 t4 #2)
969 Rows(r1 t1 t2 t3 #2)
970 Rows(r1 t1 t2 #2)
971 Rows(r1 t1 #2)
972 */
973 EXPLAIN UPDATE s1.r1 SET c1 = c1 WHERE c1 = 1;
974 \o
975 \! sql/maskout.sh results/ut-R.tmpout
976
977 \o results/ut-R.tmpout
978 /*+
979 Leading(r1_ b1t1 b1t2 b1t3 b1t4)
980 */
981 EXPLAIN UPDATE s1.r1_ SET c1 = c1 WHERE c1 = 1;
982 \o
983 \! sql/maskout.sh results/ut-R.tmpout
984
985 \o results/ut-R.tmpout
986 /*+
987 Leading(r1_ b1t1 b1t2 b1t3 b1t4)
988 Rows(r1_ b1t1 b1t2 b1t3 b1t4 #2)
989 Rows(r1_ b1t1 b1t2 b1t3 #2)
990 Rows(r1_ b1t1 b1t2 #2)
991 Rows(r1_ b1t1 #2)
992 */
993 EXPLAIN UPDATE s1.r1_ SET c1 = c1 WHERE c1 = 1;
994 \o
995 \! sql/maskout.sh results/ut-R.tmpout
996
997 -- No. R-2-3-2
998 \o results/ut-R.tmpout
999 /*+
1000 Leading(r2 t1 t2 t3 t4)
1001 */
1002 EXPLAIN UPDATE s1.r2 SET c1 = c1 WHERE c1 = 1;
1003 \o
1004 \! sql/maskout.sh results/ut-R.tmpout
1005
1006 \o results/ut-R.tmpout
1007 /*+
1008 Leading(r2 t1 t2 t3 t4)
1009 Rows(r2 t1 t2 t3 t4 #2)
1010 Rows(r2 t1 t2 t3 #2)
1011 Rows(r2 t1 t2 #2)
1012 Rows(r2 t1 #2)
1013 */
1014 EXPLAIN UPDATE s1.r2 SET c1 = c1 WHERE c1 = 1;
1015 \o
1016 \! sql/maskout.sh results/ut-R.tmpout
1017
1018 \o results/ut-R.tmpout
1019 /*+
1020 Leading(r2_ b1t1 b1t2 b1t3 b1t4)
1021 Leading(r2_ b2t1 b2t2 b2t3 b2t4)
1022 */
1023 EXPLAIN UPDATE s1.r2_ SET c1 = c1 WHERE c1 = 1;
1024 \o
1025 \! sql/maskout.sh results/ut-R.tmpout
1026
1027 \o results/ut-R.tmpout
1028 /*+
1029 Leading(r2_ b1t1 b1t2 b1t3 b1t4)
1030 Leading(r2_ b2t1 b2t2 b2t3 b2t4)
1031 Rows(r2_ b1t1 #2)
1032 Rows(r2_ b1t1 b1t2 #2)
1033 Rows(r2_ b1t1 b1t2 b1t3 #2)
1034 Rows(r2_ b1t1 b1t2 b1t3 b1t4 #2)
1035 Rows(r2_ b2t1 #2)
1036 Rows(r2_ b2t1 b2t2 #2)
1037 Rows(r2_ b2t1 b2t2 b2t3  #2)
1038 Rows(r2_ b2t1 b2t2 b2t3 b2t4 #2)
1039 */
1040 EXPLAIN UPDATE s1.r2_ SET c1 = c1 WHERE c1 = 1;
1041 \o
1042 \! sql/maskout.sh results/ut-R.tmpout
1043
1044 -- No. R-2-3-3
1045 \o results/ut-R.tmpout
1046 /*+
1047 Leading(r3 t1 t2 t3 t4)
1048 */
1049 EXPLAIN UPDATE s1.r3 SET c1 = c1 WHERE c1 = 1;
1050 \o
1051 \! sql/maskout.sh results/ut-R.tmpout
1052
1053 \o results/ut-R.tmpout
1054 /*+
1055 Leading(r3 t1 t2 t3 t4)
1056 Rows(r3 t1 t2 t3 t4 #2)
1057 Rows(r3 t1 t2 t3 #2)
1058 Rows(r3 t1 t2 #2)
1059 Rows(r3 t1 #2)
1060 */
1061 EXPLAIN UPDATE s1.r3 SET c1 = c1 WHERE c1 = 1;
1062 \o
1063 \! sql/maskout.sh results/ut-R.tmpout
1064
1065 \o results/ut-R.tmpout
1066 /*+
1067 Leading(r3_ b1t1 b1t2 b1t3 b1t4)
1068 Leading(r3_ b2t1 b2t2 b2t3 b2t4)
1069 Leading(r3_ b3t1 b3t2 b3t3 b3t4)
1070 */
1071 EXPLAIN UPDATE s1.r3_ SET c1 = c1 WHERE c1 = 1;
1072 \o
1073 \! sql/maskout.sh results/ut-R.tmpout
1074
1075 \o results/ut-R.tmpout
1076 /*+
1077 Leading(r3_ b1t1 b1t2 b1t3 b1t4)
1078 Leading(r3_ b2t1 b2t2 b2t3 b2t4)
1079 Leading(r3_ b3t1 b3t2 b3t3 b3t4)
1080 Rows(r3_ b1t1 #2)
1081 Rows(r3_ b1t1 b1t2 #2)
1082 Rows(r3_ b1t1 b1t2 b1t3 #2)
1083 Rows(r3_ b1t1 b1t2 b1t3 b1t4 #2)
1084 Rows(r3_ b2t1 #2)
1085 Rows(r3_ b2t1 b2t2 #2)
1086 Rows(r3_ b2t1 b2t2 b2t3 #2)
1087 Rows(r3_ b2t1 b2t2 b2t3 b2t4 #2)
1088 Rows(r3_ b3t1 #2)
1089 Rows(r3_ b3t1 b3t2 #2)
1090 Rows(r3_ b3t1 b3t2 b3t3 #2)
1091 Rows(r3_ b3t1 b3t2 b3t3 b3t4 #2)
1092 */
1093 EXPLAIN UPDATE s1.r3_ SET c1 = c1 WHERE c1 = 1;
1094 \o
1095 \! sql/maskout.sh results/ut-R.tmpout
1096
1097 -- No. R-2-3-4
1098 \o results/ut-R.tmpout
1099 /*+HashJoin(v1t1 v1t1)*/
1100 EXPLAIN SELECT * FROM s1.v1 v1, s1.v1 v2 WHERE v1.c1 = v2.c1;
1101 \o
1102 \! sql/maskout.sh results/ut-R.tmpout
1103
1104 \o results/ut-R.tmpout
1105 /*+HashJoin(v1t1 v1t1)Rows(v1t1 v1t1 #1)*/
1106 EXPLAIN SELECT * FROM s1.v1 v1, s1.v1 v2 WHERE v1.c1 = v2.c1;
1107 \o
1108 \! sql/maskout.sh results/ut-R.tmpout
1109
1110 -- No. R-2-3-5
1111 \o results/ut-R.tmpout
1112 /*+NestLoop(v1t1 v1t1_)*/
1113 EXPLAIN SELECT * FROM s1.v1 v1, s1.v1_ v2 WHERE v1.c1 = v2.c1;
1114 \o
1115 \! sql/maskout.sh results/ut-R.tmpout
1116
1117 \o results/ut-R.tmpout
1118 /*+NestLoop(v1t1 v1t1_)Rows(v1t1 v1t1_ #1)*/
1119 EXPLAIN SELECT * FROM s1.v1 v1, s1.v1_ v2 WHERE v1.c1 = v2.c1;
1120 \o
1121 \! sql/maskout.sh results/ut-R.tmpout
1122
1123 -- No. R-2-3-6
1124 \o results/ut-R.tmpout
1125 /*+RowsHashJoin(r4t1 r4t1)*/
1126 EXPLAIN SELECT * FROM s1.r4 t1, s1.r4 t2 WHERE t1.c1 = t2.c1;
1127 \o
1128 \! sql/maskout.sh results/ut-R.tmpout
1129
1130 \o results/ut-R.tmpout
1131 /*+RowsHashJoin(r4t1 r4t1)Rows(r4t1 r4t1 #1)*/
1132 EXPLAIN SELECT * FROM s1.r4 t1, s1.r4 t2 WHERE t1.c1 = t2.c1;
1133 \o
1134 \! sql/maskout.sh results/ut-R.tmpout
1135
1136 -- No. R-2-3-7
1137 \o results/ut-R.tmpout
1138 /*+NestLoop(r4t1 r5t1)*/
1139 EXPLAIN SELECT * FROM s1.r4 t1, s1.r5 t2 WHERE t1.c1 = t2.c1;
1140 \o
1141 \! sql/maskout.sh results/ut-R.tmpout
1142
1143 \o results/ut-R.tmpout
1144 /*+NestLoop(r4t1 r5t1)Rows(r4t1 r5t1 #1)*/
1145 EXPLAIN SELECT * FROM s1.r4 t1, s1.r5 t2 WHERE t1.c1 = t2.c1;
1146 \o
1147 \! sql/maskout.sh results/ut-R.tmpout
1148
1149 ----
1150 ---- No. R-2-4 VALUES clause
1151 ----
1152
1153 -- No. R-2-4-1
1154 \o results/ut-R.tmpout
1155 EXPLAIN SELECT * FROM s1.t1, s1.t2, (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t3 (c1, c2, c3, c4) WHERE t1.c1 = t2.c1 AND t1.c1 = t3.c1;
1156 \o
1157 \! sql/maskout.sh results/ut-R.tmpout
1158
1159 \o results/ut-R.tmpout
1160 /*+ Leading(t3 t1 t2) Rows(t3 t1 #2)Rows(t3 t1 t2 #2)*/
1161 EXPLAIN SELECT * FROM s1.t1, s1.t2, (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t3 (c1, c2, c3, c4) WHERE t1.c1 = t2.c1 AND t1.c1 = t3.c1;
1162 \o
1163 \! sql/maskout.sh results/ut-R.tmpout
1164
1165 \o results/ut-R.tmpout
1166 /*+ Leading(*VALUES* t1 t2) Rows(*VALUES* t1 #2)Rows(*VALUES* t1 t2 #20)*/
1167 EXPLAIN SELECT * FROM s1.t1, s1.t2, (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t3 (c1, c2, c3, c4) WHERE t1.c1 = t2.c1 AND t1.c1 = t3.c1;
1168 \o
1169 \! sql/maskout.sh results/ut-R.tmpout
1170
1171 -- No. R-2-4-2
1172 \o results/ut-R.tmpout
1173 EXPLAIN SELECT * FROM s1.t1, s1.t2, (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t3 (c1, c2, c3, c4), (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t4 (c1, c2, c3, c4) WHERE t1.c1 = t2.c1 AND t1.c1 = t3.c1 AND t1.c1 = t4.c1;
1174 \o
1175 \! sql/maskout.sh results/ut-R.tmpout
1176
1177 \o results/ut-R.tmpout
1178 /*+ Leading(t4 t3 t2 t1) Rows(t4 t3 #2) Rows(t4 t3 t2 #2)Rows(t4 t3 t2 t1 #2)*/
1179 EXPLAIN SELECT * FROM s1.t1, s1.t2, (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t3 (c1, c2, c3, c4), (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t4 (c1, c2, c3, c4) WHERE t1.c1 = t2.c1 AND t1.c1 = t3.c1 AND t1.c1 = t4.c1;
1180 \o
1181 \! sql/maskout.sh results/ut-R.tmpout
1182
1183 \o results/ut-R.tmpout
1184 /*+ Leading(*VALUES* t3 t2 t1) Rows(t4 t3 #2)Rows(*VALUES* t3 t2 #2)Rows(*VALUES* t3 t2 t1 #2)*/
1185 EXPLAIN SELECT * FROM s1.t1, s1.t2, (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t3 (c1, c2, c3, c4), (VALUES(1,1,1,'1'), (2,2,2,'2')) AS t4 (c1, c2, c3, c4) WHERE t1.c1 = t2.c1 AND t1.c1 = t3.c1 AND t1.c1 = t4.c1;
1186 \o
1187 \! sql/maskout.sh results/ut-R.tmpout
1188
1189 ----
1190 ---- No. R-2-5
1191 ----
1192
1193 -- No. R-2-5-1
1194 \o results/ut-R.tmpout
1195 EXPLAIN SELECT max(bmt1.c1) FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = sbmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
1196 \o
1197 \! sql/maskout.sh results/ut-R.tmpout
1198
1199 \o results/ut-R.tmpout
1200 /*+
1201 Leading(bmt4 bmt3 bmt2 bmt1)
1202 Rows(bmt1 bmt2 bmt3 bmt4 *0.7)
1203 */
1204 EXPLAIN SELECT bmt1.c1 FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = sbmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
1205 \o
1206 \! sql/maskout.sh results/ut-R.tmpout
1207
1208 -- No. R-2-5-2
1209 \o results/ut-R.tmpout
1210 EXPLAIN SELECT bmt1.c1 FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = sbmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
1211 \o
1212 \! sql/maskout.sh results/ut-R.tmpout
1213
1214 \o results/ut-R.tmpout
1215 /*+
1216 Leading(bmt4 bmt3 bmt2 bmt1)
1217 Rows(bmt4 bmt3 *0.6)
1218 */
1219 EXPLAIN SELECT bmt1.c1 FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = sbmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
1220 \o
1221 \! sql/maskout.sh results/ut-R.tmpout
1222
1223 -- No. R-2-5-3
1224 \o results/ut-R.tmpout
1225 EXPLAIN SELECT bmt1.c1 FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = sbmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
1226 \o
1227 \! sql/maskout.sh results/ut-R.tmpout
1228
1229 \o results/ut-R.tmpout
1230 /*+
1231 Leading(bmt4 bmt3 bmt2 bmt1)
1232 Rows(bmt4 bmt1 *0.5)
1233 */
1234 EXPLAIN SELECT bmt1.c1 FROM s1.t1 bmt1, (SELECT ctid, * FROM s1.t2 bmt2) sbmt2, (SELECT ctid, * FROM s1.t3 bmt3) sbmt3, (SELECT ctid, * FROM s1.t4 bmt4) sbmt4 WHERE bmt1.c1 = sbmt2.c1 AND bmt1.c1 = sbmt3.c1 AND bmt1.c1 = sbmt4.c1;
1235 \o
1236 \! sql/maskout.sh results/ut-R.tmpout
1237
1238 ----
1239 ---- No. R-3-1 abusolute value
1240 ----
1241
1242 -- No. R-3-1-1
1243 \o results/ut-R.tmpout
1244 /*+Rows(t1 t2 #0)*/
1245 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1246 \o
1247 \! sql/maskout.sh results/ut-R.tmpout
1248
1249 -- No. R-3-1-2
1250 \o results/ut-R.tmpout
1251 /*+Rows(t1 t2 #5)*/
1252 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1253 \o
1254 \! sql/maskout.sh results/ut-R.tmpout
1255
1256 ----
1257 ---- No. R-3-2 increase or decrease value
1258 ----
1259
1260 -- No. R-3-2-1
1261 \o results/ut-R.tmpout
1262 /*+Rows(t1 t2 +1)*/
1263 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1264 \o
1265 \! sql/maskout.sh results/ut-R.tmpout
1266
1267 -- No. R-3-2-2
1268 \o results/ut-R.tmpout
1269 /*+Rows(t1 t2 -1)*/
1270 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1271 \o
1272 \! sql/maskout.sh results/ut-R.tmpout
1273
1274 -- No. R-3-2-3
1275 \o results/ut-R.tmpout
1276 /*+Rows(t1 t2 -1000)*/
1277 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1278 \o
1279 \! sql/maskout.sh results/ut-R.tmpout
1280
1281 ----
1282 ---- No. R-3-3 multiple 
1283 ----
1284
1285 -- No. R-3-3-1
1286 \o results/ut-R.tmpout
1287 /*+Rows(t1 t2 *0)*/
1288 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1289 \o
1290 \! sql/maskout.sh results/ut-R.tmpout
1291
1292 -- No. R-3-3-2
1293 \o results/ut-R.tmpout
1294 /*+Rows(t1 t2 *2)*/
1295 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1296 \o
1297 \! sql/maskout.sh results/ut-R.tmpout
1298
1299 -- No. R-3-3-3
1300 \o results/ut-R.tmpout
1301 /*+Rows(t1 t2 *0.1)*/
1302 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1303 \o
1304 \! sql/maskout.sh results/ut-R.tmpout
1305
1306 ----
1307 ---- No. R-3-4 join inherit tables
1308 ----
1309
1310 -- No. R-3-4-1
1311 \o results/ut-R.tmpout
1312 EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
1313 \o
1314 \! sql/maskout.sh results/ut-R.tmpout
1315
1316 \o results/ut-R.tmpout
1317 /*+Rows(p1 p2 #1)*/
1318 EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
1319 \o
1320 \! sql/maskout.sh results/ut-R.tmpout
1321
1322 -- No. R-3-4-2
1323 \o results/ut-R.tmpout
1324 EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
1325 \o
1326 \! sql/maskout.sh results/ut-R.tmpout
1327
1328 \o results/ut-R.tmpout
1329 /*+Rows(p1c1 p2c1 #1)*/
1330 EXPLAIN SELECT * FROM s1.p1, s1.p2 WHERE p1.c1 = p2.c1;
1331 \o
1332 \! sql/maskout.sh results/ut-R.tmpout
1333
1334 ----
1335 ---- No. R-3-5 conflict join method hint
1336 ----
1337
1338 -- No. R-3-5-1
1339 \o results/ut-R.tmpout
1340 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1341 \o
1342 \! sql/maskout.sh results/ut-R.tmpout
1343
1344 \o results/ut-R.tmpout
1345 /*+Rows(t1 t2 #1)Rows(t1 t2 #1)*/
1346 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1347 \o
1348 \! sql/maskout.sh results/ut-R.tmpout
1349
1350 -- No. R-3-5-2
1351 \o results/ut-R.tmpout
1352 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1353 \o
1354 \! sql/maskout.sh results/ut-R.tmpout
1355
1356 \o results/ut-R.tmpout
1357 /*+Rows(t1 t2 #1)Rows(t1 t2 #1)Rows(t1 t2 #1)*/
1358 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1359 \o
1360 \! sql/maskout.sh results/ut-R.tmpout
1361
1362 -- No. R-3-5-3
1363 \o results/ut-R.tmpout
1364 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1365 \o
1366 \! sql/maskout.sh results/ut-R.tmpout
1367
1368 \o results/ut-R.tmpout
1369 /*+Rows(t1 t2 #1)Rows(t2 t1 #1)*/
1370 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1371 \o
1372 \! sql/maskout.sh results/ut-R.tmpout
1373
1374 -- No. R-3-5-4
1375 \o results/ut-R.tmpout
1376 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1377 \o
1378 \! sql/maskout.sh results/ut-R.tmpout
1379
1380 \o results/ut-R.tmpout
1381 /*+Rows(t2 t1 #1)Rows(t1 t2 #1)Rows(t2 t1 #1)*/
1382 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1383 \o
1384 \! sql/maskout.sh results/ut-R.tmpout
1385
1386 ----
1387 ---- No. R-3-6 hint state output
1388 ----
1389
1390 -- No. R-3-6-1
1391 SET client_min_messages TO DEBUG1;
1392 \o results/ut-R.tmpout
1393 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1394 \o
1395 \! sql/maskout.sh results/ut-R.tmpout
1396
1397 \o results/ut-R.tmpout
1398 /*+Rows(t1 t2 +1)*/
1399 EXPLAIN SELECT * FROM s1.t1, s1.t2 WHERE t1.c1 = t2.c1;
1400 \o
1401 \! sql/maskout.sh results/ut-R.tmpout
1402 \! rm results/ut-R.tmpout