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.3 2008/06/25 14:31:53 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} 633 634 635do_test selectA-3.0 { 636 execsql { 637 CREATE UNIQUE INDEX t1a ON t1(a); 638 CREATE UNIQUE INDEX t1b ON t1(b); 639 CREATE UNIQUE INDEX t1c ON t1(c); 640 CREATE UNIQUE INDEX t2x ON t2(x); 641 CREATE UNIQUE INDEX t2y ON t2(y); 642 CREATE UNIQUE INDEX t2z ON t2(z); 643 SELECT name FROM sqlite_master WHERE type='index' 644 } 645} {t1a t1b t1c t2x t2y t2z} 646do_test selectA-3.1 { 647 execsql { 648 SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2 649 ORDER BY a,b,c 650 } 651} {{} 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} 652do_test selectA-3.2 { 653 execsql { 654 SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2 655 ORDER BY a DESC,b,c 656 } 657} {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} 658do_test selectA-3.3 { 659 execsql { 660 SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2 661 ORDER BY a,c,b 662 } 663} {{} 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} 664do_test selectA-3.4 { 665 execsql { 666 SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2 667 ORDER BY b,a,c 668 } 669} {{} 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} 670do_test selectA-3.5 { 671 execsql { 672 SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2 673 ORDER BY b COLLATE NOCASE,a,c 674 } 675} {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} 676do_test selectA-3.6 { 677 execsql { 678 SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2 679 ORDER BY b COLLATE NOCASE DESC,a,c 680 } 681} {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} 682do_test selectA-3.7 { 683 execsql { 684 SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2 685 ORDER BY c,b,a 686 } 687} {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} 688do_test selectA-3.8 { 689 execsql { 690 SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2 691 ORDER BY c,a,b 692 } 693} {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} 694do_test selectA-3.9 { 695 execsql { 696 SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2 697 ORDER BY c DESC,a,b 698 } 699} {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} 700do_test selectA-3.10 { 701 execsql { 702 SELECT a,b,c FROM t1 UNION ALL SELECT x,y,z FROM t2 703 ORDER BY c COLLATE BINARY DESC,a,b 704 } 705} {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} 706do_test selectA-3.11 { 707 execsql { 708 SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1 709 ORDER BY a,b,c 710 } 711} {{} 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} 712do_test selectA-3.12 { 713 execsql { 714 SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1 715 ORDER BY a DESC,b,c 716 } 717} {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} 718do_test selectA-3.13 { 719 execsql { 720 SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1 721 ORDER BY a,c,b 722 } 723} {{} 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} 724do_test selectA-3.14 { 725 execsql { 726 SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1 727 ORDER BY b,a,c 728 } 729} {{} 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} 730do_test selectA-3.15 { 731 execsql { 732 SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1 733 ORDER BY b COLLATE NOCASE,a,c 734 } 735} {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} 736do_test selectA-3.16 { 737 execsql { 738 SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1 739 ORDER BY b COLLATE NOCASE DESC,a,c 740 } 741} {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} 742do_test selectA-3.17 { 743 execsql { 744 SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1 745 ORDER BY c,b,a 746 } 747} {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} 748do_test selectA-3.18 { 749 execsql { 750 SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1 751 ORDER BY c,a,b 752 } 753} {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} 754do_test selectA-3.19 { 755 execsql { 756 SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1 757 ORDER BY c DESC,a,b 758 } 759} {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} 760do_test selectA-3.20 { 761 execsql { 762 SELECT x,y,z FROM t2 UNION ALL SELECT a,b,c FROM t1 763 ORDER BY c COLLATE BINARY DESC,a,b 764 } 765} {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} 766do_test selectA-3.21 { 767 execsql { 768 SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2 769 ORDER BY a,b,c 770 } 771} {{} 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} 772do_test selectA-3.22 { 773 execsql { 774 SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2 775 ORDER BY a DESC,b,c 776 } 777} {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} 778do_test selectA-3.23 { 779 execsql { 780 SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2 781 ORDER BY a,c,b 782 } 783} {{} 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} 784do_test selectA-3.24 { 785 execsql { 786 SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2 787 ORDER BY b,a,c 788 } 789} {{} 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} 790do_test selectA-3.25 { 791 execsql { 792 SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2 793 ORDER BY b COLLATE NOCASE,a,c 794 } 795} {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} 796do_test selectA-3.26 { 797 execsql { 798 SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2 799 ORDER BY b COLLATE NOCASE DESC,a,c 800 } 801} {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} 802do_test selectA-3.27 { 803 execsql { 804 SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2 805 ORDER BY c,b,a 806 } 807} {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} 808do_test selectA-3.28 { 809 execsql { 810 SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2 811 ORDER BY c,a,b 812 } 813} {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} 814do_test selectA-3.29 { 815 execsql { 816 SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2 817 ORDER BY c DESC,a,b 818 } 819} {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} 820do_test selectA-3.30 { 821 execsql { 822 SELECT a,b,c FROM t1 UNION SELECT x,y,z FROM t2 823 ORDER BY c COLLATE BINARY DESC,a,b 824 } 825} {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} 826do_test selectA-3.31 { 827 execsql { 828 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 829 ORDER BY a,b,c 830 } 831} {{} 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} 832do_test selectA-3.32 { 833 execsql { 834 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 835 ORDER BY a DESC,b,c 836 } 837} {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} 838do_test selectA-3.33 { 839 execsql { 840 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 841 ORDER BY a,c,b 842 } 843} {{} 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} 844do_test selectA-3.34 { 845 execsql { 846 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 847 ORDER BY b,a,c 848 } 849} {{} 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} 850do_test selectA-3.35 { 851 execsql { 852 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 853 ORDER BY b COLLATE NOCASE,a,c 854 } 855} {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} 856do_test selectA-3.36 { 857 execsql { 858 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 859 ORDER BY b COLLATE NOCASE DESC,a,c 860 } 861} {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} 862do_test selectA-3.37 { 863 execsql { 864 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 865 ORDER BY c,b,a 866 } 867} {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} 868do_test selectA-3.38 { 869 execsql { 870 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 871 ORDER BY c,a,b 872 } 873} {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} 874do_test selectA-3.39 { 875 execsql { 876 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 877 ORDER BY c DESC,a,b 878 } 879} {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} 880do_test selectA-3.40 { 881 execsql { 882 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 883 ORDER BY c COLLATE BINARY DESC,a,b 884 } 885} {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} 886do_test selectA-3.41 { 887 execsql { 888 SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d' 889 ORDER BY a,b,c 890 } 891} {{} C c 1 a a 9.9 b B} 892do_test selectA-3.42 { 893 execsql { 894 SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d' 895 ORDER BY a,b,c 896 } 897} {hello d D abc e e} 898do_test selectA-3.43 { 899 execsql { 900 SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1 901 ORDER BY a,b,c 902 } 903} {hello d D abc e e} 904do_test selectA-3.44 { 905 execsql { 906 SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d' 907 ORDER BY a,b,c 908 } 909} {hello d D abc e e} 910do_test selectA-3.45 { 911 execsql { 912 SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d' 913 ORDER BY a,b,c 914 } 915} {{} C c 1 a a 9.9 b B} 916do_test selectA-3.46 { 917 execsql { 918 SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1 919 ORDER BY a,b,c 920 } 921} {{} C c 1 a a 9.9 b B} 922do_test selectA-3.47 { 923 execsql { 924 SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d' 925 ORDER BY a DESC 926 } 927} {9.9 b B 1 a a {} C c} 928do_test selectA-3.48 { 929 execsql { 930 SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d' 931 ORDER BY a DESC 932 } 933} {abc e e hello d D} 934do_test selectA-3.49 { 935 execsql { 936 SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1 937 ORDER BY a DESC 938 } 939} {abc e e hello d D} 940do_test selectA-3.50 { 941 execsql { 942 SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d' 943 ORDER BY a DESC 944 } 945} {abc e e hello d D} 946do_test selectA-3.51 { 947 execsql { 948 SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d' 949 ORDER BY a DESC 950 } 951} {9.9 b B 1 a a {} C c} 952do_test selectA-3.52 { 953 execsql { 954 SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1 955 ORDER BY a DESC 956 } 957} {9.9 b B 1 a a {} C c} 958do_test selectA-3.53 { 959 execsql { 960 SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d' 961 ORDER BY b, a DESC 962 } 963} {{} C c 1 a a 9.9 b B} 964do_test selectA-3.54 { 965 execsql { 966 SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d' 967 ORDER BY b 968 } 969} {hello d D abc e e} 970do_test selectA-3.55 { 971 execsql { 972 SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1 973 ORDER BY b DESC, c 974 } 975} {abc e e hello d D} 976do_test selectA-3.56 { 977 execsql { 978 SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d' 979 ORDER BY b, c DESC, a 980 } 981} {hello d D abc e e} 982do_test selectA-3.57 { 983 execsql { 984 SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d' 985 ORDER BY b COLLATE NOCASE 986 } 987} {1 a a 9.9 b B {} C c} 988do_test selectA-3.58 { 989 execsql { 990 SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1 991 ORDER BY b 992 } 993} {{} C c 1 a a 9.9 b B} 994do_test selectA-3.59 { 995 execsql { 996 SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d' 997 ORDER BY c, a DESC 998 } 999} {1 a a 9.9 b B {} C c} 1000do_test selectA-3.60 { 1001 execsql { 1002 SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b>='d' 1003 ORDER BY c 1004 } 1005} {hello d D abc e e} 1006do_test selectA-3.61 { 1007 execsql { 1008 SELECT a,b,c FROM t1 WHERE b>='d' INTERSECT SELECT a,b,c FROM t1 1009 ORDER BY c COLLATE BINARY, b DESC, c, a, b, c, a, b, c 1010 } 1011} {hello d D abc e e} 1012do_test selectA-3.62 { 1013 execsql { 1014 SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d' 1015 ORDER BY c DESC, a 1016 } 1017} {abc e e hello d D} 1018do_test selectA-3.63 { 1019 execsql { 1020 SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d' 1021 ORDER BY c COLLATE NOCASE 1022 } 1023} {1 a a 9.9 b B {} C c} 1024do_test selectA-3.64 { 1025 execsql { 1026 SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1 1027 ORDER BY c 1028 } 1029} {1 a a 9.9 b B {} C c} 1030do_test selectA-3.65 { 1031 execsql { 1032 SELECT a,b,c FROM t3 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d' 1033 ORDER BY c COLLATE NOCASE 1034 } 1035} {1 a a 9.9 b B {} C c} 1036do_test selectA-3.66 { 1037 execsql { 1038 SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t3 1039 ORDER BY c 1040 } 1041} {1 a a 9.9 b B {} C c} 1042do_test selectA-3.67 { 1043 execsql { 1044 SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t3 WHERE b<'d' 1045 ORDER BY c DESC, a 1046 } 1047} {abc e e hello d D} 1048do_test selectA-3.68 { 1049 execsql { 1050 SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b<'d' 1051 INTERSECT SELECT a,b,c FROM t3 1052 EXCEPT SELECT b,c,a FROM t3 1053 ORDER BY c DESC, a 1054 } 1055} {abc e e hello d D} 1056do_test selectA-3.69 { 1057 execsql { 1058 SELECT a,b,c FROM t1 INTERSECT SELECT a,b,c FROM t1 WHERE b<'d' 1059 INTERSECT SELECT a,b,c FROM t3 1060 EXCEPT SELECT b,c,a FROM t3 1061 ORDER BY c COLLATE NOCASE 1062 } 1063} {1 a a 9.9 b B {} C c} 1064do_test selectA-3.70 { 1065 execsql { 1066 SELECT a,b,c FROM t1 WHERE b<'d' INTERSECT SELECT a,b,c FROM t1 1067 INTERSECT SELECT a,b,c FROM t3 1068 EXCEPT SELECT b,c,a FROM t3 1069 ORDER BY c 1070 } 1071} {1 a a 9.9 b B {} C c} 1072do_test selectA-3.71 { 1073 execsql { 1074 SELECT a,b,c FROM t1 WHERE b<'d' 1075 INTERSECT SELECT a,b,c FROM t1 1076 INTERSECT SELECT a,b,c FROM t3 1077 EXCEPT SELECT b,c,a FROM t3 1078 INTERSECT SELECT a,b,c FROM t1 1079 EXCEPT SELECT x,y,z FROM t2 1080 INTERSECT SELECT a,b,c FROM t3 1081 EXCEPT SELECT y,x,z FROM t2 1082 INTERSECT SELECT a,b,c FROM t1 1083 EXCEPT SELECT c,b,a FROM t3 1084 ORDER BY c 1085 } 1086} {1 a a 9.9 b B {} C c} 1087do_test selectA-3.72 { 1088 execsql { 1089 SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2 1090 ORDER BY a,b,c 1091 } 1092} {{} 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} 1093do_test selectA-3.73 { 1094 execsql { 1095 SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2 1096 ORDER BY a DESC,b,c 1097 } 1098} {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} 1099do_test selectA-3.74 { 1100 execsql { 1101 SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2 1102 ORDER BY a,c,b 1103 } 1104} {{} 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} 1105do_test selectA-3.75 { 1106 execsql { 1107 SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2 1108 ORDER BY b,a,c 1109 } 1110} {{} 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} 1111do_test selectA-3.76 { 1112 execsql { 1113 SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2 1114 ORDER BY b COLLATE NOCASE,a,c 1115 } 1116} {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} 1117do_test selectA-3.77 { 1118 execsql { 1119 SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2 1120 ORDER BY b COLLATE NOCASE DESC,a,c 1121 } 1122} {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} 1123do_test selectA-3.78 { 1124 execsql { 1125 SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2 1126 ORDER BY c,b,a 1127 } 1128} {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} 1129do_test selectA-3.79 { 1130 execsql { 1131 SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2 1132 ORDER BY c,a,b 1133 } 1134} {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} 1135do_test selectA-3.80 { 1136 execsql { 1137 SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2 1138 ORDER BY c DESC,a,b 1139 } 1140} {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} 1141do_test selectA-3.81 { 1142 execsql { 1143 SELECT a,b,c FROM t3 UNION SELECT x,y,z FROM t2 1144 ORDER BY c COLLATE BINARY DESC,a,b 1145 } 1146} {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} 1147do_test selectA-3.82 { 1148 execsql { 1149 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 1150 ORDER BY a,b,c 1151 } 1152} {{} 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} 1153do_test selectA-3.83 { 1154 execsql { 1155 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 1156 ORDER BY a DESC,b,c 1157 } 1158} {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} 1159do_test selectA-3.84 { 1160 execsql { 1161 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 1162 ORDER BY a,c,b 1163 } 1164} {{} 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} 1165do_test selectA-3.85 { 1166 execsql { 1167 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 1168 ORDER BY b,a,c 1169 } 1170} {{} 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} 1171do_test selectA-3.86 { 1172 execsql { 1173 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 1174 ORDER BY b COLLATE NOCASE,a,c 1175 } 1176} {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} 1177do_test selectA-3.87 { 1178 execsql { 1179 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 1180 ORDER BY y COLLATE NOCASE DESC,x,z 1181 } 1182} {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} 1183do_test selectA-3.88 { 1184 execsql { 1185 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 1186 ORDER BY c,b,a 1187 } 1188} {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} 1189do_test selectA-3.89 { 1190 execsql { 1191 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 1192 ORDER BY c,a,b 1193 } 1194} {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} 1195do_test selectA-3.90 { 1196 execsql { 1197 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 1198 ORDER BY c DESC,a,b 1199 } 1200} {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} 1201do_test selectA-3.91 { 1202 execsql { 1203 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 1204 ORDER BY c COLLATE BINARY DESC,a,b 1205 } 1206} {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} 1207do_test selectA-3.92 { 1208 execsql { 1209 SELECT x,y,z FROM t2 1210 INTERSECT SELECT a,b,c FROM t3 1211 EXCEPT SELECT c,b,a FROM t1 1212 UNION SELECT a,b,c FROM t3 1213 INTERSECT SELECT a,b,c FROM t3 1214 EXCEPT SELECT c,b,a FROM t1 1215 UNION SELECT a,b,c FROM t3 1216 ORDER BY y COLLATE NOCASE DESC,x,z 1217 } 1218} {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} 1219 1220 1221finish_test 1222