selectA.test 39 KB

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