File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / selectA.test
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:04:16 2012 UTC (12 years, 10 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>