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