1: # 2008 June 24
2: #
3: # The author disclaims copyright to this source code. In place of
4: # a legal notice, here is a blessing:
5: #
6: # May you do good and not evil.
7: # May you find forgiveness for yourself and forgive others.
8: # May you share freely, never taking more than you give.
9: #
10: #***********************************************************************
11: # This file implements regression tests for SQLite library.
12: #
13: # The focus of this file is testing the compound-SELECT merge
14: # optimization. Or, in other words, making sure that all
15: # possible combinations of UNION, UNION ALL, EXCEPT, and
16: # INTERSECT work together with an ORDER BY clause (with or w/o
17: # explicit sort order and explicit collating secquites) and
18: # with and without optional LIMIT and OFFSET clauses.
19: #
20: # $Id: selectA.test,v 1.1.1.1 2012/02/21 17:04:16 misho Exp $
21:
22: set testdir [file dirname $argv0]
23: source $testdir/tester.tcl
24:
25: ifcapable !compound {
26: finish_test
27: return
28: }
29:
30: do_test selectA-1.0 {
31: execsql {
32: CREATE TABLE t1(a,b,c COLLATE NOCASE);
33: INSERT INTO t1 VALUES(1,'a','a');
34: INSERT INTO t1 VALUES(9.9, 'b', 'B');
35: INSERT INTO t1 VALUES(NULL, 'C', 'c');
36: INSERT INTO t1 VALUES('hello', 'd', 'D');
37: INSERT INTO t1 VALUES(x'616263', 'e', 'e');
38: SELECT * FROM t1;
39: }
40: } {1 a a 9.9 b B {} C c hello d D abc e e}
41: do_test selectA-1.1 {
42: execsql {
43: CREATE TABLE t2(x,y,z COLLATE NOCASE);
44: INSERT INTO t2 VALUES(NULL,'U','u');
45: INSERT INTO t2 VALUES('mad', 'Z', 'z');
46: INSERT INTO t2 VALUES(x'68617265', 'm', 'M');
47: INSERT INTO t2 VALUES(5.2e6, 'X', 'x');
48: INSERT INTO t2 VALUES(-23, 'Y', 'y');
49: SELECT * FROM t2;
50: }
51: } {{} U u mad Z z hare m M 5200000.0 X x -23 Y y}
52: do_test selectA-1.2 {
53: execsql {
54: CREATE TABLE t3(a,b,c COLLATE NOCASE);
55: INSERT INTO t3 SELECT * FROM t1;
56: INSERT INTO t3 SELECT * FROM t2;
57: INSERT INTO t3 SELECT * FROM t1;
58: INSERT INTO t3 SELECT * FROM t2;
59: INSERT INTO t3 SELECT * FROM t1;
60: INSERT INTO t3 SELECT * FROM t2;
61: SELECT count(*) FROM t3;
62: }
63: } {30}
64:
65: do_test selectA-2.1 {
66: execsql {
67: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
68: ORDER BY a,b,c
69: }
70: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
71: do_test selectA-2.1.1 { # Ticket #3314
72: execsql {
73: SELECT t1.a, t1.b, t1.c FROM t1 UNION ALL SELECT x,y,z FROM t2
74: ORDER BY a,b,c
75: }
76: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
77: do_test selectA-2.1.2 { # Ticket #3314
78: execsql {
79: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
80: ORDER BY t1.a, t1.b, t1.c
81: }
82: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
83: do_test selectA-2.2 {
84: execsql {
85: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
86: ORDER BY a DESC,b,c
87: }
88: } {hare m M abc e e mad Z z hello d D 5200000.0 X x 9.9 b B 1 a a -23 Y y {} C c {} U u}
89: do_test selectA-2.3 {
90: execsql {
91: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
92: ORDER BY a,c,b
93: }
94: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
95: do_test selectA-2.4 {
96: execsql {
97: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
98: ORDER BY b,a,c
99: }
100: } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e hare m M}
101: do_test selectA-2.5 {
102: execsql {
103: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
104: ORDER BY b COLLATE NOCASE,a,c
105: }
106: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
107: do_test selectA-2.6 {
108: execsql {
109: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
110: ORDER BY b COLLATE NOCASE DESC,a,c
111: }
112: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
113: do_test selectA-2.7 {
114: execsql {
115: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
116: ORDER BY c,b,a
117: }
118: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
119: do_test selectA-2.8 {
120: execsql {
121: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
122: ORDER BY c,a,b
123: }
124: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
125: do_test selectA-2.9 {
126: execsql {
127: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
128: ORDER BY c DESC,a,b
129: }
130: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
131: do_test selectA-2.10 {
132: execsql {
133: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
134: ORDER BY c COLLATE BINARY DESC,a,b
135: }
136: } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D 9.9 b B}
137: do_test selectA-2.11 {
138: execsql {
139: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
140: ORDER BY a,b,c
141: }
142: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
143: do_test selectA-2.12 {
144: execsql {
145: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
146: ORDER BY a DESC,b,c
147: }
148: } {hare m M abc e e mad Z z hello d D 5200000.0 X x 9.9 b B 1 a a -23 Y y {} C c {} U u}
149: do_test selectA-2.13 {
150: execsql {
151: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
152: ORDER BY a,c,b
153: }
154: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
155: do_test selectA-2.14 {
156: execsql {
157: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
158: ORDER BY b,a,c
159: }
160: } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e hare m M}
161: do_test selectA-2.15 {
162: execsql {
163: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
164: ORDER BY b COLLATE NOCASE,a,c
165: }
166: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
167: do_test selectA-2.16 {
168: execsql {
169: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
170: ORDER BY b COLLATE NOCASE DESC,a,c
171: }
172: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
173: do_test selectA-2.17 {
174: execsql {
175: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
176: ORDER BY c,b,a
177: }
178: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
179: do_test selectA-2.18 {
180: execsql {
181: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
182: ORDER BY c,a,b
183: }
184: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
185: do_test selectA-2.19 {
186: execsql {
187: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
188: ORDER BY c DESC,a,b
189: }
190: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
191: do_test selectA-2.20 {
192: execsql {
193: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
194: ORDER BY c COLLATE BINARY DESC,a,b
195: }
196: } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D 9.9 b B}
197: do_test selectA-2.21 {
198: execsql {
199: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
200: ORDER BY a,b,c
201: }
202: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
203: do_test selectA-2.22 {
204: execsql {
205: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
206: ORDER BY a DESC,b,c
207: }
208: } {hare m M abc e e mad Z z hello d D 5200000.0 X x 9.9 b B 1 a a -23 Y y {} C c {} U u}
209: do_test selectA-2.23 {
210: execsql {
211: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
212: ORDER BY a,c,b
213: }
214: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
215: do_test selectA-2.24 {
216: execsql {
217: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
218: ORDER BY b,a,c
219: }
220: } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e hare m M}
221: do_test selectA-2.25 {
222: execsql {
223: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
224: ORDER BY b COLLATE NOCASE,a,c
225: }
226: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
227: do_test selectA-2.26 {
228: execsql {
229: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
230: ORDER BY b COLLATE NOCASE DESC,a,c
231: }
232: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
233: do_test selectA-2.27 {
234: execsql {
235: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
236: ORDER BY c,b,a
237: }
238: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
239: do_test selectA-2.28 {
240: execsql {
241: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
242: ORDER BY c,a,b
243: }
244: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
245: do_test selectA-2.29 {
246: execsql {
247: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
248: ORDER BY c DESC,a,b
249: }
250: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
251: do_test selectA-2.30 {
252: execsql {
253: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
254: ORDER BY c COLLATE BINARY DESC,a,b
255: }
256: } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D 9.9 b B}
257: do_test selectA-2.31 {
258: execsql {
259: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
260: ORDER BY a,b,c
261: }
262: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
263: do_test selectA-2.32 {
264: execsql {
265: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
266: ORDER BY a DESC,b,c
267: }
268: } {hare m M abc e e mad Z z hello d D 5200000.0 X x 9.9 b B 1 a a -23 Y y {} C c {} U u}
269: do_test selectA-2.33 {
270: execsql {
271: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
272: ORDER BY a,c,b
273: }
274: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
275: do_test selectA-2.34 {
276: execsql {
277: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
278: ORDER BY b,a,c
279: }
280: } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e hare m M}
281: do_test selectA-2.35 {
282: execsql {
283: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
284: ORDER BY b COLLATE NOCASE,a,c
285: }
286: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
287: do_test selectA-2.36 {
288: execsql {
289: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
290: ORDER BY b COLLATE NOCASE DESC,a,c
291: }
292: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
293: do_test selectA-2.37 {
294: execsql {
295: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
296: ORDER BY c,b,a
297: }
298: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
299: do_test selectA-2.38 {
300: execsql {
301: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
302: ORDER BY c,a,b
303: }
304: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
305: do_test selectA-2.39 {
306: execsql {
307: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
308: ORDER BY c DESC,a,b
309: }
310: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
311: do_test selectA-2.40 {
312: execsql {
313: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
314: ORDER BY c COLLATE BINARY DESC,a,b
315: }
316: } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D 9.9 b B}
317: do_test selectA-2.41 {
318: execsql {
319: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
320: ORDER BY a,b,c
321: }
322: } {{} C c 1 a a 9.9 b B}
323: do_test selectA-2.42 {
324: execsql {
325: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
326: ORDER BY a,b,c
327: }
328: } {hello d D abc e e}
329: do_test selectA-2.43 {
330: execsql {
331: SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
332: ORDER BY a,b,c
333: }
334: } {hello d D abc e e}
335: do_test selectA-2.44 {
336: execsql {
337: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
338: ORDER BY a,b,c
339: }
340: } {hello d D abc e e}
341: do_test selectA-2.45 {
342: execsql {
343: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
344: ORDER BY a,b,c
345: }
346: } {{} C c 1 a a 9.9 b B}
347: do_test selectA-2.46 {
348: execsql {
349: SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
350: ORDER BY a,b,c
351: }
352: } {{} C c 1 a a 9.9 b B}
353: do_test selectA-2.47 {
354: execsql {
355: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
356: ORDER BY a DESC
357: }
358: } {9.9 b B 1 a a {} C c}
359: do_test selectA-2.48 {
360: execsql {
361: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
362: ORDER BY a DESC
363: }
364: } {abc e e hello d D}
365: do_test selectA-2.49 {
366: execsql {
367: SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
368: ORDER BY a DESC
369: }
370: } {abc e e hello d D}
371: do_test selectA-2.50 {
372: execsql {
373: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
374: ORDER BY a DESC
375: }
376: } {abc e e hello d D}
377: do_test selectA-2.51 {
378: execsql {
379: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
380: ORDER BY a DESC
381: }
382: } {9.9 b B 1 a a {} C c}
383: do_test selectA-2.52 {
384: execsql {
385: SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
386: ORDER BY a DESC
387: }
388: } {9.9 b B 1 a a {} C c}
389: do_test selectA-2.53 {
390: execsql {
391: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
392: ORDER BY b, a DESC
393: }
394: } {{} C c 1 a a 9.9 b B}
395: do_test selectA-2.54 {
396: execsql {
397: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
398: ORDER BY b
399: }
400: } {hello d D abc e e}
401: do_test selectA-2.55 {
402: execsql {
403: SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
404: ORDER BY b DESC, c
405: }
406: } {abc e e hello d D}
407: do_test selectA-2.56 {
408: execsql {
409: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
410: ORDER BY b, c DESC, a
411: }
412: } {hello d D abc e e}
413: do_test selectA-2.57 {
414: execsql {
415: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
416: ORDER BY b COLLATE NOCASE
417: }
418: } {1 a a 9.9 b B {} C c}
419: do_test selectA-2.58 {
420: execsql {
421: SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
422: ORDER BY b
423: }
424: } {{} C c 1 a a 9.9 b B}
425: do_test selectA-2.59 {
426: execsql {
427: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
428: ORDER BY c, a DESC
429: }
430: } {1 a a 9.9 b B {} C c}
431: do_test selectA-2.60 {
432: execsql {
433: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
434: ORDER BY c
435: }
436: } {hello d D abc e e}
437: do_test selectA-2.61 {
438: execsql {
439: SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
440: ORDER BY c COLLATE BINARY, b DESC, c, a, b, c, a, b, c
441: }
442: } {hello d D abc e e}
443: do_test selectA-2.62 {
444: execsql {
445: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
446: ORDER BY c DESC, a
447: }
448: } {abc e e hello d D}
449: do_test selectA-2.63 {
450: execsql {
451: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
452: ORDER BY c COLLATE NOCASE
453: }
454: } {1 a a 9.9 b B {} C c}
455: do_test selectA-2.64 {
456: execsql {
457: SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
458: ORDER BY c
459: }
460: } {1 a a 9.9 b B {} C c}
461: do_test selectA-2.65 {
462: execsql {
463: SELECT a,b,c FROM t3 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
464: ORDER BY c COLLATE NOCASE
465: }
466: } {1 a a 9.9 b B {} C c}
467: do_test selectA-2.66 {
468: execsql {
469: SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t3
470: ORDER BY c
471: }
472: } {1 a a 9.9 b B {} C c}
473: do_test selectA-2.67 {
474: execsql {
475: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t3 WHERE b<'d'
476: ORDER BY c DESC, a
477: }
478: } {abc e e hello d D}
479: do_test selectA-2.68 {
480: execsql {
481: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
482: INTERSECT SELECT a,b,c FROM t3
483: EXCEPT SELECT b,c,a FROM t3
484: ORDER BY c DESC, a
485: }
486: } {abc e e hello d D}
487: do_test selectA-2.69 {
488: execsql {
489: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
490: INTERSECT SELECT a,b,c FROM t3
491: EXCEPT SELECT b,c,a FROM t3
492: ORDER BY c COLLATE NOCASE
493: }
494: } {1 a a 9.9 b B {} C c}
495: do_test selectA-2.70 {
496: execsql {
497: SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
498: INTERSECT SELECT a,b,c FROM t3
499: EXCEPT SELECT b,c,a FROM t3
500: ORDER BY c
501: }
502: } {1 a a 9.9 b B {} C c}
503: do_test selectA-2.71 {
504: execsql {
505: SELECT a,b,c FROM t1 WHERE b<'d'
506: INTERSECT SELECT a,b,c FROM t1
507: INTERSECT SELECT a,b,c FROM t3
508: EXCEPT SELECT b,c,a FROM t3
509: INTERSECT SELECT a,b,c FROM t1
510: EXCEPT SELECT x,y,z FROM t2
511: INTERSECT SELECT a,b,c FROM t3
512: EXCEPT SELECT y,x,z FROM t2
513: INTERSECT SELECT a,b,c FROM t1
514: EXCEPT SELECT c,b,a FROM t3
515: ORDER BY c
516: }
517: } {1 a a 9.9 b B {} C c}
518: do_test selectA-2.72 {
519: execsql {
520: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
521: ORDER BY a,b,c
522: }
523: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
524: do_test selectA-2.73 {
525: execsql {
526: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
527: ORDER BY a DESC,b,c
528: }
529: } {hare m M abc e e mad Z z hello d D 5200000.0 X x 9.9 b B 1 a a -23 Y y {} C c {} U u}
530: do_test selectA-2.74 {
531: execsql {
532: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
533: ORDER BY a,c,b
534: }
535: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
536: do_test selectA-2.75 {
537: execsql {
538: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
539: ORDER BY b,a,c
540: }
541: } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e hare m M}
542: do_test selectA-2.76 {
543: execsql {
544: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
545: ORDER BY b COLLATE NOCASE,a,c
546: }
547: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
548: do_test selectA-2.77 {
549: execsql {
550: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
551: ORDER BY b COLLATE NOCASE DESC,a,c
552: }
553: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
554: do_test selectA-2.78 {
555: execsql {
556: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
557: ORDER BY c,b,a
558: }
559: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
560: do_test selectA-2.79 {
561: execsql {
562: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
563: ORDER BY c,a,b
564: }
565: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
566: do_test selectA-2.80 {
567: execsql {
568: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
569: ORDER BY c DESC,a,b
570: }
571: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
572: do_test selectA-2.81 {
573: execsql {
574: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
575: ORDER BY c COLLATE BINARY DESC,a,b
576: }
577: } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D 9.9 b B}
578: do_test selectA-2.82 {
579: execsql {
580: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
581: ORDER BY a,b,c
582: }
583: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
584: do_test selectA-2.83 {
585: execsql {
586: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
587: ORDER BY a DESC,b,c
588: }
589: } {hare m M abc e e mad Z z hello d D 5200000.0 X x 9.9 b B 1 a a -23 Y y {} C c {} U u}
590: do_test selectA-2.84 {
591: execsql {
592: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
593: ORDER BY a,c,b
594: }
595: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
596: do_test selectA-2.85 {
597: execsql {
598: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
599: ORDER BY b,a,c
600: }
601: } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e hare m M}
602: do_test selectA-2.86 {
603: execsql {
604: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
605: ORDER BY b COLLATE NOCASE,a,c
606: }
607: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
608: do_test selectA-2.87 {
609: execsql {
610: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
611: ORDER BY y COLLATE NOCASE DESC,x,z
612: }
613: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
614: do_test selectA-2.88 {
615: execsql {
616: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
617: ORDER BY c,b,a
618: }
619: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
620: do_test selectA-2.89 {
621: execsql {
622: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
623: ORDER BY c,a,b
624: }
625: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
626: do_test selectA-2.90 {
627: execsql {
628: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
629: ORDER BY c DESC,a,b
630: }
631: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
632: do_test selectA-2.91 {
633: execsql {
634: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
635: ORDER BY c COLLATE BINARY DESC,a,b
636: }
637: } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D 9.9 b B}
638: do_test selectA-2.92 {
639: execsql {
640: SELECT x,y,z FROM t2
641: INTERSECT SELECT a,b,c FROM t3
642: EXCEPT SELECT c,b,a FROM t1
643: UNION SELECT a,b,c FROM t3
644: INTERSECT SELECT a,b,c FROM t3
645: EXCEPT SELECT c,b,a FROM t1
646: UNION SELECT a,b,c FROM t3
647: ORDER BY y COLLATE NOCASE DESC,x,z
648: }
649: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
650: do_test selectA-2.93 {
651: execsql {
652: SELECT upper((SELECT c FROM t1 UNION SELECT z FROM t2 ORDER BY 1));
653: }
654: } {A}
655: do_test selectA-2.94 {
656: execsql {
657: SELECT lower((SELECT c FROM t1 UNION ALL SELECT z FROM t2 ORDER BY 1));
658: }
659: } {a}
660: do_test selectA-2.95 {
661: execsql {
662: SELECT lower((SELECT c FROM t1 INTERSECT SELECT z FROM t2 ORDER BY 1));
663: }
664: } {{}}
665: do_test selectA-2.96 {
666: execsql {
667: SELECT lower((SELECT z FROM t2 EXCEPT SELECT c FROM t1 ORDER BY 1));
668: }
669: } {m}
670:
671:
672: do_test selectA-3.0 {
673: execsql {
674: CREATE UNIQUE INDEX t1a ON t1(a);
675: CREATE UNIQUE INDEX t1b ON t1(b);
676: CREATE UNIQUE INDEX t1c ON t1(c);
677: CREATE UNIQUE INDEX t2x ON t2(x);
678: CREATE UNIQUE INDEX t2y ON t2(y);
679: CREATE UNIQUE INDEX t2z ON t2(z);
680: SELECT name FROM sqlite_master WHERE type='index'
681: }
682: } {t1a t1b t1c t2x t2y t2z}
683: do_test selectA-3.1 {
684: execsql {
685: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
686: ORDER BY a,b,c
687: }
688: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
689: do_test selectA-3.1.1 { # Ticket #3314
690: execsql {
691: SELECT t1.a,b,t1.c FROM t1 UNION ALL SELECT x,y,z FROM t2
692: ORDER BY a,t1.b,t1.c
693: }
694: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
695: do_test selectA-3.2 {
696: execsql {
697: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
698: ORDER BY a DESC,b,c
699: }
700: } {hare m M abc e e mad Z z hello d D 5200000.0 X x 9.9 b B 1 a a -23 Y y {} C c {} U u}
701: do_test selectA-3.3 {
702: execsql {
703: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
704: ORDER BY a,c,b
705: }
706: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
707: do_test selectA-3.4 {
708: execsql {
709: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
710: ORDER BY b,a,c
711: }
712: } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e hare m M}
713: do_test selectA-3.5 {
714: execsql {
715: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
716: ORDER BY b COLLATE NOCASE,a,c
717: }
718: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
719: do_test selectA-3.6 {
720: execsql {
721: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
722: ORDER BY b COLLATE NOCASE DESC,a,c
723: }
724: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
725: do_test selectA-3.7 {
726: execsql {
727: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
728: ORDER BY c,b,a
729: }
730: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
731: do_test selectA-3.8 {
732: execsql {
733: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
734: ORDER BY c,a,b
735: }
736: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
737: do_test selectA-3.9 {
738: execsql {
739: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
740: ORDER BY c DESC,a,b
741: }
742: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
743: do_test selectA-3.10 {
744: execsql {
745: SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
746: ORDER BY c COLLATE BINARY DESC,a,b
747: }
748: } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D 9.9 b B}
749: do_test selectA-3.11 {
750: execsql {
751: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
752: ORDER BY a,b,c
753: }
754: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
755: do_test selectA-3.12 {
756: execsql {
757: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
758: ORDER BY a DESC,b,c
759: }
760: } {hare m M abc e e mad Z z hello d D 5200000.0 X x 9.9 b B 1 a a -23 Y y {} C c {} U u}
761: do_test selectA-3.13 {
762: execsql {
763: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
764: ORDER BY a,c,b
765: }
766: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
767: do_test selectA-3.14 {
768: execsql {
769: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
770: ORDER BY b,a,c
771: }
772: } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e hare m M}
773: do_test selectA-3.15 {
774: execsql {
775: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
776: ORDER BY b COLLATE NOCASE,a,c
777: }
778: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
779: do_test selectA-3.16 {
780: execsql {
781: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
782: ORDER BY b COLLATE NOCASE DESC,a,c
783: }
784: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
785: do_test selectA-3.17 {
786: execsql {
787: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
788: ORDER BY c,b,a
789: }
790: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
791: do_test selectA-3.18 {
792: execsql {
793: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
794: ORDER BY c,a,b
795: }
796: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
797: do_test selectA-3.19 {
798: execsql {
799: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
800: ORDER BY c DESC,a,b
801: }
802: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
803: do_test selectA-3.20 {
804: execsql {
805: SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
806: ORDER BY c COLLATE BINARY DESC,a,b
807: }
808: } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D 9.9 b B}
809: do_test selectA-3.21 {
810: execsql {
811: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
812: ORDER BY a,b,c
813: }
814: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
815: do_test selectA-3.22 {
816: execsql {
817: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
818: ORDER BY a DESC,b,c
819: }
820: } {hare m M abc e e mad Z z hello d D 5200000.0 X x 9.9 b B 1 a a -23 Y y {} C c {} U u}
821: do_test selectA-3.23 {
822: execsql {
823: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
824: ORDER BY a,c,b
825: }
826: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
827: do_test selectA-3.24 {
828: execsql {
829: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
830: ORDER BY b,a,c
831: }
832: } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e hare m M}
833: do_test selectA-3.25 {
834: execsql {
835: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
836: ORDER BY b COLLATE NOCASE,a,c
837: }
838: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
839: do_test selectA-3.26 {
840: execsql {
841: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
842: ORDER BY b COLLATE NOCASE DESC,a,c
843: }
844: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
845: do_test selectA-3.27 {
846: execsql {
847: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
848: ORDER BY c,b,a
849: }
850: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
851: do_test selectA-3.28 {
852: execsql {
853: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
854: ORDER BY c,a,b
855: }
856: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
857: do_test selectA-3.29 {
858: execsql {
859: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
860: ORDER BY c DESC,a,b
861: }
862: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
863: do_test selectA-3.30 {
864: execsql {
865: SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
866: ORDER BY c COLLATE BINARY DESC,a,b
867: }
868: } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D 9.9 b B}
869: do_test selectA-3.31 {
870: execsql {
871: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
872: ORDER BY a,b,c
873: }
874: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
875: do_test selectA-3.32 {
876: execsql {
877: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
878: ORDER BY a DESC,b,c
879: }
880: } {hare m M abc e e mad Z z hello d D 5200000.0 X x 9.9 b B 1 a a -23 Y y {} C c {} U u}
881: do_test selectA-3.33 {
882: execsql {
883: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
884: ORDER BY a,c,b
885: }
886: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
887: do_test selectA-3.34 {
888: execsql {
889: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
890: ORDER BY b,a,c
891: }
892: } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e hare m M}
893: do_test selectA-3.35 {
894: execsql {
895: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
896: ORDER BY b COLLATE NOCASE,a,c
897: }
898: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
899: do_test selectA-3.36 {
900: execsql {
901: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
902: ORDER BY b COLLATE NOCASE DESC,a,c
903: }
904: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
905: do_test selectA-3.37 {
906: execsql {
907: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
908: ORDER BY c,b,a
909: }
910: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
911: do_test selectA-3.38 {
912: execsql {
913: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
914: ORDER BY c,a,b
915: }
916: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
917: do_test selectA-3.39 {
918: execsql {
919: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
920: ORDER BY c DESC,a,b
921: }
922: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
923: do_test selectA-3.40 {
924: execsql {
925: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
926: ORDER BY c COLLATE BINARY DESC,a,b
927: }
928: } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D 9.9 b B}
929: do_test selectA-3.41 {
930: execsql {
931: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
932: ORDER BY a,b,c
933: }
934: } {{} C c 1 a a 9.9 b B}
935: do_test selectA-3.42 {
936: execsql {
937: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
938: ORDER BY a,b,c
939: }
940: } {hello d D abc e e}
941: do_test selectA-3.43 {
942: execsql {
943: SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
944: ORDER BY a,b,c
945: }
946: } {hello d D abc e e}
947: do_test selectA-3.44 {
948: execsql {
949: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
950: ORDER BY a,b,c
951: }
952: } {hello d D abc e e}
953: do_test selectA-3.45 {
954: execsql {
955: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
956: ORDER BY a,b,c
957: }
958: } {{} C c 1 a a 9.9 b B}
959: do_test selectA-3.46 {
960: execsql {
961: SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
962: ORDER BY a,b,c
963: }
964: } {{} C c 1 a a 9.9 b B}
965: do_test selectA-3.47 {
966: execsql {
967: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
968: ORDER BY a DESC
969: }
970: } {9.9 b B 1 a a {} C c}
971: do_test selectA-3.48 {
972: execsql {
973: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
974: ORDER BY a DESC
975: }
976: } {abc e e hello d D}
977: do_test selectA-3.49 {
978: execsql {
979: SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
980: ORDER BY a DESC
981: }
982: } {abc e e hello d D}
983: do_test selectA-3.50 {
984: execsql {
985: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
986: ORDER BY a DESC
987: }
988: } {abc e e hello d D}
989: do_test selectA-3.51 {
990: execsql {
991: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
992: ORDER BY a DESC
993: }
994: } {9.9 b B 1 a a {} C c}
995: do_test selectA-3.52 {
996: execsql {
997: SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
998: ORDER BY a DESC
999: }
1000: } {9.9 b B 1 a a {} C c}
1001: do_test selectA-3.53 {
1002: execsql {
1003: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
1004: ORDER BY b, a DESC
1005: }
1006: } {{} C c 1 a a 9.9 b B}
1007: do_test selectA-3.54 {
1008: execsql {
1009: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
1010: ORDER BY b
1011: }
1012: } {hello d D abc e e}
1013: do_test selectA-3.55 {
1014: execsql {
1015: SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
1016: ORDER BY b DESC, c
1017: }
1018: } {abc e e hello d D}
1019: do_test selectA-3.56 {
1020: execsql {
1021: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
1022: ORDER BY b, c DESC, a
1023: }
1024: } {hello d D abc e e}
1025: do_test selectA-3.57 {
1026: execsql {
1027: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
1028: ORDER BY b COLLATE NOCASE
1029: }
1030: } {1 a a 9.9 b B {} C c}
1031: do_test selectA-3.58 {
1032: execsql {
1033: SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
1034: ORDER BY b
1035: }
1036: } {{} C c 1 a a 9.9 b B}
1037: do_test selectA-3.59 {
1038: execsql {
1039: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
1040: ORDER BY c, a DESC
1041: }
1042: } {1 a a 9.9 b B {} C c}
1043: do_test selectA-3.60 {
1044: execsql {
1045: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
1046: ORDER BY c
1047: }
1048: } {hello d D abc e e}
1049: do_test selectA-3.61 {
1050: execsql {
1051: SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
1052: ORDER BY c COLLATE BINARY, b DESC, c, a, b, c, a, b, c
1053: }
1054: } {hello d D abc e e}
1055: do_test selectA-3.62 {
1056: execsql {
1057: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
1058: ORDER BY c DESC, a
1059: }
1060: } {abc e e hello d D}
1061: do_test selectA-3.63 {
1062: execsql {
1063: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
1064: ORDER BY c COLLATE NOCASE
1065: }
1066: } {1 a a 9.9 b B {} C c}
1067: do_test selectA-3.64 {
1068: execsql {
1069: SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
1070: ORDER BY c
1071: }
1072: } {1 a a 9.9 b B {} C c}
1073: do_test selectA-3.65 {
1074: execsql {
1075: SELECT a,b,c FROM t3 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
1076: ORDER BY c COLLATE NOCASE
1077: }
1078: } {1 a a 9.9 b B {} C c}
1079: do_test selectA-3.66 {
1080: execsql {
1081: SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t3
1082: ORDER BY c
1083: }
1084: } {1 a a 9.9 b B {} C c}
1085: do_test selectA-3.67 {
1086: execsql {
1087: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t3 WHERE b<'d'
1088: ORDER BY c DESC, a
1089: }
1090: } {abc e e hello d D}
1091: do_test selectA-3.68 {
1092: execsql {
1093: SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
1094: INTERSECT SELECT a,b,c FROM t3
1095: EXCEPT SELECT b,c,a FROM t3
1096: ORDER BY c DESC, a
1097: }
1098: } {abc e e hello d D}
1099: do_test selectA-3.69 {
1100: execsql {
1101: SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
1102: INTERSECT SELECT a,b,c FROM t3
1103: EXCEPT SELECT b,c,a FROM t3
1104: ORDER BY c COLLATE NOCASE
1105: }
1106: } {1 a a 9.9 b B {} C c}
1107: do_test selectA-3.70 {
1108: execsql {
1109: SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
1110: INTERSECT SELECT a,b,c FROM t3
1111: EXCEPT SELECT b,c,a FROM t3
1112: ORDER BY c
1113: }
1114: } {1 a a 9.9 b B {} C c}
1115: do_test selectA-3.71 {
1116: execsql {
1117: SELECT a,b,c FROM t1 WHERE b<'d'
1118: INTERSECT SELECT a,b,c FROM t1
1119: INTERSECT SELECT a,b,c FROM t3
1120: EXCEPT SELECT b,c,a FROM t3
1121: INTERSECT SELECT a,b,c FROM t1
1122: EXCEPT SELECT x,y,z FROM t2
1123: INTERSECT SELECT a,b,c FROM t3
1124: EXCEPT SELECT y,x,z FROM t2
1125: INTERSECT SELECT a,b,c FROM t1
1126: EXCEPT SELECT c,b,a FROM t3
1127: ORDER BY c
1128: }
1129: } {1 a a 9.9 b B {} C c}
1130: do_test selectA-3.72 {
1131: execsql {
1132: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
1133: ORDER BY a,b,c
1134: }
1135: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
1136: do_test selectA-3.73 {
1137: execsql {
1138: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
1139: ORDER BY a DESC,b,c
1140: }
1141: } {hare m M abc e e mad Z z hello d D 5200000.0 X x 9.9 b B 1 a a -23 Y y {} C c {} U u}
1142: do_test selectA-3.74 {
1143: execsql {
1144: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
1145: ORDER BY a,c,b
1146: }
1147: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
1148: do_test selectA-3.75 {
1149: execsql {
1150: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
1151: ORDER BY b,a,c
1152: }
1153: } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e hare m M}
1154: do_test selectA-3.76 {
1155: execsql {
1156: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
1157: ORDER BY b COLLATE NOCASE,a,c
1158: }
1159: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
1160: do_test selectA-3.77 {
1161: execsql {
1162: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
1163: ORDER BY b COLLATE NOCASE DESC,a,c
1164: }
1165: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
1166: do_test selectA-3.78 {
1167: execsql {
1168: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
1169: ORDER BY c,b,a
1170: }
1171: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
1172: do_test selectA-3.79 {
1173: execsql {
1174: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
1175: ORDER BY c,a,b
1176: }
1177: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
1178: do_test selectA-3.80 {
1179: execsql {
1180: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
1181: ORDER BY c DESC,a,b
1182: }
1183: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
1184: do_test selectA-3.81 {
1185: execsql {
1186: SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
1187: ORDER BY c COLLATE BINARY DESC,a,b
1188: }
1189: } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D 9.9 b B}
1190: do_test selectA-3.82 {
1191: execsql {
1192: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
1193: ORDER BY a,b,c
1194: }
1195: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
1196: do_test selectA-3.83 {
1197: execsql {
1198: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
1199: ORDER BY a DESC,b,c
1200: }
1201: } {hare m M abc e e mad Z z hello d D 5200000.0 X x 9.9 b B 1 a a -23 Y y {} C c {} U u}
1202: do_test selectA-3.84 {
1203: execsql {
1204: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
1205: ORDER BY a,c,b
1206: }
1207: } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e hare m M}
1208: do_test selectA-3.85 {
1209: execsql {
1210: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
1211: ORDER BY b,a,c
1212: }
1213: } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e hare m M}
1214: do_test selectA-3.86 {
1215: execsql {
1216: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
1217: ORDER BY b COLLATE NOCASE,a,c
1218: }
1219: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
1220: do_test selectA-3.87 {
1221: execsql {
1222: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
1223: ORDER BY y COLLATE NOCASE DESC,x,z
1224: }
1225: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
1226: do_test selectA-3.88 {
1227: execsql {
1228: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
1229: ORDER BY c,b,a
1230: }
1231: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
1232: do_test selectA-3.89 {
1233: execsql {
1234: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
1235: ORDER BY c,a,b
1236: }
1237: } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y mad Z z}
1238: do_test selectA-3.90 {
1239: execsql {
1240: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
1241: ORDER BY c DESC,a,b
1242: }
1243: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
1244: do_test selectA-3.91 {
1245: execsql {
1246: SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
1247: ORDER BY c COLLATE BINARY DESC,a,b
1248: }
1249: } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D 9.9 b B}
1250: do_test selectA-3.92 {
1251: execsql {
1252: SELECT x,y,z FROM t2
1253: INTERSECT SELECT a,b,c FROM t3
1254: EXCEPT SELECT c,b,a FROM t1
1255: UNION SELECT a,b,c FROM t3
1256: INTERSECT SELECT a,b,c FROM t3
1257: EXCEPT SELECT c,b,a FROM t1
1258: UNION SELECT a,b,c FROM t3
1259: ORDER BY y COLLATE NOCASE DESC,x,z
1260: }
1261: } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b B 1 a a}
1262: do_test selectA-3.93 {
1263: execsql {
1264: SELECT upper((SELECT c FROM t1 UNION SELECT z FROM t2 ORDER BY 1));
1265: }
1266: } {A}
1267: do_test selectA-3.94 {
1268: execsql {
1269: SELECT lower((SELECT c FROM t1 UNION ALL SELECT z FROM t2 ORDER BY 1));
1270: }
1271: } {a}
1272: do_test selectA-3.95 {
1273: execsql {
1274: SELECT lower((SELECT c FROM t1 INTERSECT SELECT z FROM t2 ORDER BY 1));
1275: }
1276: } {{}}
1277: do_test selectA-3.96 {
1278: execsql {
1279: SELECT lower((SELECT z FROM t2 EXCEPT SELECT c FROM t1 ORDER BY 1));
1280: }
1281: } {m}
1282: do_test selectA-3.97 {
1283: execsql {
1284: SELECT upper((SELECT x FROM (
1285: SELECT x,y,z FROM t2
1286: INTERSECT SELECT a,b,c FROM t3
1287: EXCEPT SELECT c,b,a FROM t1
1288: UNION SELECT a,b,c FROM t3
1289: INTERSECT SELECT a,b,c FROM t3
1290: EXCEPT SELECT c,b,a FROM t1
1291: UNION SELECT a,b,c FROM t3
1292: ORDER BY y COLLATE NOCASE DESC,x,z)))
1293: }
1294: } {MAD}
1295:
1296: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>