xref: /sqlite-3.40.0/test/selectA.test (revision 195687f1)
1fae37af1Sdrh# 2008 June 24
2fae37af1Sdrh#
3fae37af1Sdrh# The author disclaims copyright to this source code.  In place of
4fae37af1Sdrh# a legal notice, here is a blessing:
5fae37af1Sdrh#
6fae37af1Sdrh#    May you do good and not evil.
7fae37af1Sdrh#    May you find forgiveness for yourself and forgive others.
8fae37af1Sdrh#    May you share freely, never taking more than you give.
9fae37af1Sdrh#
10fae37af1Sdrh#***********************************************************************
11fae37af1Sdrh# This file implements regression tests for SQLite library.
12fae37af1Sdrh#
13fae37af1Sdrh# The focus of this file is testing the compound-SELECT merge
14fae37af1Sdrh# optimization.  Or, in other words, making sure that all
15fae37af1Sdrh# possible combinations of UNION, UNION ALL, EXCEPT, and
16fae37af1Sdrh# INTERSECT work together with an ORDER BY clause (with or w/o
17fae37af1Sdrh# explicit sort order and explicit collating secquites) and
18fae37af1Sdrh# with and without optional LIMIT and OFFSET clauses.
19fae37af1Sdrh#
2074073b6dSdrh# $Id: selectA.test,v 1.6 2008/08/21 14:24:29 drh Exp $
21fae37af1Sdrh
22fae37af1Sdrhset testdir [file dirname $argv0]
23fae37af1Sdrhsource $testdir/tester.tcl
2438524132Sdanset testprefix selectA
25fae37af1Sdrh
26de3e41e3Sdanielk1977ifcapable !compound {
27de3e41e3Sdanielk1977  finish_test
28de3e41e3Sdanielk1977  return
29de3e41e3Sdanielk1977}
30de3e41e3Sdanielk1977
31fae37af1Sdrhdo_test selectA-1.0 {
32fae37af1Sdrh  execsql {
33fae37af1Sdrh    CREATE TABLE t1(a,b,c COLLATE NOCASE);
34fae37af1Sdrh    INSERT INTO t1 VALUES(1,'a','a');
35fae37af1Sdrh    INSERT INTO t1 VALUES(9.9, 'b', 'B');
36fae37af1Sdrh    INSERT INTO t1 VALUES(NULL, 'C', 'c');
37fae37af1Sdrh    INSERT INTO t1 VALUES('hello', 'd', 'D');
38fae37af1Sdrh    INSERT INTO t1 VALUES(x'616263', 'e', 'e');
39fae37af1Sdrh    SELECT * FROM t1;
40fae37af1Sdrh  }
41fae37af1Sdrh} {1 a a 9.9 b B {} C c hello d D abc e e}
42fae37af1Sdrhdo_test selectA-1.1 {
43fae37af1Sdrh  execsql {
44fae37af1Sdrh    CREATE TABLE t2(x,y,z COLLATE NOCASE);
45fae37af1Sdrh    INSERT INTO t2 VALUES(NULL,'U','u');
46fae37af1Sdrh    INSERT INTO t2 VALUES('mad', 'Z', 'z');
47fae37af1Sdrh    INSERT INTO t2 VALUES(x'68617265', 'm', 'M');
48fae37af1Sdrh    INSERT INTO t2 VALUES(5.2e6, 'X', 'x');
49fae37af1Sdrh    INSERT INTO t2 VALUES(-23, 'Y', 'y');
50fae37af1Sdrh    SELECT * FROM t2;
51fae37af1Sdrh  }
52fae37af1Sdrh} {{} U u mad Z z hare m M 5200000.0 X x -23 Y y}
533f994d06Sdrhdo_test selectA-1.2 {
543f994d06Sdrh  execsql {
553f994d06Sdrh    CREATE TABLE t3(a,b,c COLLATE NOCASE);
563f994d06Sdrh    INSERT INTO t3 SELECT * FROM t1;
573f994d06Sdrh    INSERT INTO t3 SELECT * FROM t2;
583f994d06Sdrh    INSERT INTO t3 SELECT * FROM t1;
593f994d06Sdrh    INSERT INTO t3 SELECT * FROM t2;
603f994d06Sdrh    INSERT INTO t3 SELECT * FROM t1;
613f994d06Sdrh    INSERT INTO t3 SELECT * FROM t2;
623f994d06Sdrh    SELECT count(*) FROM t3;
633f994d06Sdrh  }
643f994d06Sdrh} {30}
65fae37af1Sdrh
66fae37af1Sdrhdo_test selectA-2.1 {
67fae37af1Sdrh  execsql {
68fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
69fae37af1Sdrh    ORDER BY a,b,c
70fae37af1Sdrh  }
71fae37af1Sdrh} {{} 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}
7274073b6dSdrhdo_test selectA-2.1.1 {   # Ticket #3314
7374073b6dSdrh  execsql {
7474073b6dSdrh    SELECT t1.a, t1.b, t1.c FROM t1 UNION ALL SELECT x,y,z FROM t2
7574073b6dSdrh    ORDER BY a,b,c
7674073b6dSdrh  }
7774073b6dSdrh} {{} 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}
7874073b6dSdrhdo_test selectA-2.1.2 {   # Ticket #3314
7974073b6dSdrh  execsql {
8074073b6dSdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
8174073b6dSdrh    ORDER BY t1.a, t1.b, t1.c
8274073b6dSdrh  }
8374073b6dSdrh} {{} 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}
84fae37af1Sdrhdo_test selectA-2.2 {
85fae37af1Sdrh  execsql {
86fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
87fae37af1Sdrh    ORDER BY a DESC,b,c
88fae37af1Sdrh  }
89fae37af1Sdrh} {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}
90fae37af1Sdrhdo_test selectA-2.3 {
91fae37af1Sdrh  execsql {
92fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
93fae37af1Sdrh    ORDER BY a,c,b
94fae37af1Sdrh  }
95fae37af1Sdrh} {{} 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}
96fae37af1Sdrhdo_test selectA-2.4 {
97fae37af1Sdrh  execsql {
98fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
99fae37af1Sdrh    ORDER BY b,a,c
100fae37af1Sdrh  }
101fae37af1Sdrh} {{} 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}
102fae37af1Sdrhdo_test selectA-2.5 {
103fae37af1Sdrh  execsql {
104fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
105fae37af1Sdrh    ORDER BY b COLLATE NOCASE,a,c
106fae37af1Sdrh  }
107fae37af1Sdrh} {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}
108fae37af1Sdrhdo_test selectA-2.6 {
109fae37af1Sdrh  execsql {
110fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
111fae37af1Sdrh    ORDER BY b COLLATE NOCASE DESC,a,c
112fae37af1Sdrh  }
113fae37af1Sdrh} {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}
114fae37af1Sdrhdo_test selectA-2.7 {
115fae37af1Sdrh  execsql {
116fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
117fae37af1Sdrh    ORDER BY c,b,a
118fae37af1Sdrh  }
119fae37af1Sdrh} {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}
120fae37af1Sdrhdo_test selectA-2.8 {
121fae37af1Sdrh  execsql {
122fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
123fae37af1Sdrh    ORDER BY c,a,b
124fae37af1Sdrh  }
125fae37af1Sdrh} {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}
126fae37af1Sdrhdo_test selectA-2.9 {
127fae37af1Sdrh  execsql {
128fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
129fae37af1Sdrh    ORDER BY c DESC,a,b
130fae37af1Sdrh  }
131fae37af1Sdrh} {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}
132fae37af1Sdrhdo_test selectA-2.10 {
133fae37af1Sdrh  execsql {
134fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
135fae37af1Sdrh    ORDER BY c COLLATE BINARY DESC,a,b
136fae37af1Sdrh  }
137fae37af1Sdrh} {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}
138fae37af1Sdrhdo_test selectA-2.11 {
139fae37af1Sdrh  execsql {
140fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
141fae37af1Sdrh    ORDER BY a,b,c
142fae37af1Sdrh  }
143fae37af1Sdrh} {{} 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}
144fae37af1Sdrhdo_test selectA-2.12 {
145fae37af1Sdrh  execsql {
146fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
147fae37af1Sdrh    ORDER BY a DESC,b,c
148fae37af1Sdrh  }
149fae37af1Sdrh} {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}
150fae37af1Sdrhdo_test selectA-2.13 {
151fae37af1Sdrh  execsql {
152fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
153fae37af1Sdrh    ORDER BY a,c,b
154fae37af1Sdrh  }
155fae37af1Sdrh} {{} 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}
156fae37af1Sdrhdo_test selectA-2.14 {
157fae37af1Sdrh  execsql {
158fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
159fae37af1Sdrh    ORDER BY b,a,c
160fae37af1Sdrh  }
161fae37af1Sdrh} {{} 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}
162fae37af1Sdrhdo_test selectA-2.15 {
163fae37af1Sdrh  execsql {
164fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
165fae37af1Sdrh    ORDER BY b COLLATE NOCASE,a,c
166fae37af1Sdrh  }
167fae37af1Sdrh} {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}
168fae37af1Sdrhdo_test selectA-2.16 {
169fae37af1Sdrh  execsql {
170fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
171fae37af1Sdrh    ORDER BY b COLLATE NOCASE DESC,a,c
172fae37af1Sdrh  }
173fae37af1Sdrh} {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}
174fae37af1Sdrhdo_test selectA-2.17 {
175fae37af1Sdrh  execsql {
176fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
177fae37af1Sdrh    ORDER BY c,b,a
178fae37af1Sdrh  }
179fae37af1Sdrh} {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}
180fae37af1Sdrhdo_test selectA-2.18 {
181fae37af1Sdrh  execsql {
182fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
183fae37af1Sdrh    ORDER BY c,a,b
184fae37af1Sdrh  }
185fae37af1Sdrh} {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}
186fae37af1Sdrhdo_test selectA-2.19 {
187fae37af1Sdrh  execsql {
188fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
189fae37af1Sdrh    ORDER BY c DESC,a,b
190fae37af1Sdrh  }
191fae37af1Sdrh} {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}
192fae37af1Sdrhdo_test selectA-2.20 {
193fae37af1Sdrh  execsql {
194fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
195fae37af1Sdrh    ORDER BY c COLLATE BINARY DESC,a,b
196fae37af1Sdrh  }
197fae37af1Sdrh} {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}
198fae37af1Sdrhdo_test selectA-2.21 {
199fae37af1Sdrh  execsql {
200fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
201fae37af1Sdrh    ORDER BY a,b,c
202fae37af1Sdrh  }
203fae37af1Sdrh} {{} 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}
204fae37af1Sdrhdo_test selectA-2.22 {
205fae37af1Sdrh  execsql {
206fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
207fae37af1Sdrh    ORDER BY a DESC,b,c
208fae37af1Sdrh  }
209fae37af1Sdrh} {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}
210fae37af1Sdrhdo_test selectA-2.23 {
211fae37af1Sdrh  execsql {
212fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
213fae37af1Sdrh    ORDER BY a,c,b
214fae37af1Sdrh  }
215fae37af1Sdrh} {{} 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}
216fae37af1Sdrhdo_test selectA-2.24 {
217fae37af1Sdrh  execsql {
218fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
219fae37af1Sdrh    ORDER BY b,a,c
220fae37af1Sdrh  }
221fae37af1Sdrh} {{} 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}
222fae37af1Sdrhdo_test selectA-2.25 {
223fae37af1Sdrh  execsql {
224fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
225fae37af1Sdrh    ORDER BY b COLLATE NOCASE,a,c
226fae37af1Sdrh  }
227fae37af1Sdrh} {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}
228fae37af1Sdrhdo_test selectA-2.26 {
229fae37af1Sdrh  execsql {
230fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
231fae37af1Sdrh    ORDER BY b COLLATE NOCASE DESC,a,c
232fae37af1Sdrh  }
233fae37af1Sdrh} {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}
234fae37af1Sdrhdo_test selectA-2.27 {
235fae37af1Sdrh  execsql {
236fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
237fae37af1Sdrh    ORDER BY c,b,a
238fae37af1Sdrh  }
239fae37af1Sdrh} {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}
240fae37af1Sdrhdo_test selectA-2.28 {
241fae37af1Sdrh  execsql {
242fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
243fae37af1Sdrh    ORDER BY c,a,b
244fae37af1Sdrh  }
245fae37af1Sdrh} {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}
246fae37af1Sdrhdo_test selectA-2.29 {
247fae37af1Sdrh  execsql {
248fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
249fae37af1Sdrh    ORDER BY c DESC,a,b
250fae37af1Sdrh  }
251fae37af1Sdrh} {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}
252fae37af1Sdrhdo_test selectA-2.30 {
253fae37af1Sdrh  execsql {
254fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
255fae37af1Sdrh    ORDER BY c COLLATE BINARY DESC,a,b
256fae37af1Sdrh  }
257fae37af1Sdrh} {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}
258fae37af1Sdrhdo_test selectA-2.31 {
259fae37af1Sdrh  execsql {
260fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
261fae37af1Sdrh    ORDER BY a,b,c
262fae37af1Sdrh  }
263fae37af1Sdrh} {{} 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}
264fae37af1Sdrhdo_test selectA-2.32 {
265fae37af1Sdrh  execsql {
266fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
267fae37af1Sdrh    ORDER BY a DESC,b,c
268fae37af1Sdrh  }
269fae37af1Sdrh} {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}
270fae37af1Sdrhdo_test selectA-2.33 {
271fae37af1Sdrh  execsql {
272fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
273fae37af1Sdrh    ORDER BY a,c,b
274fae37af1Sdrh  }
275fae37af1Sdrh} {{} 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}
276fae37af1Sdrhdo_test selectA-2.34 {
277fae37af1Sdrh  execsql {
278fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
279fae37af1Sdrh    ORDER BY b,a,c
280fae37af1Sdrh  }
281fae37af1Sdrh} {{} 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}
282fae37af1Sdrhdo_test selectA-2.35 {
283fae37af1Sdrh  execsql {
284fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
285c01b7306Sdrh    ORDER BY y COLLATE NOCASE,x,z
286fae37af1Sdrh  }
287fae37af1Sdrh} {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}
288fae37af1Sdrhdo_test selectA-2.36 {
289fae37af1Sdrh  execsql {
290fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
291c01b7306Sdrh    ORDER BY y COLLATE NOCASE DESC,x,z
292fae37af1Sdrh  }
293fae37af1Sdrh} {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}
294fae37af1Sdrhdo_test selectA-2.37 {
295fae37af1Sdrh  execsql {
296fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
297fae37af1Sdrh    ORDER BY c,b,a
298fae37af1Sdrh  }
299fae37af1Sdrh} {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}
300fae37af1Sdrhdo_test selectA-2.38 {
301fae37af1Sdrh  execsql {
302fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
303fae37af1Sdrh    ORDER BY c,a,b
304fae37af1Sdrh  }
305fae37af1Sdrh} {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}
306fae37af1Sdrhdo_test selectA-2.39 {
307fae37af1Sdrh  execsql {
308fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
309fae37af1Sdrh    ORDER BY c DESC,a,b
310fae37af1Sdrh  }
311fae37af1Sdrh} {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}
312fae37af1Sdrhdo_test selectA-2.40 {
313fae37af1Sdrh  execsql {
314fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
315c01b7306Sdrh    ORDER BY z COLLATE BINARY DESC,x,y
316fae37af1Sdrh  }
317fae37af1Sdrh} {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}
318fae37af1Sdrhdo_test selectA-2.41 {
319fae37af1Sdrh  execsql {
320fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
321fae37af1Sdrh    ORDER BY a,b,c
322fae37af1Sdrh  }
323fae37af1Sdrh} {{} C c 1 a a 9.9 b B}
324fae37af1Sdrhdo_test selectA-2.42 {
325fae37af1Sdrh  execsql {
326fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
327fae37af1Sdrh    ORDER BY a,b,c
328fae37af1Sdrh  }
329fae37af1Sdrh} {hello d D abc e e}
330fae37af1Sdrhdo_test selectA-2.43 {
331fae37af1Sdrh  execsql {
332fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
333fae37af1Sdrh    ORDER BY a,b,c
334fae37af1Sdrh  }
335fae37af1Sdrh} {hello d D abc e e}
336fae37af1Sdrhdo_test selectA-2.44 {
337fae37af1Sdrh  execsql {
338fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
339fae37af1Sdrh    ORDER BY a,b,c
340fae37af1Sdrh  }
341fae37af1Sdrh} {hello d D abc e e}
342fae37af1Sdrhdo_test selectA-2.45 {
343fae37af1Sdrh  execsql {
344fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
345fae37af1Sdrh    ORDER BY a,b,c
346fae37af1Sdrh  }
347fae37af1Sdrh} {{} C c 1 a a 9.9 b B}
348fae37af1Sdrhdo_test selectA-2.46 {
349fae37af1Sdrh  execsql {
350fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
351fae37af1Sdrh    ORDER BY a,b,c
352fae37af1Sdrh  }
353fae37af1Sdrh} {{} C c 1 a a 9.9 b B}
354fae37af1Sdrhdo_test selectA-2.47 {
355fae37af1Sdrh  execsql {
356fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
357fae37af1Sdrh    ORDER BY a DESC
358fae37af1Sdrh  }
359fae37af1Sdrh} {9.9 b B 1 a a {} C c}
360fae37af1Sdrhdo_test selectA-2.48 {
361fae37af1Sdrh  execsql {
362fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
363fae37af1Sdrh    ORDER BY a DESC
364fae37af1Sdrh  }
365fae37af1Sdrh} {abc e e hello d D}
366fae37af1Sdrhdo_test selectA-2.49 {
367fae37af1Sdrh  execsql {
368fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
369fae37af1Sdrh    ORDER BY a DESC
370fae37af1Sdrh  }
371fae37af1Sdrh} {abc e e hello d D}
372fae37af1Sdrhdo_test selectA-2.50 {
373fae37af1Sdrh  execsql {
374fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
375fae37af1Sdrh    ORDER BY a DESC
376fae37af1Sdrh  }
377fae37af1Sdrh} {abc e e hello d D}
378fae37af1Sdrhdo_test selectA-2.51 {
379fae37af1Sdrh  execsql {
380fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
381fae37af1Sdrh    ORDER BY a DESC
382fae37af1Sdrh  }
383fae37af1Sdrh} {9.9 b B 1 a a {} C c}
384fae37af1Sdrhdo_test selectA-2.52 {
385fae37af1Sdrh  execsql {
386fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
387fae37af1Sdrh    ORDER BY a DESC
388fae37af1Sdrh  }
389fae37af1Sdrh} {9.9 b B 1 a a {} C c}
390fae37af1Sdrhdo_test selectA-2.53 {
391fae37af1Sdrh  execsql {
392fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
393fae37af1Sdrh    ORDER BY b, a DESC
394fae37af1Sdrh  }
395fae37af1Sdrh} {{} C c 1 a a 9.9 b B}
396fae37af1Sdrhdo_test selectA-2.54 {
397fae37af1Sdrh  execsql {
398fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
399fae37af1Sdrh    ORDER BY b
400fae37af1Sdrh  }
401fae37af1Sdrh} {hello d D abc e e}
402fae37af1Sdrhdo_test selectA-2.55 {
403fae37af1Sdrh  execsql {
404fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
405fae37af1Sdrh    ORDER BY b DESC, c
406fae37af1Sdrh  }
407fae37af1Sdrh} {abc e e hello d D}
408fae37af1Sdrhdo_test selectA-2.56 {
409fae37af1Sdrh  execsql {
410fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
411fae37af1Sdrh    ORDER BY b, c DESC, a
412fae37af1Sdrh  }
413fae37af1Sdrh} {hello d D abc e e}
414fae37af1Sdrhdo_test selectA-2.57 {
415fae37af1Sdrh  execsql {
416fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
417fae37af1Sdrh    ORDER BY b COLLATE NOCASE
418fae37af1Sdrh  }
419fae37af1Sdrh} {1 a a 9.9 b B {} C c}
420fae37af1Sdrhdo_test selectA-2.58 {
421fae37af1Sdrh  execsql {
422fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
423fae37af1Sdrh    ORDER BY b
424fae37af1Sdrh  }
425fae37af1Sdrh} {{} C c 1 a a 9.9 b B}
426fae37af1Sdrhdo_test selectA-2.59 {
427fae37af1Sdrh  execsql {
428fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
429fae37af1Sdrh    ORDER BY c, a DESC
430fae37af1Sdrh  }
431fae37af1Sdrh} {1 a a 9.9 b B {} C c}
432fae37af1Sdrhdo_test selectA-2.60 {
433fae37af1Sdrh  execsql {
434fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
435fae37af1Sdrh    ORDER BY c
436fae37af1Sdrh  }
437fae37af1Sdrh} {hello d D abc e e}
438fae37af1Sdrhdo_test selectA-2.61 {
439fae37af1Sdrh  execsql {
440fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
441fae37af1Sdrh    ORDER BY c COLLATE BINARY, b DESC, c, a, b, c, a, b, c
442fae37af1Sdrh  }
443fae37af1Sdrh} {hello d D abc e e}
444fae37af1Sdrhdo_test selectA-2.62 {
445fae37af1Sdrh  execsql {
446fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
447fae37af1Sdrh    ORDER BY c DESC, a
448fae37af1Sdrh  }
449fae37af1Sdrh} {abc e e hello d D}
450fae37af1Sdrhdo_test selectA-2.63 {
451fae37af1Sdrh  execsql {
452fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
453fae37af1Sdrh    ORDER BY c COLLATE NOCASE
454fae37af1Sdrh  }
455fae37af1Sdrh} {1 a a 9.9 b B {} C c}
456fae37af1Sdrhdo_test selectA-2.64 {
457fae37af1Sdrh  execsql {
458fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
459fae37af1Sdrh    ORDER BY c
460fae37af1Sdrh  }
461fae37af1Sdrh} {1 a a 9.9 b B {} C c}
4623f994d06Sdrhdo_test selectA-2.65 {
4633f994d06Sdrh  execsql {
4643f994d06Sdrh    SELECT a,b,c FROM t3 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
4653f994d06Sdrh    ORDER BY c COLLATE NOCASE
4663f994d06Sdrh  }
4673f994d06Sdrh} {1 a a 9.9 b B {} C c}
4683f994d06Sdrhdo_test selectA-2.66 {
4693f994d06Sdrh  execsql {
4703f994d06Sdrh    SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t3
4713f994d06Sdrh    ORDER BY c
4723f994d06Sdrh  }
4733f994d06Sdrh} {1 a a 9.9 b B {} C c}
4743f994d06Sdrhdo_test selectA-2.67 {
4753f994d06Sdrh  execsql {
4763f994d06Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t3 WHERE b<'d'
4773f994d06Sdrh    ORDER BY c DESC, a
4783f994d06Sdrh  }
4793f994d06Sdrh} {abc e e hello d D}
4803f994d06Sdrhdo_test selectA-2.68 {
4813f994d06Sdrh  execsql {
4823f994d06Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
4833f994d06Sdrh    INTERSECT SELECT a,b,c FROM t3
4843f994d06Sdrh    EXCEPT SELECT b,c,a FROM t3
4853f994d06Sdrh    ORDER BY c DESC, a
4863f994d06Sdrh  }
4873f994d06Sdrh} {abc e e hello d D}
4883f994d06Sdrhdo_test selectA-2.69 {
4893f994d06Sdrh  execsql {
4903f994d06Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
4913f994d06Sdrh    INTERSECT SELECT a,b,c FROM t3
4923f994d06Sdrh    EXCEPT SELECT b,c,a FROM t3
4933f994d06Sdrh    ORDER BY c COLLATE NOCASE
4943f994d06Sdrh  }
4953f994d06Sdrh} {1 a a 9.9 b B {} C c}
4963f994d06Sdrhdo_test selectA-2.70 {
4973f994d06Sdrh  execsql {
4983f994d06Sdrh    SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
4993f994d06Sdrh    INTERSECT SELECT a,b,c FROM t3
5003f994d06Sdrh    EXCEPT SELECT b,c,a FROM t3
5013f994d06Sdrh    ORDER BY c
5023f994d06Sdrh  }
5033f994d06Sdrh} {1 a a 9.9 b B {} C c}
5043f994d06Sdrhdo_test selectA-2.71 {
5053f994d06Sdrh  execsql {
5063f994d06Sdrh    SELECT a,b,c FROM t1 WHERE b<'d'
5073f994d06Sdrh    INTERSECT SELECT a,b,c FROM t1
5083f994d06Sdrh    INTERSECT SELECT a,b,c FROM t3
5093f994d06Sdrh    EXCEPT SELECT b,c,a FROM t3
5103f994d06Sdrh    INTERSECT SELECT a,b,c FROM t1
5113f994d06Sdrh    EXCEPT SELECT x,y,z FROM t2
5123f994d06Sdrh    INTERSECT SELECT a,b,c FROM t3
5133f994d06Sdrh    EXCEPT SELECT y,x,z FROM t2
5143f994d06Sdrh    INTERSECT SELECT a,b,c FROM t1
5153f994d06Sdrh    EXCEPT SELECT c,b,a FROM t3
5163f994d06Sdrh    ORDER BY c
5173f994d06Sdrh  }
5183f994d06Sdrh} {1 a a 9.9 b B {} C c}
5193f994d06Sdrhdo_test selectA-2.72 {
5203f994d06Sdrh  execsql {
5213f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
5223f994d06Sdrh    ORDER BY a,b,c
5233f994d06Sdrh  }
5243f994d06Sdrh} {{} 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}
5253f994d06Sdrhdo_test selectA-2.73 {
5263f994d06Sdrh  execsql {
5273f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
5283f994d06Sdrh    ORDER BY a DESC,b,c
5293f994d06Sdrh  }
5303f994d06Sdrh} {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}
5313f994d06Sdrhdo_test selectA-2.74 {
5323f994d06Sdrh  execsql {
5333f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
5343f994d06Sdrh    ORDER BY a,c,b
5353f994d06Sdrh  }
5363f994d06Sdrh} {{} 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}
5373f994d06Sdrhdo_test selectA-2.75 {
5383f994d06Sdrh  execsql {
5393f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
5403f994d06Sdrh    ORDER BY b,a,c
5413f994d06Sdrh  }
5423f994d06Sdrh} {{} 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}
5433f994d06Sdrhdo_test selectA-2.76 {
5443f994d06Sdrh  execsql {
5453f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
5463f994d06Sdrh    ORDER BY b COLLATE NOCASE,a,c
5473f994d06Sdrh  }
5483f994d06Sdrh} {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}
5493f994d06Sdrhdo_test selectA-2.77 {
5503f994d06Sdrh  execsql {
5513f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
5523f994d06Sdrh    ORDER BY b COLLATE NOCASE DESC,a,c
5533f994d06Sdrh  }
5543f994d06Sdrh} {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}
5553f994d06Sdrhdo_test selectA-2.78 {
5563f994d06Sdrh  execsql {
5573f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
5583f994d06Sdrh    ORDER BY c,b,a
5593f994d06Sdrh  }
5603f994d06Sdrh} {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}
5613f994d06Sdrhdo_test selectA-2.79 {
5623f994d06Sdrh  execsql {
5633f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
5643f994d06Sdrh    ORDER BY c,a,b
5653f994d06Sdrh  }
5663f994d06Sdrh} {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}
5673f994d06Sdrhdo_test selectA-2.80 {
5683f994d06Sdrh  execsql {
5693f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
5703f994d06Sdrh    ORDER BY c DESC,a,b
5713f994d06Sdrh  }
5723f994d06Sdrh} {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}
5733f994d06Sdrhdo_test selectA-2.81 {
5743f994d06Sdrh  execsql {
5753f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
5763f994d06Sdrh    ORDER BY c COLLATE BINARY DESC,a,b
5773f994d06Sdrh  }
5783f994d06Sdrh} {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}
5793f994d06Sdrhdo_test selectA-2.82 {
5803f994d06Sdrh  execsql {
5813f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
5823f994d06Sdrh    ORDER BY a,b,c
5833f994d06Sdrh  }
5843f994d06Sdrh} {{} 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}
5853f994d06Sdrhdo_test selectA-2.83 {
5863f994d06Sdrh  execsql {
5873f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
5883f994d06Sdrh    ORDER BY a DESC,b,c
5893f994d06Sdrh  }
5903f994d06Sdrh} {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}
5913f994d06Sdrhdo_test selectA-2.84 {
5923f994d06Sdrh  execsql {
5933f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
5943f994d06Sdrh    ORDER BY a,c,b
5953f994d06Sdrh  }
5963f994d06Sdrh} {{} 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}
5973f994d06Sdrhdo_test selectA-2.85 {
5983f994d06Sdrh  execsql {
5993f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
6003f994d06Sdrh    ORDER BY b,a,c
6013f994d06Sdrh  }
6023f994d06Sdrh} {{} 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}
6033f994d06Sdrhdo_test selectA-2.86 {
6043f994d06Sdrh  execsql {
6053f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
606c01b7306Sdrh    ORDER BY y COLLATE NOCASE,x,z
6073f994d06Sdrh  }
6083f994d06Sdrh} {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}
6093f994d06Sdrhdo_test selectA-2.87 {
6103f994d06Sdrh  execsql {
6113f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
6123f994d06Sdrh    ORDER BY y COLLATE NOCASE DESC,x,z
6133f994d06Sdrh  }
6143f994d06Sdrh} {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}
6153f994d06Sdrhdo_test selectA-2.88 {
6163f994d06Sdrh  execsql {
6173f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
6183f994d06Sdrh    ORDER BY c,b,a
6193f994d06Sdrh  }
6203f994d06Sdrh} {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}
6213f994d06Sdrhdo_test selectA-2.89 {
6223f994d06Sdrh  execsql {
6233f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
6243f994d06Sdrh    ORDER BY c,a,b
6253f994d06Sdrh  }
6263f994d06Sdrh} {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}
6273f994d06Sdrhdo_test selectA-2.90 {
6283f994d06Sdrh  execsql {
6293f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
6303f994d06Sdrh    ORDER BY c DESC,a,b
6313f994d06Sdrh  }
6323f994d06Sdrh} {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}
6333f994d06Sdrhdo_test selectA-2.91 {
6343f994d06Sdrh  execsql {
6353f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
636c01b7306Sdrh    ORDER BY z COLLATE BINARY DESC,x,y
6373f994d06Sdrh  }
6383f994d06Sdrh} {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}
6393f994d06Sdrhdo_test selectA-2.92 {
6403f994d06Sdrh  execsql {
6413f994d06Sdrh    SELECT x,y,z FROM t2
6423f994d06Sdrh    INTERSECT SELECT a,b,c FROM t3
6433f994d06Sdrh    EXCEPT SELECT c,b,a FROM t1
6443f994d06Sdrh    UNION SELECT a,b,c FROM t3
6453f994d06Sdrh    INTERSECT SELECT a,b,c FROM t3
6463f994d06Sdrh    EXCEPT SELECT c,b,a FROM t1
6473f994d06Sdrh    UNION SELECT a,b,c FROM t3
6483f994d06Sdrh    ORDER BY y COLLATE NOCASE DESC,x,z
6493f994d06Sdrh  }
6503f994d06Sdrh} {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}
65185e9e22bSdrhdo_test selectA-2.93 {
65285e9e22bSdrh  execsql {
65385e9e22bSdrh    SELECT upper((SELECT c FROM t1 UNION SELECT z FROM t2 ORDER BY 1));
65485e9e22bSdrh  }
65585e9e22bSdrh} {A}
65685e9e22bSdrhdo_test selectA-2.94 {
65785e9e22bSdrh  execsql {
65885e9e22bSdrh    SELECT lower((SELECT c FROM t1 UNION ALL SELECT z FROM t2 ORDER BY 1));
65985e9e22bSdrh  }
66085e9e22bSdrh} {a}
66185e9e22bSdrhdo_test selectA-2.95 {
66285e9e22bSdrh  execsql {
66385e9e22bSdrh    SELECT lower((SELECT c FROM t1 INTERSECT SELECT z FROM t2 ORDER BY 1));
66485e9e22bSdrh  }
66585e9e22bSdrh} {{}}
66685e9e22bSdrhdo_test selectA-2.96 {
66785e9e22bSdrh  execsql {
66885e9e22bSdrh    SELECT lower((SELECT z FROM t2 EXCEPT SELECT c FROM t1 ORDER BY 1));
66985e9e22bSdrh  }
67085e9e22bSdrh} {m}
6713f994d06Sdrh
672fae37af1Sdrh
673fae37af1Sdrhdo_test selectA-3.0 {
674fae37af1Sdrh  execsql {
675fae37af1Sdrh    CREATE UNIQUE INDEX t1a ON t1(a);
676fae37af1Sdrh    CREATE UNIQUE INDEX t1b ON t1(b);
677fae37af1Sdrh    CREATE UNIQUE INDEX t1c ON t1(c);
678fae37af1Sdrh    CREATE UNIQUE INDEX t2x ON t2(x);
679fae37af1Sdrh    CREATE UNIQUE INDEX t2y ON t2(y);
680fae37af1Sdrh    CREATE UNIQUE INDEX t2z ON t2(z);
681fae37af1Sdrh    SELECT name FROM sqlite_master WHERE type='index'
682fae37af1Sdrh  }
683fae37af1Sdrh} {t1a t1b t1c t2x t2y t2z}
684fae37af1Sdrhdo_test selectA-3.1 {
685fae37af1Sdrh  execsql {
686fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
687fae37af1Sdrh    ORDER BY a,b,c
688fae37af1Sdrh  }
689fae37af1Sdrh} {{} 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}
69074073b6dSdrhdo_test selectA-3.1.1 {  # Ticket #3314
69174073b6dSdrh  execsql {
69274073b6dSdrh    SELECT t1.a,b,t1.c FROM t1 UNION ALL SELECT x,y,z FROM t2
69374073b6dSdrh    ORDER BY a,t1.b,t1.c
69474073b6dSdrh  }
69574073b6dSdrh} {{} 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}
696fae37af1Sdrhdo_test selectA-3.2 {
697fae37af1Sdrh  execsql {
698fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
699fae37af1Sdrh    ORDER BY a DESC,b,c
700fae37af1Sdrh  }
701fae37af1Sdrh} {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}
702fae37af1Sdrhdo_test selectA-3.3 {
703fae37af1Sdrh  execsql {
704fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
705fae37af1Sdrh    ORDER BY a,c,b
706fae37af1Sdrh  }
707fae37af1Sdrh} {{} 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}
708fae37af1Sdrhdo_test selectA-3.4 {
709fae37af1Sdrh  execsql {
710fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
711fae37af1Sdrh    ORDER BY b,a,c
712fae37af1Sdrh  }
713fae37af1Sdrh} {{} 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}
714fae37af1Sdrhdo_test selectA-3.5 {
715fae37af1Sdrh  execsql {
716fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
717fae37af1Sdrh    ORDER BY b COLLATE NOCASE,a,c
718fae37af1Sdrh  }
719fae37af1Sdrh} {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}
720fae37af1Sdrhdo_test selectA-3.6 {
721fae37af1Sdrh  execsql {
722fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
723fae37af1Sdrh    ORDER BY b COLLATE NOCASE DESC,a,c
724fae37af1Sdrh  }
725fae37af1Sdrh} {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}
726fae37af1Sdrhdo_test selectA-3.7 {
727fae37af1Sdrh  execsql {
728fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
729fae37af1Sdrh    ORDER BY c,b,a
730fae37af1Sdrh  }
731fae37af1Sdrh} {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}
732fae37af1Sdrhdo_test selectA-3.8 {
733fae37af1Sdrh  execsql {
734fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
735fae37af1Sdrh    ORDER BY c,a,b
736fae37af1Sdrh  }
737fae37af1Sdrh} {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}
738fae37af1Sdrhdo_test selectA-3.9 {
739fae37af1Sdrh  execsql {
740fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
741fae37af1Sdrh    ORDER BY c DESC,a,b
742fae37af1Sdrh  }
743fae37af1Sdrh} {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}
744fae37af1Sdrhdo_test selectA-3.10 {
745fae37af1Sdrh  execsql {
746fae37af1Sdrh    SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2
747fae37af1Sdrh    ORDER BY c COLLATE BINARY DESC,a,b
748fae37af1Sdrh  }
749fae37af1Sdrh} {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}
750fae37af1Sdrhdo_test selectA-3.11 {
751fae37af1Sdrh  execsql {
752fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
753fae37af1Sdrh    ORDER BY a,b,c
754fae37af1Sdrh  }
755fae37af1Sdrh} {{} 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}
756fae37af1Sdrhdo_test selectA-3.12 {
757fae37af1Sdrh  execsql {
758fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
759fae37af1Sdrh    ORDER BY a DESC,b,c
760fae37af1Sdrh  }
761fae37af1Sdrh} {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}
762fae37af1Sdrhdo_test selectA-3.13 {
763fae37af1Sdrh  execsql {
764fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
765fae37af1Sdrh    ORDER BY a,c,b
766fae37af1Sdrh  }
767fae37af1Sdrh} {{} 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}
768fae37af1Sdrhdo_test selectA-3.14 {
769fae37af1Sdrh  execsql {
770fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
771fae37af1Sdrh    ORDER BY b,a,c
772fae37af1Sdrh  }
773fae37af1Sdrh} {{} 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}
774fae37af1Sdrhdo_test selectA-3.15 {
775fae37af1Sdrh  execsql {
776fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
777fae37af1Sdrh    ORDER BY b COLLATE NOCASE,a,c
778fae37af1Sdrh  }
779fae37af1Sdrh} {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}
780fae37af1Sdrhdo_test selectA-3.16 {
781fae37af1Sdrh  execsql {
782fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
783fae37af1Sdrh    ORDER BY b COLLATE NOCASE DESC,a,c
784fae37af1Sdrh  }
785fae37af1Sdrh} {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}
786fae37af1Sdrhdo_test selectA-3.17 {
787fae37af1Sdrh  execsql {
788fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
789fae37af1Sdrh    ORDER BY c,b,a
790fae37af1Sdrh  }
791fae37af1Sdrh} {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}
792fae37af1Sdrhdo_test selectA-3.18 {
793fae37af1Sdrh  execsql {
794fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
795fae37af1Sdrh    ORDER BY c,a,b
796fae37af1Sdrh  }
797fae37af1Sdrh} {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}
798fae37af1Sdrhdo_test selectA-3.19 {
799fae37af1Sdrh  execsql {
800fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
801fae37af1Sdrh    ORDER BY c DESC,a,b
802fae37af1Sdrh  }
803fae37af1Sdrh} {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}
804fae37af1Sdrhdo_test selectA-3.20 {
805fae37af1Sdrh  execsql {
806fae37af1Sdrh    SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1
807fae37af1Sdrh    ORDER BY c COLLATE BINARY DESC,a,b
808fae37af1Sdrh  }
809fae37af1Sdrh} {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}
810fae37af1Sdrhdo_test selectA-3.21 {
811fae37af1Sdrh  execsql {
812fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
813fae37af1Sdrh    ORDER BY a,b,c
814fae37af1Sdrh  }
815fae37af1Sdrh} {{} 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}
816fae37af1Sdrhdo_test selectA-3.22 {
817fae37af1Sdrh  execsql {
818fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
819fae37af1Sdrh    ORDER BY a DESC,b,c
820fae37af1Sdrh  }
821fae37af1Sdrh} {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}
822fae37af1Sdrhdo_test selectA-3.23 {
823fae37af1Sdrh  execsql {
824fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
825fae37af1Sdrh    ORDER BY a,c,b
826fae37af1Sdrh  }
827fae37af1Sdrh} {{} 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}
828fae37af1Sdrhdo_test selectA-3.24 {
829fae37af1Sdrh  execsql {
830fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
831fae37af1Sdrh    ORDER BY b,a,c
832fae37af1Sdrh  }
833fae37af1Sdrh} {{} 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}
834fae37af1Sdrhdo_test selectA-3.25 {
835fae37af1Sdrh  execsql {
836fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
837fae37af1Sdrh    ORDER BY b COLLATE NOCASE,a,c
838fae37af1Sdrh  }
839fae37af1Sdrh} {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}
840fae37af1Sdrhdo_test selectA-3.26 {
841fae37af1Sdrh  execsql {
842fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
843fae37af1Sdrh    ORDER BY b COLLATE NOCASE DESC,a,c
844fae37af1Sdrh  }
845fae37af1Sdrh} {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}
846fae37af1Sdrhdo_test selectA-3.27 {
847fae37af1Sdrh  execsql {
848fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
849fae37af1Sdrh    ORDER BY c,b,a
850fae37af1Sdrh  }
851fae37af1Sdrh} {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}
852fae37af1Sdrhdo_test selectA-3.28 {
853fae37af1Sdrh  execsql {
854fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
855fae37af1Sdrh    ORDER BY c,a,b
856fae37af1Sdrh  }
857fae37af1Sdrh} {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}
858fae37af1Sdrhdo_test selectA-3.29 {
859fae37af1Sdrh  execsql {
860fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
861fae37af1Sdrh    ORDER BY c DESC,a,b
862fae37af1Sdrh  }
863fae37af1Sdrh} {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}
864fae37af1Sdrhdo_test selectA-3.30 {
865fae37af1Sdrh  execsql {
866fae37af1Sdrh    SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2
867fae37af1Sdrh    ORDER BY c COLLATE BINARY DESC,a,b
868fae37af1Sdrh  }
869fae37af1Sdrh} {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}
870fae37af1Sdrhdo_test selectA-3.31 {
871fae37af1Sdrh  execsql {
872fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
873fae37af1Sdrh    ORDER BY a,b,c
874fae37af1Sdrh  }
875fae37af1Sdrh} {{} 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}
876fae37af1Sdrhdo_test selectA-3.32 {
877fae37af1Sdrh  execsql {
878fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
879fae37af1Sdrh    ORDER BY a DESC,b,c
880fae37af1Sdrh  }
881fae37af1Sdrh} {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}
882fae37af1Sdrhdo_test selectA-3.33 {
883fae37af1Sdrh  execsql {
884fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
885fae37af1Sdrh    ORDER BY a,c,b
886fae37af1Sdrh  }
887fae37af1Sdrh} {{} 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}
888fae37af1Sdrhdo_test selectA-3.34 {
889fae37af1Sdrh  execsql {
890fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
891fae37af1Sdrh    ORDER BY b,a,c
892fae37af1Sdrh  }
893fae37af1Sdrh} {{} 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}
894fae37af1Sdrhdo_test selectA-3.35 {
895fae37af1Sdrh  execsql {
896fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
897c01b7306Sdrh    ORDER BY y COLLATE NOCASE,x,z
898fae37af1Sdrh  }
899fae37af1Sdrh} {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}
900fae37af1Sdrhdo_test selectA-3.36 {
901fae37af1Sdrh  execsql {
902fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
903c01b7306Sdrh    ORDER BY y COLLATE NOCASE DESC,x,z
904fae37af1Sdrh  }
905fae37af1Sdrh} {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}
906fae37af1Sdrhdo_test selectA-3.37 {
907fae37af1Sdrh  execsql {
908fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
909fae37af1Sdrh    ORDER BY c,b,a
910fae37af1Sdrh  }
911fae37af1Sdrh} {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}
912fae37af1Sdrhdo_test selectA-3.38 {
913fae37af1Sdrh  execsql {
914fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
915fae37af1Sdrh    ORDER BY c,a,b
916fae37af1Sdrh  }
917fae37af1Sdrh} {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}
918fae37af1Sdrhdo_test selectA-3.39 {
919fae37af1Sdrh  execsql {
920fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
921fae37af1Sdrh    ORDER BY c DESC,a,b
922fae37af1Sdrh  }
923fae37af1Sdrh} {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}
924fae37af1Sdrhdo_test selectA-3.40 {
925fae37af1Sdrh  execsql {
926fae37af1Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1
927c01b7306Sdrh    ORDER BY z COLLATE BINARY DESC,x,y
928fae37af1Sdrh  }
929fae37af1Sdrh} {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}
930fae37af1Sdrhdo_test selectA-3.41 {
931fae37af1Sdrh  execsql {
932fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
933fae37af1Sdrh    ORDER BY a,b,c
934fae37af1Sdrh  }
935fae37af1Sdrh} {{} C c 1 a a 9.9 b B}
936fae37af1Sdrhdo_test selectA-3.42 {
937fae37af1Sdrh  execsql {
938fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
939fae37af1Sdrh    ORDER BY a,b,c
940fae37af1Sdrh  }
941fae37af1Sdrh} {hello d D abc e e}
942fae37af1Sdrhdo_test selectA-3.43 {
943fae37af1Sdrh  execsql {
944fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
945fae37af1Sdrh    ORDER BY a,b,c
946fae37af1Sdrh  }
947fae37af1Sdrh} {hello d D abc e e}
948fae37af1Sdrhdo_test selectA-3.44 {
949fae37af1Sdrh  execsql {
950fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
951fae37af1Sdrh    ORDER BY a,b,c
952fae37af1Sdrh  }
953fae37af1Sdrh} {hello d D abc e e}
954fae37af1Sdrhdo_test selectA-3.45 {
955fae37af1Sdrh  execsql {
956fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
957fae37af1Sdrh    ORDER BY a,b,c
958fae37af1Sdrh  }
959fae37af1Sdrh} {{} C c 1 a a 9.9 b B}
960fae37af1Sdrhdo_test selectA-3.46 {
961fae37af1Sdrh  execsql {
962fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
963fae37af1Sdrh    ORDER BY a,b,c
964fae37af1Sdrh  }
965fae37af1Sdrh} {{} C c 1 a a 9.9 b B}
966fae37af1Sdrhdo_test selectA-3.47 {
967fae37af1Sdrh  execsql {
968fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
969fae37af1Sdrh    ORDER BY a DESC
970fae37af1Sdrh  }
971fae37af1Sdrh} {9.9 b B 1 a a {} C c}
972fae37af1Sdrhdo_test selectA-3.48 {
973fae37af1Sdrh  execsql {
974fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
975fae37af1Sdrh    ORDER BY a DESC
976fae37af1Sdrh  }
977fae37af1Sdrh} {abc e e hello d D}
978fae37af1Sdrhdo_test selectA-3.49 {
979fae37af1Sdrh  execsql {
980fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
981fae37af1Sdrh    ORDER BY a DESC
982fae37af1Sdrh  }
983fae37af1Sdrh} {abc e e hello d D}
984fae37af1Sdrhdo_test selectA-3.50 {
985fae37af1Sdrh  execsql {
986fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
987fae37af1Sdrh    ORDER BY a DESC
988fae37af1Sdrh  }
989fae37af1Sdrh} {abc e e hello d D}
990fae37af1Sdrhdo_test selectA-3.51 {
991fae37af1Sdrh  execsql {
992fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
993fae37af1Sdrh    ORDER BY a DESC
994fae37af1Sdrh  }
995fae37af1Sdrh} {9.9 b B 1 a a {} C c}
996fae37af1Sdrhdo_test selectA-3.52 {
997fae37af1Sdrh  execsql {
998fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
999fae37af1Sdrh    ORDER BY a DESC
1000fae37af1Sdrh  }
1001fae37af1Sdrh} {9.9 b B 1 a a {} C c}
1002fae37af1Sdrhdo_test selectA-3.53 {
1003fae37af1Sdrh  execsql {
1004fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
1005fae37af1Sdrh    ORDER BY b, a DESC
1006fae37af1Sdrh  }
1007fae37af1Sdrh} {{} C c 1 a a 9.9 b B}
1008fae37af1Sdrhdo_test selectA-3.54 {
1009fae37af1Sdrh  execsql {
1010fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
1011fae37af1Sdrh    ORDER BY b
1012fae37af1Sdrh  }
1013fae37af1Sdrh} {hello d D abc e e}
1014fae37af1Sdrhdo_test selectA-3.55 {
1015fae37af1Sdrh  execsql {
1016fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
1017fae37af1Sdrh    ORDER BY b DESC, c
1018fae37af1Sdrh  }
1019fae37af1Sdrh} {abc e e hello d D}
1020fae37af1Sdrhdo_test selectA-3.56 {
1021fae37af1Sdrh  execsql {
1022fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
1023fae37af1Sdrh    ORDER BY b, c DESC, a
1024fae37af1Sdrh  }
1025fae37af1Sdrh} {hello d D abc e e}
1026fae37af1Sdrhdo_test selectA-3.57 {
1027fae37af1Sdrh  execsql {
1028fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
1029fae37af1Sdrh    ORDER BY b COLLATE NOCASE
1030fae37af1Sdrh  }
1031fae37af1Sdrh} {1 a a 9.9 b B {} C c}
1032fae37af1Sdrhdo_test selectA-3.58 {
1033fae37af1Sdrh  execsql {
1034fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
1035fae37af1Sdrh    ORDER BY b
1036fae37af1Sdrh  }
1037fae37af1Sdrh} {{} C c 1 a a 9.9 b B}
1038fae37af1Sdrhdo_test selectA-3.59 {
1039fae37af1Sdrh  execsql {
1040fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d'
1041fae37af1Sdrh    ORDER BY c, a DESC
1042fae37af1Sdrh  }
1043fae37af1Sdrh} {1 a a 9.9 b B {} C c}
1044fae37af1Sdrhdo_test selectA-3.60 {
1045fae37af1Sdrh  execsql {
1046fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d'
1047fae37af1Sdrh    ORDER BY c
1048fae37af1Sdrh  }
1049fae37af1Sdrh} {hello d D abc e e}
1050fae37af1Sdrhdo_test selectA-3.61 {
1051fae37af1Sdrh  execsql {
1052fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1
1053fae37af1Sdrh    ORDER BY c COLLATE BINARY, b DESC, c, a, b, c, a, b, c
1054fae37af1Sdrh  }
1055fae37af1Sdrh} {hello d D abc e e}
1056fae37af1Sdrhdo_test selectA-3.62 {
1057fae37af1Sdrh  execsql {
1058fae37af1Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
1059fae37af1Sdrh    ORDER BY c DESC, a
1060fae37af1Sdrh  }
1061fae37af1Sdrh} {abc e e hello d D}
1062fae37af1Sdrhdo_test selectA-3.63 {
1063fae37af1Sdrh  execsql {
1064fae37af1Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
1065fae37af1Sdrh    ORDER BY c COLLATE NOCASE
1066fae37af1Sdrh  }
1067fae37af1Sdrh} {1 a a 9.9 b B {} C c}
1068fae37af1Sdrhdo_test selectA-3.64 {
1069fae37af1Sdrh  execsql {
1070fae37af1Sdrh    SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
1071fae37af1Sdrh    ORDER BY c
1072fae37af1Sdrh  }
1073fae37af1Sdrh} {1 a a 9.9 b B {} C c}
10743f994d06Sdrhdo_test selectA-3.65 {
10753f994d06Sdrh  execsql {
10763f994d06Sdrh    SELECT a,b,c FROM t3 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
10773f994d06Sdrh    ORDER BY c COLLATE NOCASE
10783f994d06Sdrh  }
10793f994d06Sdrh} {1 a a 9.9 b B {} C c}
10803f994d06Sdrhdo_test selectA-3.66 {
10813f994d06Sdrh  execsql {
10823f994d06Sdrh    SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t3
10833f994d06Sdrh    ORDER BY c
10843f994d06Sdrh  }
10853f994d06Sdrh} {1 a a 9.9 b B {} C c}
10863f994d06Sdrhdo_test selectA-3.67 {
10873f994d06Sdrh  execsql {
10883f994d06Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t3 WHERE b<'d'
10893f994d06Sdrh    ORDER BY c DESC, a
10903f994d06Sdrh  }
10913f994d06Sdrh} {abc e e hello d D}
10923f994d06Sdrhdo_test selectA-3.68 {
10933f994d06Sdrh  execsql {
10943f994d06Sdrh    SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d'
10953f994d06Sdrh    INTERSECT SELECT a,b,c FROM t3
10963f994d06Sdrh    EXCEPT SELECT b,c,a FROM t3
10973f994d06Sdrh    ORDER BY c DESC, a
10983f994d06Sdrh  }
10993f994d06Sdrh} {abc e e hello d D}
11003f994d06Sdrhdo_test selectA-3.69 {
11013f994d06Sdrh  execsql {
11023f994d06Sdrh    SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d'
11033f994d06Sdrh    INTERSECT SELECT a,b,c FROM t3
11043f994d06Sdrh    EXCEPT SELECT b,c,a FROM t3
11053f994d06Sdrh    ORDER BY c COLLATE NOCASE
11063f994d06Sdrh  }
11073f994d06Sdrh} {1 a a 9.9 b B {} C c}
11083f994d06Sdrhdo_test selectA-3.70 {
11093f994d06Sdrh  execsql {
11103f994d06Sdrh    SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1
11113f994d06Sdrh    INTERSECT SELECT a,b,c FROM t3
11123f994d06Sdrh    EXCEPT SELECT b,c,a FROM t3
11133f994d06Sdrh    ORDER BY c
11143f994d06Sdrh  }
11153f994d06Sdrh} {1 a a 9.9 b B {} C c}
11163f994d06Sdrhdo_test selectA-3.71 {
11173f994d06Sdrh  execsql {
11183f994d06Sdrh    SELECT a,b,c FROM t1 WHERE b<'d'
11193f994d06Sdrh    INTERSECT SELECT a,b,c FROM t1
11203f994d06Sdrh    INTERSECT SELECT a,b,c FROM t3
11213f994d06Sdrh    EXCEPT SELECT b,c,a FROM t3
11223f994d06Sdrh    INTERSECT SELECT a,b,c FROM t1
11233f994d06Sdrh    EXCEPT SELECT x,y,z FROM t2
11243f994d06Sdrh    INTERSECT SELECT a,b,c FROM t3
11253f994d06Sdrh    EXCEPT SELECT y,x,z FROM t2
11263f994d06Sdrh    INTERSECT SELECT a,b,c FROM t1
11273f994d06Sdrh    EXCEPT SELECT c,b,a FROM t3
11283f994d06Sdrh    ORDER BY c
11293f994d06Sdrh  }
11303f994d06Sdrh} {1 a a 9.9 b B {} C c}
11313f994d06Sdrhdo_test selectA-3.72 {
11323f994d06Sdrh  execsql {
11333f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
11343f994d06Sdrh    ORDER BY a,b,c
11353f994d06Sdrh  }
11363f994d06Sdrh} {{} 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}
11373f994d06Sdrhdo_test selectA-3.73 {
11383f994d06Sdrh  execsql {
11393f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
11403f994d06Sdrh    ORDER BY a DESC,b,c
11413f994d06Sdrh  }
11423f994d06Sdrh} {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}
11433f994d06Sdrhdo_test selectA-3.74 {
11443f994d06Sdrh  execsql {
11453f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
11463f994d06Sdrh    ORDER BY a,c,b
11473f994d06Sdrh  }
11483f994d06Sdrh} {{} 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}
11493f994d06Sdrhdo_test selectA-3.75 {
11503f994d06Sdrh  execsql {
11513f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
11523f994d06Sdrh    ORDER BY b,a,c
11533f994d06Sdrh  }
11543f994d06Sdrh} {{} 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}
11553f994d06Sdrhdo_test selectA-3.76 {
11563f994d06Sdrh  execsql {
11573f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
11583f994d06Sdrh    ORDER BY b COLLATE NOCASE,a,c
11593f994d06Sdrh  }
11603f994d06Sdrh} {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}
11613f994d06Sdrhdo_test selectA-3.77 {
11623f994d06Sdrh  execsql {
11633f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
11643f994d06Sdrh    ORDER BY b COLLATE NOCASE DESC,a,c
11653f994d06Sdrh  }
11663f994d06Sdrh} {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}
11673f994d06Sdrhdo_test selectA-3.78 {
11683f994d06Sdrh  execsql {
11693f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
11703f994d06Sdrh    ORDER BY c,b,a
11713f994d06Sdrh  }
11723f994d06Sdrh} {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}
11733f994d06Sdrhdo_test selectA-3.79 {
11743f994d06Sdrh  execsql {
11753f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
11763f994d06Sdrh    ORDER BY c,a,b
11773f994d06Sdrh  }
11783f994d06Sdrh} {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}
11793f994d06Sdrhdo_test selectA-3.80 {
11803f994d06Sdrh  execsql {
11813f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
11823f994d06Sdrh    ORDER BY c DESC,a,b
11833f994d06Sdrh  }
11843f994d06Sdrh} {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}
11853f994d06Sdrhdo_test selectA-3.81 {
11863f994d06Sdrh  execsql {
11873f994d06Sdrh    SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2
11883f994d06Sdrh    ORDER BY c COLLATE BINARY DESC,a,b
11893f994d06Sdrh  }
11903f994d06Sdrh} {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}
11913f994d06Sdrhdo_test selectA-3.82 {
11923f994d06Sdrh  execsql {
11933f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
11943f994d06Sdrh    ORDER BY a,b,c
11953f994d06Sdrh  }
11963f994d06Sdrh} {{} 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}
11973f994d06Sdrhdo_test selectA-3.83 {
11983f994d06Sdrh  execsql {
11993f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
12003f994d06Sdrh    ORDER BY a DESC,b,c
12013f994d06Sdrh  }
12023f994d06Sdrh} {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}
12033f994d06Sdrhdo_test selectA-3.84 {
12043f994d06Sdrh  execsql {
12053f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
12063f994d06Sdrh    ORDER BY a,c,b
12073f994d06Sdrh  }
12083f994d06Sdrh} {{} 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}
12093f994d06Sdrhdo_test selectA-3.85 {
12103f994d06Sdrh  execsql {
12113f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
12123f994d06Sdrh    ORDER BY b,a,c
12133f994d06Sdrh  }
12143f994d06Sdrh} {{} 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}
12153f994d06Sdrhdo_test selectA-3.86 {
12163f994d06Sdrh  execsql {
12173f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
1218c01b7306Sdrh    ORDER BY y COLLATE NOCASE,x,z
12193f994d06Sdrh  }
12203f994d06Sdrh} {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}
12213f994d06Sdrhdo_test selectA-3.87 {
12223f994d06Sdrh  execsql {
12233f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
12243f994d06Sdrh    ORDER BY y COLLATE NOCASE DESC,x,z
12253f994d06Sdrh  }
12263f994d06Sdrh} {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}
12273f994d06Sdrhdo_test selectA-3.88 {
12283f994d06Sdrh  execsql {
12293f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
12303f994d06Sdrh    ORDER BY c,b,a
12313f994d06Sdrh  }
12323f994d06Sdrh} {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}
12333f994d06Sdrhdo_test selectA-3.89 {
12343f994d06Sdrh  execsql {
12353f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
12363f994d06Sdrh    ORDER BY c,a,b
12373f994d06Sdrh  }
12383f994d06Sdrh} {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}
12393f994d06Sdrhdo_test selectA-3.90 {
12403f994d06Sdrh  execsql {
12413f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
12423f994d06Sdrh    ORDER BY c DESC,a,b
12433f994d06Sdrh  }
12443f994d06Sdrh} {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}
12453f994d06Sdrhdo_test selectA-3.91 {
12463f994d06Sdrh  execsql {
12473f994d06Sdrh    SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3
1248c01b7306Sdrh    ORDER BY z COLLATE BINARY DESC,x,y
12493f994d06Sdrh  }
12503f994d06Sdrh} {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}
12513f994d06Sdrhdo_test selectA-3.92 {
12523f994d06Sdrh  execsql {
12533f994d06Sdrh    SELECT x,y,z FROM t2
12543f994d06Sdrh    INTERSECT SELECT a,b,c FROM t3
12553f994d06Sdrh    EXCEPT SELECT c,b,a FROM t1
12563f994d06Sdrh    UNION SELECT a,b,c FROM t3
12573f994d06Sdrh    INTERSECT SELECT a,b,c FROM t3
12583f994d06Sdrh    EXCEPT SELECT c,b,a FROM t1
12593f994d06Sdrh    UNION SELECT a,b,c FROM t3
12603f994d06Sdrh    ORDER BY y COLLATE NOCASE DESC,x,z
12613f994d06Sdrh  }
12623f994d06Sdrh} {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}
126385e9e22bSdrhdo_test selectA-3.93 {
126485e9e22bSdrh  execsql {
126585e9e22bSdrh    SELECT upper((SELECT c FROM t1 UNION SELECT z FROM t2 ORDER BY 1));
126685e9e22bSdrh  }
126785e9e22bSdrh} {A}
126885e9e22bSdrhdo_test selectA-3.94 {
126985e9e22bSdrh  execsql {
127085e9e22bSdrh    SELECT lower((SELECT c FROM t1 UNION ALL SELECT z FROM t2 ORDER BY 1));
127185e9e22bSdrh  }
127285e9e22bSdrh} {a}
127385e9e22bSdrhdo_test selectA-3.95 {
127485e9e22bSdrh  execsql {
127585e9e22bSdrh    SELECT lower((SELECT c FROM t1 INTERSECT SELECT z FROM t2 ORDER BY 1));
127685e9e22bSdrh  }
127785e9e22bSdrh} {{}}
127885e9e22bSdrhdo_test selectA-3.96 {
127985e9e22bSdrh  execsql {
128085e9e22bSdrh    SELECT lower((SELECT z FROM t2 EXCEPT SELECT c FROM t1 ORDER BY 1));
128185e9e22bSdrh  }
128285e9e22bSdrh} {m}
128385e9e22bSdrhdo_test selectA-3.97 {
128485e9e22bSdrh  execsql {
128585e9e22bSdrh    SELECT upper((SELECT x FROM (
128685e9e22bSdrh      SELECT x,y,z FROM t2
128785e9e22bSdrh      INTERSECT SELECT a,b,c FROM t3
128885e9e22bSdrh      EXCEPT SELECT c,b,a FROM t1
128985e9e22bSdrh      UNION SELECT a,b,c FROM t3
129085e9e22bSdrh      INTERSECT SELECT a,b,c FROM t3
129185e9e22bSdrh      EXCEPT SELECT c,b,a FROM t1
129285e9e22bSdrh      UNION SELECT a,b,c FROM t3
129385e9e22bSdrh      ORDER BY y COLLATE NOCASE DESC,x,z)))
129485e9e22bSdrh  }
129585e9e22bSdrh} {MAD}
1296a6e3a8c9Sdrhdo_execsql_test selectA-3.98 {
1297a6e3a8c9Sdrh  WITH RECURSIVE
1298a6e3a8c9Sdrh    xyz(n) AS (
1299a6e3a8c9Sdrh      SELECT upper((SELECT x FROM (
1300a6e3a8c9Sdrh        SELECT x,y,z FROM t2
1301a6e3a8c9Sdrh        INTERSECT SELECT a,b,c FROM t3
1302a6e3a8c9Sdrh        EXCEPT SELECT c,b,a FROM t1
1303a6e3a8c9Sdrh        UNION SELECT a,b,c FROM t3
1304a6e3a8c9Sdrh        INTERSECT SELECT a,b,c FROM t3
1305a6e3a8c9Sdrh        EXCEPT SELECT c,b,a FROM t1
1306a6e3a8c9Sdrh        UNION SELECT a,b,c FROM t3
1307a6e3a8c9Sdrh        ORDER BY y COLLATE NOCASE DESC,x,z)))
1308a6e3a8c9Sdrh      UNION ALL
1309a6e3a8c9Sdrh      SELECT n || '+' FROM xyz WHERE length(n)<5
1310a6e3a8c9Sdrh    )
1311a6e3a8c9Sdrh  SELECT n FROM xyz ORDER BY +n;
1312a6e3a8c9Sdrh} {MAD MAD+ MAD++}
1313fae37af1Sdrh
131438524132Sdan#-------------------------------------------------------------------------
131538524132Sdan# At one point the following code exposed a temp register reuse problem.
131638524132Sdan#
131738524132Sdanproc f {args} { return 1 }
131838524132Sdandb func f f
131938524132Sdan
132038524132Sdando_execsql_test 4.1.1 {
132138524132Sdan  CREATE TABLE t4(a, b);
132238524132Sdan  CREATE TABLE t5(c, d);
132338524132Sdan
132438524132Sdan  INSERT INTO t5 VALUES(1, 'x');
132538524132Sdan  INSERT INTO t5 VALUES(2, 'x');
132638524132Sdan  INSERT INTO t4 VALUES(3, 'x');
132738524132Sdan  INSERT INTO t4 VALUES(4, 'x');
132838524132Sdan
132938524132Sdan  CREATE INDEX i1 ON t4(a);
133038524132Sdan  CREATE INDEX i2 ON t5(c);
133138524132Sdan}
133238524132Sdan
133338524132Sdando_eqp_test 4.1.2 {
133438524132Sdan  SELECT c, d FROM t5
133538524132Sdan  UNION ALL
133638524132Sdan  SELECT a, b FROM t4 WHERE f()==f()
133738524132Sdan  ORDER BY 1,2
133838524132Sdan} {
1339b3f0276bSdrh  QUERY PLAN
1340b3f0276bSdrh  `--MERGE (UNION ALL)
1341b3f0276bSdrh     |--LEFT
13428210233cSdrh     |  |--SCAN t5 USING INDEX i2
1343b3f0276bSdrh     |  `--USE TEMP B-TREE FOR RIGHT PART OF ORDER BY
1344b3f0276bSdrh     `--RIGHT
13458210233cSdrh        |--SCAN t4 USING INDEX i1
1346b3f0276bSdrh        `--USE TEMP B-TREE FOR RIGHT PART OF ORDER BY
134738524132Sdan}
134838524132Sdan
134938524132Sdando_execsql_test 4.1.3 {
135038524132Sdan  SELECT c, d FROM t5
135138524132Sdan  UNION ALL
135238524132Sdan  SELECT a, b FROM t4 WHERE f()==f()
135338524132Sdan  ORDER BY 1,2
135438524132Sdan} {
135538524132Sdan  1 x 2 x 3 x 4 x
135638524132Sdan}
135738524132Sdan
135838524132Sdando_execsql_test 4.2.1 {
135938524132Sdan  CREATE TABLE t6(a, b);
136038524132Sdan  CREATE TABLE t7(c, d);
136138524132Sdan
136238524132Sdan  INSERT INTO t7 VALUES(2, 9);
136338524132Sdan  INSERT INTO t6 VALUES(3, 0);
136438524132Sdan  INSERT INTO t6 VALUES(4, 1);
136538524132Sdan  INSERT INTO t7 VALUES(5, 6);
136638524132Sdan  INSERT INTO t6 VALUES(6, 0);
136738524132Sdan  INSERT INTO t7 VALUES(7, 6);
136838524132Sdan
136938524132Sdan  CREATE INDEX i6 ON t6(a);
137038524132Sdan  CREATE INDEX i7 ON t7(c);
137138524132Sdan}
137238524132Sdan
137338524132Sdando_execsql_test 4.2.2 {
137438524132Sdan  SELECT c, f(d,c,d,c,d) FROM t7
137538524132Sdan  UNION ALL
137638524132Sdan  SELECT a, b FROM t6
137738524132Sdan  ORDER BY 1,2
137838524132Sdan} {/2 . 3 . 4 . 5 . 6 . 7 ./}
137938524132Sdan
138038524132Sdan
1381b33c50f2Sdanproc strip_rnd {explain} {
1382b33c50f2Sdan  regexp -all {sqlite_sq_[0123456789ABCDEF]*} $explain sqlite_sq
1383b33c50f2Sdan}
1384b33c50f2Sdan
1385b33c50f2Sdanproc do_same_test {tn q1 args} {
1386b33c50f2Sdan  set r2 [strip_rnd [db eval "EXPLAIN $q1"]]
1387b33c50f2Sdan  set i 1
1388b33c50f2Sdan  foreach q $args {
1389b33c50f2Sdan    set tst [subst -nocommands {strip_rnd [db eval "EXPLAIN $q"]}]
1390b33c50f2Sdan    uplevel do_test $tn.$i [list $tst] [list $r2]
1391b33c50f2Sdan    incr i
1392b33c50f2Sdan  }
1393b33c50f2Sdan}
1394b33c50f2Sdan
1395b33c50f2Sdando_execsql_test 5.0 {
1396b33c50f2Sdan  CREATE TABLE t8(a, b);
1397b33c50f2Sdan  CREATE TABLE t9(c, d);
1398b33c50f2Sdan} {}
1399b33c50f2Sdan
1400b33c50f2Sdando_same_test 5.1 {
1401b33c50f2Sdan  SELECT a, b FROM t8 INTERSECT SELECT c, d FROM t9 ORDER BY a;
1402b33c50f2Sdan} {
1403b33c50f2Sdan  SELECT a, b FROM t8 INTERSECT SELECT c, d FROM t9 ORDER BY t8.a;
1404b33c50f2Sdan} {
1405b33c50f2Sdan  SELECT a, b FROM t8 INTERSECT SELECT c, d FROM t9 ORDER BY 1;
1406b33c50f2Sdan} {
1407b33c50f2Sdan  SELECT a, b FROM t8 INTERSECT SELECT c, d FROM t9 ORDER BY c;
1408b33c50f2Sdan} {
1409b33c50f2Sdan  SELECT a, b FROM t8 INTERSECT SELECT c, d FROM t9 ORDER BY t9.c;
1410b33c50f2Sdan}
1411b33c50f2Sdan
1412b33c50f2Sdando_same_test 5.2 {
1413b33c50f2Sdan  SELECT a, b FROM t8 UNION SELECT c, d FROM t9 ORDER BY a COLLATE NOCASE
1414b33c50f2Sdan} {
1415b33c50f2Sdan  SELECT a, b FROM t8 UNION SELECT c, d FROM t9 ORDER BY t8.a COLLATE NOCASE
1416b33c50f2Sdan} {
1417b33c50f2Sdan  SELECT a, b FROM t8 UNION SELECT c, d FROM t9 ORDER BY 1 COLLATE NOCASE
1418b33c50f2Sdan} {
1419b33c50f2Sdan  SELECT a, b FROM t8 UNION SELECT c, d FROM t9 ORDER BY c COLLATE NOCASE
1420b33c50f2Sdan} {
1421b33c50f2Sdan  SELECT a, b FROM t8 UNION SELECT c, d FROM t9 ORDER BY t9.c COLLATE NOCASE
1422b33c50f2Sdan}
1423b33c50f2Sdan
1424b33c50f2Sdando_same_test 5.3 {
1425b33c50f2Sdan  SELECT a, b FROM t8 EXCEPT SELECT c, d FROM t9 ORDER BY b, c COLLATE NOCASE
1426b33c50f2Sdan} {
1427b33c50f2Sdan  SELECT a, b FROM t8 EXCEPT SELECT c, d FROM t9 ORDER BY 2, 1 COLLATE NOCASE
1428b33c50f2Sdan} {
1429b33c50f2Sdan  SELECT a, b FROM t8 EXCEPT SELECT c, d FROM t9 ORDER BY d, a COLLATE NOCASE
1430b33c50f2Sdan} {
1431b33c50f2Sdan  SELECT a, b FROM t8 EXCEPT SELECT * FROM t9 ORDER BY t9.d, c COLLATE NOCASE
1432b33c50f2Sdan} {
1433b33c50f2Sdan  SELECT * FROM t8 EXCEPT SELECT c, d FROM t9 ORDER BY d, t8.a COLLATE NOCASE
1434b33c50f2Sdan}
1435b33c50f2Sdan
1436b33c50f2Sdando_catchsql_test 5.4 {
1437b33c50f2Sdan  SELECT * FROM t8 UNION SELECT * FROM t9 ORDER BY a+b COLLATE NOCASE
1438b33c50f2Sdan} {1 {1st ORDER BY term does not match any column in the result set}}
1439b33c50f2Sdan
14404b37cd49Sdrhdo_execsql_test 6.1 {
14414b37cd49Sdrh  DROP TABLE IF EXISTS t1;
14424b37cd49Sdrh  DROP TABLE IF EXISTS t2;
14434b37cd49Sdrh  CREATE TABLE t1(a INTEGER);
14444b37cd49Sdrh  CREATE TABLE t2(b TEXT);
14454b37cd49Sdrh  INSERT INTO t2(b) VALUES('12345');
14464b37cd49Sdrh  SELECT * FROM (SELECT a FROM t1 UNION SELECT b FROM t2) WHERE a=a;
14474b37cd49Sdrh} {12345}
14484b37cd49Sdrh
1449b7cbf5c1Sdrh# 2020-06-15 ticket 8f157e8010b22af0
1450b7cbf5c1Sdrh#
1451b7cbf5c1Sdrhreset_db
1452b7cbf5c1Sdrhdo_execsql_test 7.1 {
1453b7cbf5c1Sdrh  CREATE TABLE t1(c1);     INSERT INTO t1 VALUES(12),(123),(1234),(NULL),('abc');
1454b7cbf5c1Sdrh  CREATE TABLE t2(c2);     INSERT INTO t2 VALUES(44),(55),(123);
1455b7cbf5c1Sdrh  CREATE TABLE t3(c3,c4);  INSERT INTO t3 VALUES(66,1),(123,2),(77,3);
1456b7cbf5c1Sdrh  CREATE VIEW t4 AS SELECT c3 FROM t3;
1457b7cbf5c1Sdrh  CREATE VIEW t5 AS SELECT c3 FROM t3 ORDER BY c4;
1458b7cbf5c1Sdrh}
1459b7cbf5c1Sdrhdo_execsql_test 7.2 {
1460b7cbf5c1Sdrh  SELECT * FROM t1, t2 WHERE c1=(SELECT 123 INTERSECT SELECT c2 FROM t4) AND c1=123;
1461b7cbf5c1Sdrh} {123 123}
1462b7cbf5c1Sdrhdo_execsql_test 7.3 {
1463b7cbf5c1Sdrh  SELECT * FROM t1, t2 WHERE c1=(SELECT 123 INTERSECT SELECT c2 FROM t5) AND c1=123;
1464b7cbf5c1Sdrh} {123 123}
1465b7cbf5c1Sdrhdo_execsql_test 7.4 {
1466b7cbf5c1Sdrh  CREATE TABLE a(b);
1467b7cbf5c1Sdrh  CREATE VIEW c(d) AS SELECT b FROM a ORDER BY b;
1468b7cbf5c1Sdrh  SELECT sum(d) OVER( PARTITION BY(SELECT 0 FROM c JOIN a WHERE b =(SELECT b INTERSECT SELECT d FROM c) AND b = 123)) FROM c;
1469b7cbf5c1Sdrh} {}
1470b33c50f2Sdan
1471cd0b2459Sdan#-------------------------------------------------------------------------
1472cd0b2459Sdanreset_db
1473cd0b2459Sdando_execsql_test 8.0 {
1474cd0b2459Sdan  CREATE TABLE x1(x);
1475cd0b2459Sdan  CREATE TABLE t1(a, b, c, d);
1476cd0b2459Sdan  CREATE INDEX t1a ON t1(a);
1477cd0b2459Sdan  CREATE INDEX t1b ON t1(b);
1478cd0b2459Sdan}
1479cd0b2459Sdan
1480cd0b2459Sdando_execsql_test 8.1 {
1481cd0b2459Sdan      SELECT 'ABCD' FROM t1
1482cd0b2459Sdan      WHERE (a=? OR b=?)
1483cd0b2459Sdan      AND (0 OR (SELECT 'xyz' INTERSECT SELECT a ORDER BY 1))
1484cd0b2459Sdan} {}
1485cd0b2459Sdan
1486*195687f1Sdan#-------------------------------------------------------------------------
1487*195687f1Sdan# dbsqlfuzz a34f455c91ad75a0cf8cd9476841903f42930a7a
1488*195687f1Sdan#
1489*195687f1Sdanreset_db
1490*195687f1Sdando_execsql_test 9.0 {
1491*195687f1Sdan  CREATE TABLE t1(a COLLATE nocase);
1492*195687f1Sdan  CREATE TABLE t2(b COLLATE nocase);
1493*195687f1Sdan
1494*195687f1Sdan  INSERT INTO t1 VALUES('ABC');
1495*195687f1Sdan  INSERT INTO t2 VALUES('abc');
1496*195687f1Sdan}
1497*195687f1Sdan
1498*195687f1Sdando_execsql_test 9.1 {
1499*195687f1Sdan  SELECT a FROM t1 INTERSECT SELECT b FROM t2;
1500*195687f1Sdan} {ABC}
1501*195687f1Sdan
1502*195687f1Sdando_execsql_test 9.2 {
1503*195687f1Sdan  SELECT * FROM (
1504*195687f1Sdan      SELECT a FROM t1 INTERSECT SELECT b FROM t2
1505*195687f1Sdan  ) WHERE a||'' = 'ABC';
1506*195687f1Sdan} {ABC}
1507*195687f1Sdan
1508*195687f1Sdan
1509*195687f1Sdan
1510fae37af1Sdrhfinish_test
1511