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