/ Hex Artifact Content
Login

Artifact b8a590f6493cad5b0bb4dfe1709bf7dcda0b6c40bb4caf32d1e36a89eebc8fc5:


0000: 23 20 32 30 30 38 20 4a 75 6e 65 20 32 34 0a 23  # 2008 June 24.#
0010: 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20 64 69  .# The author di
0020: 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68  sclaims copyrigh
0030: 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65  t to this source
0040: 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65   code.  In place
0050: 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e 6f   of.# a legal no
0060: 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 20  tice, here is a 
0070: 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 20  blessing:.#.#   
0080: 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64   May you do good
0090: 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 23   and not evil..#
00a0: 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64      May you find
00b0: 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72   forgiveness for
00c0: 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f   yourself and fo
00d0: 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 20  rgive others..# 
00e0: 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65     May you share
00f0: 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74   freely, never t
0100: 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20  aking more than 
0110: 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a 2a  you give..#.#***
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 0a 23 20 54 68 69 73 20 66 69 6c 65  ****.# This file
0170: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 72 65 67 72   implements regr
0180: 65 73 73 69 6f 6e 20 74 65 73 74 73 20 66 6f 72  ession tests for
0190: 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72 79 2e   SQLite library.
01a0: 20 0a 23 0a 23 20 54 68 65 20 66 6f 63 75 73 20   .#.# The focus 
01b0: 6f 66 20 74 68 69 73 20 66 69 6c 65 20 69 73 20  of this file is 
01c0: 74 65 73 74 69 6e 67 20 74 68 65 20 63 6f 6d 70  testing the comp
01d0: 6f 75 6e 64 2d 53 45 4c 45 43 54 20 6d 65 72 67  ound-SELECT merg
01e0: 65 0a 23 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e  e.# optimization
01f0: 2e 20 20 4f 72 2c 20 69 6e 20 6f 74 68 65 72 20  .  Or, in other 
0200: 77 6f 72 64 73 2c 20 6d 61 6b 69 6e 67 20 73 75  words, making su
0210: 72 65 20 74 68 61 74 20 61 6c 6c 0a 23 20 70 6f  re that all.# po
0220: 73 73 69 62 6c 65 20 63 6f 6d 62 69 6e 61 74 69  ssible combinati
0230: 6f 6e 73 20 6f 66 20 55 4e 49 4f 4e 2c 20 55 4e  ons of UNION, UN
0240: 49 4f 4e 20 41 4c 4c 2c 20 45 58 43 45 50 54 2c  ION ALL, EXCEPT,
0250: 20 61 6e 64 0a 23 20 49 4e 54 45 52 53 45 43 54   and.# INTERSECT
0260: 20 77 6f 72 6b 20 74 6f 67 65 74 68 65 72 20 77   work together w
0270: 69 74 68 20 61 6e 20 4f 52 44 45 52 20 42 59 20  ith an ORDER BY 
0280: 63 6c 61 75 73 65 20 28 77 69 74 68 20 6f 72 20  clause (with or 
0290: 77 2f 6f 0a 23 20 65 78 70 6c 69 63 69 74 20 73  w/o.# explicit s
02a0: 6f 72 74 20 6f 72 64 65 72 20 61 6e 64 20 65 78  ort order and ex
02b0: 70 6c 69 63 69 74 20 63 6f 6c 6c 61 74 69 6e 67  plicit collating
02c0: 20 73 65 63 71 75 69 74 65 73 29 20 61 6e 64 0a   secquites) and.
02d0: 23 20 77 69 74 68 20 61 6e 64 20 77 69 74 68 6f  # with and witho
02e0: 75 74 20 6f 70 74 69 6f 6e 61 6c 20 4c 49 4d 49  ut optional LIMI
02f0: 54 20 61 6e 64 20 4f 46 46 53 45 54 20 63 6c 61  T and OFFSET cla
0300: 75 73 65 73 2e 0a 23 0a 23 20 24 49 64 3a 20 73  uses..#.# $Id: s
0310: 65 6c 65 63 74 41 2e 74 65 73 74 2c 76 20 31 2e  electA.test,v 1.
0320: 36 20 32 30 30 38 2f 30 38 2f 32 31 20 31 34 3a  6 2008/08/21 14:
0330: 32 34 3a 32 39 20 64 72 68 20 45 78 70 20 24 0a  24:29 drh Exp $.
0340: 0a 73 65 74 20 74 65 73 74 64 69 72 20 5b 66 69  .set testdir [fi
0350: 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 72 67 76  le dirname $argv
0360: 30 5d 0a 73 6f 75 72 63 65 20 24 74 65 73 74 64  0].source $testd
0370: 69 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a 73 65  ir/tester.tcl.se
0380: 74 20 74 65 73 74 70 72 65 66 69 78 20 73 65 6c  t testprefix sel
0390: 65 63 74 41 0a 0a 69 66 63 61 70 61 62 6c 65 20  ectA..ifcapable 
03a0: 21 63 6f 6d 70 6f 75 6e 64 20 7b 0a 20 20 66 69  !compound {.  fi
03b0: 6e 69 73 68 5f 74 65 73 74 0a 20 20 72 65 74 75  nish_test.  retu
03c0: 72 6e 0a 7d 0a 0a 64 6f 5f 74 65 73 74 20 73 65  rn.}..do_test se
03d0: 6c 65 63 74 41 2d 31 2e 30 20 7b 0a 20 20 65 78  lectA-1.0 {.  ex
03e0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41  ecsql {.    CREA
03f0: 54 45 20 54 41 42 4c 45 20 74 31 28 61 2c 62 2c  TE TABLE t1(a,b,
0400: 63 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45  c COLLATE NOCASE
0410: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
0420: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 31 2c 27  TO t1 VALUES(1,'
0430: 61 27 2c 27 61 27 29 3b 0a 20 20 20 20 49 4e 53  a','a');.    INS
0440: 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55  ERT INTO t1 VALU
0450: 45 53 28 39 2e 39 2c 20 27 62 27 2c 20 27 42 27  ES(9.9, 'b', 'B'
0460: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
0470: 54 4f 20 74 31 20 56 41 4c 55 45 53 28 4e 55 4c  TO t1 VALUES(NUL
0480: 4c 2c 20 27 43 27 2c 20 27 63 27 29 3b 0a 20 20  L, 'C', 'c');.  
0490: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
04a0: 20 56 41 4c 55 45 53 28 27 68 65 6c 6c 6f 27 2c   VALUES('hello',
04b0: 20 27 64 27 2c 20 27 44 27 29 3b 0a 20 20 20 20   'd', 'D');.    
04c0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
04d0: 41 4c 55 45 53 28 78 27 36 31 36 32 36 33 27 2c  ALUES(x'616263',
04e0: 20 27 65 27 2c 20 27 65 27 29 3b 0a 20 20 20 20   'e', 'e');.    
04f0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
0500: 3b 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39  ;.  }.} {1 a a 9
0510: 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 20 68 65  .9 b B {} C c he
0520: 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65 7d  llo d D abc e e}
0530: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
0540: 2d 31 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  -1.1 {.  execsql
0550: 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54 41   {.    CREATE TA
0560: 42 4c 45 20 74 32 28 78 2c 79 2c 7a 20 43 4f 4c  BLE t2(x,y,z COL
0570: 4c 41 54 45 20 4e 4f 43 41 53 45 29 3b 0a 20 20  LATE NOCASE);.  
0580: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32    INSERT INTO t2
0590: 20 56 41 4c 55 45 53 28 4e 55 4c 4c 2c 27 55 27   VALUES(NULL,'U'
05a0: 2c 27 75 27 29 3b 0a 20 20 20 20 49 4e 53 45 52  ,'u');.    INSER
05b0: 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45 53  T INTO t2 VALUES
05c0: 28 27 6d 61 64 27 2c 20 27 5a 27 2c 20 27 7a 27  ('mad', 'Z', 'z'
05d0: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
05e0: 54 4f 20 74 32 20 56 41 4c 55 45 53 28 78 27 36  TO t2 VALUES(x'6
05f0: 38 36 31 37 32 36 35 27 2c 20 27 6d 27 2c 20 27  8617265', 'm', '
0600: 4d 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20  M');.    INSERT 
0610: 49 4e 54 4f 20 74 32 20 56 41 4c 55 45 53 28 35  INTO t2 VALUES(5
0620: 2e 32 65 36 2c 20 27 58 27 2c 20 27 78 27 29 3b  .2e6, 'X', 'x');
0630: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
0640: 20 74 32 20 56 41 4c 55 45 53 28 2d 32 33 2c 20   t2 VALUES(-23, 
0650: 27 59 27 2c 20 27 79 27 29 3b 0a 20 20 20 20 53  'Y', 'y');.    S
0660: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 32 3b  ELECT * FROM t2;
0670: 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 55 20 75 20 6d  .  }.} {{} U u m
0680: 61 64 20 5a 20 7a 20 68 61 72 65 20 6d 20 4d 20  ad Z z hare m M 
0690: 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32  5200000.0 X x -2
06a0: 33 20 59 20 79 7d 0a 64 6f 5f 74 65 73 74 20 73  3 Y y}.do_test s
06b0: 65 6c 65 63 74 41 2d 31 2e 32 20 7b 0a 20 20 65  electA-1.2 {.  e
06c0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52 45  xecsql {.    CRE
06d0: 41 54 45 20 54 41 42 4c 45 20 74 33 28 61 2c 62  ATE TABLE t3(a,b
06e0: 2c 63 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53  ,c COLLATE NOCAS
06f0: 45 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  E);.    INSERT I
0700: 4e 54 4f 20 74 33 20 53 45 4c 45 43 54 20 2a 20  NTO t3 SELECT * 
0710: 46 52 4f 4d 20 74 31 3b 0a 20 20 20 20 49 4e 53  FROM t1;.    INS
0720: 45 52 54 20 49 4e 54 4f 20 74 33 20 53 45 4c 45  ERT INTO t3 SELE
0730: 43 54 20 2a 20 46 52 4f 4d 20 74 32 3b 0a 20 20  CT * FROM t2;.  
0740: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 33    INSERT INTO t3
0750: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
0760: 31 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  1;.    INSERT IN
0770: 54 4f 20 74 33 20 53 45 4c 45 43 54 20 2a 20 46  TO t3 SELECT * F
0780: 52 4f 4d 20 74 32 3b 0a 20 20 20 20 49 4e 53 45  ROM t2;.    INSE
0790: 52 54 20 49 4e 54 4f 20 74 33 20 53 45 4c 45 43  RT INTO t3 SELEC
07a0: 54 20 2a 20 46 52 4f 4d 20 74 31 3b 0a 20 20 20  T * FROM t1;.   
07b0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20   INSERT INTO t3 
07c0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 32  SELECT * FROM t2
07d0: 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 63 6f 75  ;.    SELECT cou
07e0: 6e 74 28 2a 29 20 46 52 4f 4d 20 74 33 3b 0a 20  nt(*) FROM t3;. 
07f0: 20 7d 0a 7d 20 7b 33 30 7d 0a 0a 64 6f 5f 74 65   }.} {30}..do_te
0800: 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 31 20 7b  st selectA-2.1 {
0810: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
0820: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
0830: 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 20  OM t1 UNION ALL 
0840: 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f  SELECT x,y,z FRO
0850: 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42  M t2.    ORDER B
0860: 59 20 61 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 7b  Y a,b,c.  }.} {{
0870: 7d 20 43 20 63 20 7b 7d 20 55 20 75 20 2d 32 33  } C c {} U u -23
0880: 20 59 20 79 20 31 20 61 20 61 20 39 2e 39 20 62   Y y 1 a a 9.9 b
0890: 20 42 20 35 32 30 30 30 30 30 2e 30 20 58 20 78   B 5200000.0 X x
08a0: 20 68 65 6c 6c 6f 20 64 20 44 20 6d 61 64 20 5a   hello d D mad Z
08b0: 20 7a 20 61 62 63 20 65 20 65 20 68 61 72 65 20   z abc e e hare 
08c0: 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  m M}.do_test sel
08d0: 65 63 74 41 2d 32 2e 31 2e 31 20 7b 20 20 20 23  ectA-2.1.1 {   #
08e0: 20 54 69 63 6b 65 74 20 23 33 33 31 34 0a 20 20   Ticket #3314.  
08f0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
0900: 4c 45 43 54 20 74 31 2e 61 2c 20 74 31 2e 62 2c  LECT t1.a, t1.b,
0910: 20 74 31 2e 63 20 46 52 4f 4d 20 74 31 20 55 4e   t1.c FROM t1 UN
0920: 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 78  ION ALL SELECT x
0930: 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20  ,y,z FROM t2.   
0940: 20 4f 52 44 45 52 20 42 59 20 61 2c 62 2c 63 0a   ORDER BY a,b,c.
0950: 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d    }.} {{} C c {}
0960: 20 55 20 75 20 2d 32 33 20 59 20 79 20 31 20 61   U u -23 Y y 1 a
0970: 20 61 20 39 2e 39 20 62 20 42 20 35 32 30 30 30   a 9.9 b B 52000
0980: 30 30 2e 30 20 58 20 78 20 68 65 6c 6c 6f 20 64  00.0 X x hello d
0990: 20 44 20 6d 61 64 20 5a 20 7a 20 61 62 63 20 65   D mad Z z abc e
09a0: 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f   e hare m M}.do_
09b0: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 31  test selectA-2.1
09c0: 2e 32 20 7b 20 20 20 23 20 54 69 63 6b 65 74 20  .2 {   # Ticket 
09d0: 23 33 33 31 34 0a 20 20 65 78 65 63 73 71 6c 20  #3314.  execsql 
09e0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62  {.    SELECT a,b
09f0: 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e  ,c FROM t1 UNION
0a00: 20 41 4c 4c 20 53 45 4c 45 43 54 20 78 2c 79 2c   ALL SELECT x,y,
0a10: 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52  z FROM t2.    OR
0a20: 44 45 52 20 42 59 20 74 31 2e 61 2c 20 74 31 2e  DER BY t1.a, t1.
0a30: 62 2c 20 74 31 2e 63 0a 20 20 7d 0a 7d 20 7b 7b  b, t1.c.  }.} {{
0a40: 7d 20 43 20 63 20 7b 7d 20 55 20 75 20 2d 32 33  } C c {} U u -23
0a50: 20 59 20 79 20 31 20 61 20 61 20 39 2e 39 20 62   Y y 1 a a 9.9 b
0a60: 20 42 20 35 32 30 30 30 30 30 2e 30 20 58 20 78   B 5200000.0 X x
0a70: 20 68 65 6c 6c 6f 20 64 20 44 20 6d 61 64 20 5a   hello d D mad Z
0a80: 20 7a 20 61 62 63 20 65 20 65 20 68 61 72 65 20   z abc e e hare 
0a90: 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  m M}.do_test sel
0aa0: 65 63 74 41 2d 32 2e 32 20 7b 0a 20 20 65 78 65  ectA-2.2 {.  exe
0ab0: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
0ac0: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
0ad0: 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54  UNION ALL SELECT
0ae0: 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20   x,y,z FROM t2. 
0af0: 20 20 20 4f 52 44 45 52 20 42 59 20 61 20 44 45     ORDER BY a DE
0b00: 53 43 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 68 61  SC,b,c.  }.} {ha
0b10: 72 65 20 6d 20 4d 20 61 62 63 20 65 20 65 20 6d  re m M abc e e m
0b20: 61 64 20 5a 20 7a 20 68 65 6c 6c 6f 20 64 20 44  ad Z z hello d D
0b30: 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 39   5200000.0 X x 9
0b40: 2e 39 20 62 20 42 20 31 20 61 20 61 20 2d 32 33  .9 b B 1 a a -23
0b50: 20 59 20 79 20 7b 7d 20 43 20 63 20 7b 7d 20 55   Y y {} C c {} U
0b60: 20 75 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   u}.do_test sele
0b70: 63 74 41 2d 32 2e 33 20 7b 0a 20 20 65 78 65 63  ctA-2.3 {.  exec
0b80: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
0b90: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 55   a,b,c FROM t1 U
0ba0: 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20  NION ALL SELECT 
0bb0: 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20  x,y,z FROM t2.  
0bc0: 20 20 4f 52 44 45 52 20 42 59 20 61 2c 63 2c 62    ORDER BY a,c,b
0bd0: 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b  .  }.} {{} C c {
0be0: 7d 20 55 20 75 20 2d 32 33 20 59 20 79 20 31 20  } U u -23 Y y 1 
0bf0: 61 20 61 20 39 2e 39 20 62 20 42 20 35 32 30 30  a a 9.9 b B 5200
0c00: 30 30 30 2e 30 20 58 20 78 20 68 65 6c 6c 6f 20  000.0 X x hello 
0c10: 64 20 44 20 6d 61 64 20 5a 20 7a 20 61 62 63 20  d D mad Z z abc 
0c20: 65 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f  e e hare m M}.do
0c30: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e  _test selectA-2.
0c40: 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  4 {.  execsql {.
0c50: 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63      SELECT a,b,c
0c60: 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 41   FROM t1 UNION A
0c70: 4c 4c 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20  LL SELECT x,y,z 
0c80: 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45  FROM t2.    ORDE
0c90: 52 20 42 59 20 62 2c 61 2c 63 0a 20 20 7d 0a 7d  R BY b,a,c.  }.}
0ca0: 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 20   {{} C c {} U u 
0cb0: 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32  5200000.0 X x -2
0cc0: 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 20 31 20  3 Y y mad Z z 1 
0cd0: 61 20 61 20 39 2e 39 20 62 20 42 20 68 65 6c 6c  a a 9.9 b B hell
0ce0: 6f 20 64 20 44 20 61 62 63 20 65 20 65 20 68 61  o d D abc e e ha
0cf0: 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20  re m M}.do_test 
0d00: 73 65 6c 65 63 74 41 2d 32 2e 35 20 7b 0a 20 20  selectA-2.5 {.  
0d10: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
0d20: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
0d30: 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c  t1 UNION ALL SEL
0d40: 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74  ECT x,y,z FROM t
0d50: 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 62  2.    ORDER BY b
0d60: 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45 2c   COLLATE NOCASE,
0d70: 61 2c 63 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61  a,c.  }.} {1 a a
0d80: 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 20   9.9 b B {} C c 
0d90: 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20  hello d D abc e 
0da0: 65 20 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55 20  e hare m M {} U 
0db0: 75 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20  u 5200000.0 X x 
0dc0: 2d 32 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 7d  -23 Y y mad Z z}
0dd0: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
0de0: 2d 32 2e 36 20 7b 0a 20 20 65 78 65 63 73 71 6c  -2.6 {.  execsql
0df0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
0e00: 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f  b,c FROM t1 UNIO
0e10: 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 78 2c 79  N ALL SELECT x,y
0e20: 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f  ,z FROM t2.    O
0e30: 52 44 45 52 20 42 59 20 62 20 43 4f 4c 4c 41 54  RDER BY b COLLAT
0e40: 45 20 4e 4f 43 41 53 45 20 44 45 53 43 2c 61 2c  E NOCASE DESC,a,
0e50: 63 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a  c.  }.} {mad Z z
0e60: 20 2d 32 33 20 59 20 79 20 35 32 30 30 30 30 30   -23 Y y 5200000
0e70: 2e 30 20 58 20 78 20 7b 7d 20 55 20 75 20 68 61  .0 X x {} U u ha
0e80: 72 65 20 6d 20 4d 20 61 62 63 20 65 20 65 20 68  re m M abc e e h
0e90: 65 6c 6c 6f 20 64 20 44 20 7b 7d 20 43 20 63 20  ello d D {} C c 
0ea0: 39 2e 39 20 62 20 42 20 31 20 61 20 61 7d 0a 64  9.9 b B 1 a a}.d
0eb0: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32  o_test selectA-2
0ec0: 2e 37 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .7 {.  execsql {
0ed0: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
0ee0: 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20  c FROM t1 UNION 
0ef0: 41 4c 4c 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a  ALL SELECT x,y,z
0f00: 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44   FROM t2.    ORD
0f10: 45 52 20 42 59 20 63 2c 62 2c 61 0a 20 20 7d 0a  ER BY c,b,a.  }.
0f20: 7d 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42  } {1 a a 9.9 b B
0f30: 20 7b 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64 20   {} C c hello d 
0f40: 44 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d  D abc e e hare m
0f50: 20 4d 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30   M {} U u 520000
0f60: 30 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79 20  0.0 X x -23 Y y 
0f70: 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74  mad Z z}.do_test
0f80: 20 73 65 6c 65 63 74 41 2d 32 2e 38 20 7b 0a 20   selectA-2.8 {. 
0f90: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
0fa0: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
0fb0: 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45   t1 UNION ALL SE
0fc0: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
0fd0: 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  t2.    ORDER BY 
0fe0: 63 2c 61 2c 62 0a 20 20 7d 0a 7d 20 7b 31 20 61  c,a,b.  }.} {1 a
0ff0: 20 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20   a 9.9 b B {} C 
1000: 63 20 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20  c hello d D abc 
1010: 65 20 65 20 68 61 72 65 20 6d 20 4d 20 7b 7d 20  e e hare m M {} 
1020: 55 20 75 20 35 32 30 30 30 30 30 2e 30 20 58 20  U u 5200000.0 X 
1030: 78 20 2d 32 33 20 59 20 79 20 6d 61 64 20 5a 20  x -23 Y y mad Z 
1040: 7a 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  z}.do_test selec
1050: 74 41 2d 32 2e 39 20 7b 0a 20 20 65 78 65 63 73  tA-2.9 {.  execs
1060: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
1070: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e  a,b,c FROM t1 UN
1080: 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 78  ION ALL SELECT x
1090: 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20  ,y,z FROM t2.   
10a0: 20 4f 52 44 45 52 20 42 59 20 63 20 44 45 53 43   ORDER BY c DESC
10b0: 2c 61 2c 62 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20  ,a,b.  }.} {mad 
10c0: 5a 20 7a 20 2d 32 33 20 59 20 79 20 35 32 30 30  Z z -23 Y y 5200
10d0: 30 30 30 2e 30 20 58 20 78 20 7b 7d 20 55 20 75  000.0 X x {} U u
10e0: 20 68 61 72 65 20 6d 20 4d 20 61 62 63 20 65 20   hare m M abc e 
10f0: 65 20 68 65 6c 6c 6f 20 64 20 44 20 7b 7d 20 43  e hello d D {} C
1100: 20 63 20 39 2e 39 20 62 20 42 20 31 20 61 20 61   c 9.9 b B 1 a a
1110: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
1120: 41 2d 32 2e 31 30 20 7b 0a 20 20 65 78 65 63 73  A-2.10 {.  execs
1130: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
1140: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e  a,b,c FROM t1 UN
1150: 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 78  ION ALL SELECT x
1160: 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20  ,y,z FROM t2.   
1170: 20 4f 52 44 45 52 20 42 59 20 63 20 43 4f 4c 4c   ORDER BY c COLL
1180: 41 54 45 20 42 49 4e 41 52 59 20 44 45 53 43 2c  ATE BINARY DESC,
1190: 61 2c 62 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a  a,b.  }.} {mad Z
11a0: 20 7a 20 2d 32 33 20 59 20 79 20 35 32 30 30 30   z -23 Y y 52000
11b0: 30 30 2e 30 20 58 20 78 20 7b 7d 20 55 20 75 20  00.0 X x {} U u 
11c0: 61 62 63 20 65 20 65 20 7b 7d 20 43 20 63 20 31  abc e e {} C c 1
11d0: 20 61 20 61 20 68 61 72 65 20 6d 20 4d 20 68 65   a a hare m M he
11e0: 6c 6c 6f 20 64 20 44 20 39 2e 39 20 62 20 42 7d  llo d D 9.9 b B}
11f0: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
1200: 2d 32 2e 31 31 20 7b 0a 20 20 65 78 65 63 73 71  -2.11 {.  execsq
1210: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78  l {.    SELECT x
1220: 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49  ,y,z FROM t2 UNI
1230: 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 61 2c  ON ALL SELECT a,
1240: 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20  b,c FROM t1.    
1250: 4f 52 44 45 52 20 42 59 20 61 2c 62 2c 63 0a 20  ORDER BY a,b,c. 
1260: 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d 20   }.} {{} C c {} 
1270: 55 20 75 20 2d 32 33 20 59 20 79 20 31 20 61 20  U u -23 Y y 1 a 
1280: 61 20 39 2e 39 20 62 20 42 20 35 32 30 30 30 30  a 9.9 b B 520000
1290: 30 2e 30 20 58 20 78 20 68 65 6c 6c 6f 20 64 20  0.0 X x hello d 
12a0: 44 20 6d 61 64 20 5a 20 7a 20 61 62 63 20 65 20  D mad Z z abc e 
12b0: 65 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74  e hare m M}.do_t
12c0: 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 31 32  est selectA-2.12
12d0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
12e0: 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20     SELECT x,y,z 
12f0: 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 41 4c  FROM t2 UNION AL
1300: 4c 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46  L SELECT a,b,c F
1310: 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52  ROM t1.    ORDER
1320: 20 42 59 20 61 20 44 45 53 43 2c 62 2c 63 0a 20   BY a DESC,b,c. 
1330: 20 7d 0a 7d 20 7b 68 61 72 65 20 6d 20 4d 20 61   }.} {hare m M a
1340: 62 63 20 65 20 65 20 6d 61 64 20 5a 20 7a 20 68  bc e e mad Z z h
1350: 65 6c 6c 6f 20 64 20 44 20 35 32 30 30 30 30 30  ello d D 5200000
1360: 2e 30 20 58 20 78 20 39 2e 39 20 62 20 42 20 31  .0 X x 9.9 b B 1
1370: 20 61 20 61 20 2d 32 33 20 59 20 79 20 7b 7d 20   a a -23 Y y {} 
1380: 43 20 63 20 7b 7d 20 55 20 75 7d 0a 64 6f 5f 74  C c {} U u}.do_t
1390: 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 31 33  est selectA-2.13
13a0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
13b0: 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20     SELECT x,y,z 
13c0: 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 41 4c  FROM t2 UNION AL
13d0: 4c 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46  L SELECT a,b,c F
13e0: 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52  ROM t1.    ORDER
13f0: 20 42 59 20 61 2c 63 2c 62 0a 20 20 7d 0a 7d 20   BY a,c,b.  }.} 
1400: 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 20 2d  {{} C c {} U u -
1410: 32 33 20 59 20 79 20 31 20 61 20 61 20 39 2e 39  23 Y y 1 a a 9.9
1420: 20 62 20 42 20 35 32 30 30 30 30 30 2e 30 20 58   b B 5200000.0 X
1430: 20 78 20 68 65 6c 6c 6f 20 64 20 44 20 6d 61 64   x hello d D mad
1440: 20 5a 20 7a 20 61 62 63 20 65 20 65 20 68 61 72   Z z abc e e har
1450: 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73  e m M}.do_test s
1460: 65 6c 65 63 74 41 2d 32 2e 31 34 20 7b 0a 20 20  electA-2.14 {.  
1470: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
1480: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
1490: 74 32 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c  t2 UNION ALL SEL
14a0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
14b0: 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 62  1.    ORDER BY b
14c0: 2c 61 2c 63 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43  ,a,c.  }.} {{} C
14d0: 20 63 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30   c {} U u 520000
14e0: 30 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79 20  0.0 X x -23 Y y 
14f0: 6d 61 64 20 5a 20 7a 20 31 20 61 20 61 20 39 2e  mad Z z 1 a a 9.
1500: 39 20 62 20 42 20 68 65 6c 6c 6f 20 64 20 44 20  9 b B hello d D 
1510: 61 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d  abc e e hare m M
1520: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
1530: 41 2d 32 2e 31 35 20 7b 0a 20 20 65 78 65 63 73  A-2.15 {.  execs
1540: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
1550: 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e  x,y,z FROM t2 UN
1560: 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 61  ION ALL SELECT a
1570: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20  ,b,c FROM t1.   
1580: 20 4f 52 44 45 52 20 42 59 20 62 20 43 4f 4c 4c   ORDER BY b COLL
1590: 41 54 45 20 4e 4f 43 41 53 45 2c 61 2c 63 0a 20  ATE NOCASE,a,c. 
15a0: 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39 20   }.} {1 a a 9.9 
15b0: 62 20 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c 6f  b B {} C c hello
15c0: 20 64 20 44 20 61 62 63 20 65 20 65 20 68 61 72   d D abc e e har
15d0: 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32 30  e m M {} U u 520
15e0: 30 30 30 30 2e 30 20 58 20 78 20 2d 32 33 20 59  0000.0 X x -23 Y
15f0: 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74   y mad Z z}.do_t
1600: 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 31 36  est selectA-2.16
1610: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
1620: 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20     SELECT x,y,z 
1630: 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 41 4c  FROM t2 UNION AL
1640: 4c 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46  L SELECT a,b,c F
1650: 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52  ROM t1.    ORDER
1660: 20 42 59 20 62 20 43 4f 4c 4c 41 54 45 20 4e 4f   BY b COLLATE NO
1670: 43 41 53 45 20 44 45 53 43 2c 61 2c 63 0a 20 20  CASE DESC,a,c.  
1680: 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33  }.} {mad Z z -23
1690: 20 59 20 79 20 35 32 30 30 30 30 30 2e 30 20 58   Y y 5200000.0 X
16a0: 20 78 20 7b 7d 20 55 20 75 20 68 61 72 65 20 6d   x {} U u hare m
16b0: 20 4d 20 61 62 63 20 65 20 65 20 68 65 6c 6c 6f   M abc e e hello
16c0: 20 64 20 44 20 7b 7d 20 43 20 63 20 39 2e 39 20   d D {} C c 9.9 
16d0: 62 20 42 20 31 20 61 20 61 7d 0a 64 6f 5f 74 65  b B 1 a a}.do_te
16e0: 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 31 37 20  st selectA-2.17 
16f0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
1700: 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46    SELECT x,y,z F
1710: 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 41 4c 4c  ROM t2 UNION ALL
1720: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
1730: 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20  OM t1.    ORDER 
1740: 42 59 20 63 2c 62 2c 61 0a 20 20 7d 0a 7d 20 7b  BY c,b,a.  }.} {
1750: 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b 7d  1 a a 9.9 b B {}
1760: 20 43 20 63 20 68 65 6c 6c 6f 20 64 20 44 20 61   C c hello d D a
1770: 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d 20  bc e e hare m M 
1780: 7b 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e 30  {} U u 5200000.0
1790: 20 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61 64   X x -23 Y y mad
17a0: 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 73 65   Z z}.do_test se
17b0: 6c 65 63 74 41 2d 32 2e 31 38 20 7b 0a 20 20 65  lectA-2.18 {.  e
17c0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
17d0: 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74  ECT x,y,z FROM t
17e0: 32 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45  2 UNION ALL SELE
17f0: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
1800: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63 2c  .    ORDER BY c,
1810: 61 2c 62 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61  a,b.  }.} {1 a a
1820: 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 20   9.9 b B {} C c 
1830: 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20  hello d D abc e 
1840: 65 20 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55 20  e hare m M {} U 
1850: 75 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20  u 5200000.0 X x 
1860: 2d 32 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 7d  -23 Y y mad Z z}
1870: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
1880: 2d 32 2e 31 39 20 7b 0a 20 20 65 78 65 63 73 71  -2.19 {.  execsq
1890: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78  l {.    SELECT x
18a0: 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49  ,y,z FROM t2 UNI
18b0: 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 61 2c  ON ALL SELECT a,
18c0: 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20  b,c FROM t1.    
18d0: 4f 52 44 45 52 20 42 59 20 63 20 44 45 53 43 2c  ORDER BY c DESC,
18e0: 61 2c 62 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a  a,b.  }.} {mad Z
18f0: 20 7a 20 2d 32 33 20 59 20 79 20 35 32 30 30 30   z -23 Y y 52000
1900: 30 30 2e 30 20 58 20 78 20 7b 7d 20 55 20 75 20  00.0 X x {} U u 
1910: 68 61 72 65 20 6d 20 4d 20 61 62 63 20 65 20 65  hare m M abc e e
1920: 20 68 65 6c 6c 6f 20 64 20 44 20 7b 7d 20 43 20   hello d D {} C 
1930: 63 20 39 2e 39 20 62 20 42 20 31 20 61 20 61 7d  c 9.9 b B 1 a a}
1940: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
1950: 2d 32 2e 32 30 20 7b 0a 20 20 65 78 65 63 73 71  -2.20 {.  execsq
1960: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78  l {.    SELECT x
1970: 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49  ,y,z FROM t2 UNI
1980: 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 61 2c  ON ALL SELECT a,
1990: 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20  b,c FROM t1.    
19a0: 4f 52 44 45 52 20 42 59 20 63 20 43 4f 4c 4c 41  ORDER BY c COLLA
19b0: 54 45 20 42 49 4e 41 52 59 20 44 45 53 43 2c 61  TE BINARY DESC,a
19c0: 2c 62 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20  ,b.  }.} {mad Z 
19d0: 7a 20 2d 32 33 20 59 20 79 20 35 32 30 30 30 30  z -23 Y y 520000
19e0: 30 2e 30 20 58 20 78 20 7b 7d 20 55 20 75 20 61  0.0 X x {} U u a
19f0: 62 63 20 65 20 65 20 7b 7d 20 43 20 63 20 31 20  bc e e {} C c 1 
1a00: 61 20 61 20 68 61 72 65 20 6d 20 4d 20 68 65 6c  a a hare m M hel
1a10: 6c 6f 20 64 20 44 20 39 2e 39 20 62 20 42 7d 0a  lo d D 9.9 b B}.
1a20: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
1a30: 32 2e 32 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  2.21 {.  execsql
1a40: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
1a50: 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f  b,c FROM t1 UNIO
1a60: 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46  N SELECT x,y,z F
1a70: 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52  ROM t2.    ORDER
1a80: 20 42 59 20 61 2c 62 2c 63 0a 20 20 7d 0a 7d 20   BY a,b,c.  }.} 
1a90: 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 20 2d  {{} C c {} U u -
1aa0: 32 33 20 59 20 79 20 31 20 61 20 61 20 39 2e 39  23 Y y 1 a a 9.9
1ab0: 20 62 20 42 20 35 32 30 30 30 30 30 2e 30 20 58   b B 5200000.0 X
1ac0: 20 78 20 68 65 6c 6c 6f 20 64 20 44 20 6d 61 64   x hello d D mad
1ad0: 20 5a 20 7a 20 61 62 63 20 65 20 65 20 68 61 72   Z z abc e e har
1ae0: 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73  e m M}.do_test s
1af0: 65 6c 65 63 74 41 2d 32 2e 32 32 20 7b 0a 20 20  electA-2.22 {.  
1b00: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
1b10: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
1b20: 74 31 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20  t1 UNION SELECT 
1b30: 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20  x,y,z FROM t2.  
1b40: 20 20 4f 52 44 45 52 20 42 59 20 61 20 44 45 53    ORDER BY a DES
1b50: 43 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 68 61 72  C,b,c.  }.} {har
1b60: 65 20 6d 20 4d 20 61 62 63 20 65 20 65 20 6d 61  e m M abc e e ma
1b70: 64 20 5a 20 7a 20 68 65 6c 6c 6f 20 64 20 44 20  d Z z hello d D 
1b80: 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 39 2e  5200000.0 X x 9.
1b90: 39 20 62 20 42 20 31 20 61 20 61 20 2d 32 33 20  9 b B 1 a a -23 
1ba0: 59 20 79 20 7b 7d 20 43 20 63 20 7b 7d 20 55 20  Y y {} C c {} U 
1bb0: 75 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  u}.do_test selec
1bc0: 74 41 2d 32 2e 32 33 20 7b 0a 20 20 65 78 65 63  tA-2.23 {.  exec
1bd0: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
1be0: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 55   a,b,c FROM t1 U
1bf0: 4e 49 4f 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c  NION SELECT x,y,
1c00: 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52  z FROM t2.    OR
1c10: 44 45 52 20 42 59 20 61 2c 63 2c 62 0a 20 20 7d  DER BY a,c,b.  }
1c20: 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20  .} {{} C c {} U 
1c30: 75 20 2d 32 33 20 59 20 79 20 31 20 61 20 61 20  u -23 Y y 1 a a 
1c40: 39 2e 39 20 62 20 42 20 35 32 30 30 30 30 30 2e  9.9 b B 5200000.
1c50: 30 20 58 20 78 20 68 65 6c 6c 6f 20 64 20 44 20  0 X x hello d D 
1c60: 6d 61 64 20 5a 20 7a 20 61 62 63 20 65 20 65 20  mad Z z abc e e 
1c70: 68 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73  hare m M}.do_tes
1c80: 74 20 73 65 6c 65 63 74 41 2d 32 2e 32 34 20 7b  t selectA-2.24 {
1c90: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
1ca0: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
1cb0: 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 53 45 4c 45  OM t1 UNION SELE
1cc0: 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32  CT x,y,z FROM t2
1cd0: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 62 2c  .    ORDER BY b,
1ce0: 61 2c 63 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20  a,c.  }.} {{} C 
1cf0: 63 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30 30  c {} U u 5200000
1d00: 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79 20 6d  .0 X x -23 Y y m
1d10: 61 64 20 5a 20 7a 20 31 20 61 20 61 20 39 2e 39  ad Z z 1 a a 9.9
1d20: 20 62 20 42 20 68 65 6c 6c 6f 20 64 20 44 20 61   b B hello d D a
1d30: 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d 7d  bc e e hare m M}
1d40: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
1d50: 2d 32 2e 32 35 20 7b 0a 20 20 65 78 65 63 73 71  -2.25 {.  execsq
1d60: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61  l {.    SELECT a
1d70: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e 49  ,b,c FROM t1 UNI
1d80: 4f 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20  ON SELECT x,y,z 
1d90: 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45  FROM t2.    ORDE
1da0: 52 20 42 59 20 62 20 43 4f 4c 4c 41 54 45 20 4e  R BY b COLLATE N
1db0: 4f 43 41 53 45 2c 61 2c 63 0a 20 20 7d 0a 7d 20  OCASE,a,c.  }.} 
1dc0: 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b  {1 a a 9.9 b B {
1dd0: 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64 20 44 20  } C c hello d D 
1de0: 61 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d  abc e e hare m M
1df0: 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e   {} U u 5200000.
1e00: 30 20 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61  0 X x -23 Y y ma
1e10: 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 73  d Z z}.do_test s
1e20: 65 6c 65 63 74 41 2d 32 2e 32 36 20 7b 0a 20 20  electA-2.26 {.  
1e30: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
1e40: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
1e50: 74 31 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20  t1 UNION SELECT 
1e60: 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20  x,y,z FROM t2.  
1e70: 20 20 4f 52 44 45 52 20 42 59 20 62 20 43 4f 4c    ORDER BY b COL
1e80: 4c 41 54 45 20 4e 4f 43 41 53 45 20 44 45 53 43  LATE NOCASE DESC
1e90: 2c 61 2c 63 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20  ,a,c.  }.} {mad 
1ea0: 5a 20 7a 20 2d 32 33 20 59 20 79 20 35 32 30 30  Z z -23 Y y 5200
1eb0: 30 30 30 2e 30 20 58 20 78 20 7b 7d 20 55 20 75  000.0 X x {} U u
1ec0: 20 68 61 72 65 20 6d 20 4d 20 61 62 63 20 65 20   hare m M abc e 
1ed0: 65 20 68 65 6c 6c 6f 20 64 20 44 20 7b 7d 20 43  e hello d D {} C
1ee0: 20 63 20 39 2e 39 20 62 20 42 20 31 20 61 20 61   c 9.9 b B 1 a a
1ef0: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
1f00: 41 2d 32 2e 32 37 20 7b 0a 20 20 65 78 65 63 73  A-2.27 {.  execs
1f10: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
1f20: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e  a,b,c FROM t1 UN
1f30: 49 4f 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a  ION SELECT x,y,z
1f40: 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44   FROM t2.    ORD
1f50: 45 52 20 42 59 20 63 2c 62 2c 61 0a 20 20 7d 0a  ER BY c,b,a.  }.
1f60: 7d 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42  } {1 a a 9.9 b B
1f70: 20 7b 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64 20   {} C c hello d 
1f80: 44 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d  D abc e e hare m
1f90: 20 4d 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30   M {} U u 520000
1fa0: 30 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79 20  0.0 X x -23 Y y 
1fb0: 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74  mad Z z}.do_test
1fc0: 20 73 65 6c 65 63 74 41 2d 32 2e 32 38 20 7b 0a   selectA-2.28 {.
1fd0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
1fe0: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
1ff0: 4d 20 74 31 20 55 4e 49 4f 4e 20 53 45 4c 45 43  M t1 UNION SELEC
2000: 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a  T x,y,z FROM t2.
2010: 20 20 20 20 4f 52 44 45 52 20 42 59 20 63 2c 61      ORDER BY c,a
2020: 2c 62 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20  ,b.  }.} {1 a a 
2030: 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 20 68  9.9 b B {} C c h
2040: 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65  ello d D abc e e
2050: 20 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75   hare m M {} U u
2060: 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d   5200000.0 X x -
2070: 32 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a  23 Y y mad Z z}.
2080: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
2090: 32 2e 32 39 20 7b 0a 20 20 65 78 65 63 73 71 6c  2.29 {.  execsql
20a0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
20b0: 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f  b,c FROM t1 UNIO
20c0: 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46  N SELECT x,y,z F
20d0: 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52  ROM t2.    ORDER
20e0: 20 42 59 20 63 20 44 45 53 43 2c 61 2c 62 0a 20   BY c DESC,a,b. 
20f0: 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32   }.} {mad Z z -2
2100: 33 20 59 20 79 20 35 32 30 30 30 30 30 2e 30 20  3 Y y 5200000.0 
2110: 58 20 78 20 7b 7d 20 55 20 75 20 68 61 72 65 20  X x {} U u hare 
2120: 6d 20 4d 20 61 62 63 20 65 20 65 20 68 65 6c 6c  m M abc e e hell
2130: 6f 20 64 20 44 20 7b 7d 20 43 20 63 20 39 2e 39  o d D {} C c 9.9
2140: 20 62 20 42 20 31 20 61 20 61 7d 0a 64 6f 5f 74   b B 1 a a}.do_t
2150: 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 33 30  est selectA-2.30
2160: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
2170: 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20     SELECT a,b,c 
2180: 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 53 45  FROM t1 UNION SE
2190: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
21a0: 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  t2.    ORDER BY 
21b0: 63 20 43 4f 4c 4c 41 54 45 20 42 49 4e 41 52 59  c COLLATE BINARY
21c0: 20 44 45 53 43 2c 61 2c 62 0a 20 20 7d 0a 7d 20   DESC,a,b.  }.} 
21d0: 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59 20 79  {mad Z z -23 Y y
21e0: 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 7b   5200000.0 X x {
21f0: 7d 20 55 20 75 20 61 62 63 20 65 20 65 20 7b 7d  } U u abc e e {}
2200: 20 43 20 63 20 31 20 61 20 61 20 68 61 72 65 20   C c 1 a a hare 
2210: 6d 20 4d 20 68 65 6c 6c 6f 20 64 20 44 20 39 2e  m M hello d D 9.
2220: 39 20 62 20 42 7d 0a 64 6f 5f 74 65 73 74 20 73  9 b B}.do_test s
2230: 65 6c 65 63 74 41 2d 32 2e 33 31 20 7b 0a 20 20  electA-2.31 {.  
2240: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
2250: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
2260: 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20  t2 UNION SELECT 
2270: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20  a,b,c FROM t1.  
2280: 20 20 4f 52 44 45 52 20 42 59 20 61 2c 62 2c 63    ORDER BY a,b,c
2290: 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b  .  }.} {{} C c {
22a0: 7d 20 55 20 75 20 2d 32 33 20 59 20 79 20 31 20  } U u -23 Y y 1 
22b0: 61 20 61 20 39 2e 39 20 62 20 42 20 35 32 30 30  a a 9.9 b B 5200
22c0: 30 30 30 2e 30 20 58 20 78 20 68 65 6c 6c 6f 20  000.0 X x hello 
22d0: 64 20 44 20 6d 61 64 20 5a 20 7a 20 61 62 63 20  d D mad Z z abc 
22e0: 65 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f  e e hare m M}.do
22f0: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e  _test selectA-2.
2300: 33 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  32 {.  execsql {
2310: 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c  .    SELECT x,y,
2320: 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20  z FROM t2 UNION 
2330: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
2340: 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42  M t1.    ORDER B
2350: 59 20 61 20 44 45 53 43 2c 62 2c 63 0a 20 20 7d  Y a DESC,b,c.  }
2360: 0a 7d 20 7b 68 61 72 65 20 6d 20 4d 20 61 62 63  .} {hare m M abc
2370: 20 65 20 65 20 6d 61 64 20 5a 20 7a 20 68 65 6c   e e mad Z z hel
2380: 6c 6f 20 64 20 44 20 35 32 30 30 30 30 30 2e 30  lo d D 5200000.0
2390: 20 58 20 78 20 39 2e 39 20 62 20 42 20 31 20 61   X x 9.9 b B 1 a
23a0: 20 61 20 2d 32 33 20 59 20 79 20 7b 7d 20 43 20   a -23 Y y {} C 
23b0: 63 20 7b 7d 20 55 20 75 7d 0a 64 6f 5f 74 65 73  c {} U u}.do_tes
23c0: 74 20 73 65 6c 65 63 74 41 2d 32 2e 33 33 20 7b  t selectA-2.33 {
23d0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
23e0: 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52   SELECT x,y,z FR
23f0: 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45  OM t2 UNION SELE
2400: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
2410: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 61 2c  .    ORDER BY a,
2420: 63 2c 62 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20  c,b.  }.} {{} C 
2430: 63 20 7b 7d 20 55 20 75 20 2d 32 33 20 59 20 79  c {} U u -23 Y y
2440: 20 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 35   1 a a 9.9 b B 5
2450: 32 30 30 30 30 30 2e 30 20 58 20 78 20 68 65 6c  200000.0 X x hel
2460: 6c 6f 20 64 20 44 20 6d 61 64 20 5a 20 7a 20 61  lo d D mad Z z a
2470: 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d 7d  bc e e hare m M}
2480: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
2490: 2d 32 2e 33 34 20 7b 0a 20 20 65 78 65 63 73 71  -2.34 {.  execsq
24a0: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78  l {.    SELECT x
24b0: 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49  ,y,z FROM t2 UNI
24c0: 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  ON SELECT a,b,c 
24d0: 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45  FROM t1.    ORDE
24e0: 52 20 42 59 20 62 2c 61 2c 63 0a 20 20 7d 0a 7d  R BY b,a,c.  }.}
24f0: 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 20   {{} C c {} U u 
2500: 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32  5200000.0 X x -2
2510: 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 20 31 20  3 Y y mad Z z 1 
2520: 61 20 61 20 39 2e 39 20 62 20 42 20 68 65 6c 6c  a a 9.9 b B hell
2530: 6f 20 64 20 44 20 61 62 63 20 65 20 65 20 68 61  o d D abc e e ha
2540: 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20  re m M}.do_test 
2550: 73 65 6c 65 63 74 41 2d 32 2e 33 35 20 7b 0a 20  selectA-2.35 {. 
2560: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
2570: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
2580: 20 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54   t2 UNION SELECT
2590: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20   a,b,c FROM t1. 
25a0: 20 20 20 4f 52 44 45 52 20 42 59 20 79 20 43 4f     ORDER BY y CO
25b0: 4c 4c 41 54 45 20 4e 4f 43 41 53 45 2c 78 2c 7a  LLATE NOCASE,x,z
25c0: 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e  .  }.} {1 a a 9.
25d0: 39 20 62 20 42 20 7b 7d 20 43 20 63 20 68 65 6c  9 b B {} C c hel
25e0: 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65 20 68  lo d D abc e e h
25f0: 61 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20 35  are m M {} U u 5
2600: 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32 33  200000.0 X x -23
2610: 20 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f   Y y mad Z z}.do
2620: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e  _test selectA-2.
2630: 33 36 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  36 {.  execsql {
2640: 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c  .    SELECT x,y,
2650: 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20  z FROM t2 UNION 
2660: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
2670: 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42  M t1.    ORDER B
2680: 59 20 79 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41  Y y COLLATE NOCA
2690: 53 45 20 44 45 53 43 2c 78 2c 7a 0a 20 20 7d 0a  SE DESC,x,z.  }.
26a0: 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59  } {mad Z z -23 Y
26b0: 20 79 20 35 32 30 30 30 30 30 2e 30 20 58 20 78   y 5200000.0 X x
26c0: 20 7b 7d 20 55 20 75 20 68 61 72 65 20 6d 20 4d   {} U u hare m M
26d0: 20 61 62 63 20 65 20 65 20 68 65 6c 6c 6f 20 64   abc e e hello d
26e0: 20 44 20 7b 7d 20 43 20 63 20 39 2e 39 20 62 20   D {} C c 9.9 b 
26f0: 42 20 31 20 61 20 61 7d 0a 64 6f 5f 74 65 73 74  B 1 a a}.do_test
2700: 20 73 65 6c 65 63 74 41 2d 32 2e 33 37 20 7b 0a   selectA-2.37 {.
2710: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
2720: 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f  SELECT x,y,z FRO
2730: 4d 20 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43  M t2 UNION SELEC
2740: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a  T a,b,c FROM t1.
2750: 20 20 20 20 4f 52 44 45 52 20 42 59 20 63 2c 62      ORDER BY c,b
2760: 2c 61 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20  ,a.  }.} {1 a a 
2770: 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 20 68  9.9 b B {} C c h
2780: 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65  ello d D abc e e
2790: 20 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75   hare m M {} U u
27a0: 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d   5200000.0 X x -
27b0: 32 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a  23 Y y mad Z z}.
27c0: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
27d0: 32 2e 33 38 20 7b 0a 20 20 65 78 65 63 73 71 6c  2.38 {.  execsql
27e0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c   {.    SELECT x,
27f0: 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f  y,z FROM t2 UNIO
2800: 4e 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46  N SELECT a,b,c F
2810: 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52  ROM t1.    ORDER
2820: 20 42 59 20 63 2c 61 2c 62 0a 20 20 7d 0a 7d 20   BY c,a,b.  }.} 
2830: 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b  {1 a a 9.9 b B {
2840: 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64 20 44 20  } C c hello d D 
2850: 61 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d  abc e e hare m M
2860: 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e   {} U u 5200000.
2870: 30 20 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61  0 X x -23 Y y ma
2880: 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 73  d Z z}.do_test s
2890: 65 6c 65 63 74 41 2d 32 2e 33 39 20 7b 0a 20 20  electA-2.39 {.  
28a0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
28b0: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
28c0: 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20  t2 UNION SELECT 
28d0: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20  a,b,c FROM t1.  
28e0: 20 20 4f 52 44 45 52 20 42 59 20 63 20 44 45 53    ORDER BY c DES
28f0: 43 2c 61 2c 62 0a 20 20 7d 0a 7d 20 7b 6d 61 64  C,a,b.  }.} {mad
2900: 20 5a 20 7a 20 2d 32 33 20 59 20 79 20 35 32 30   Z z -23 Y y 520
2910: 30 30 30 30 2e 30 20 58 20 78 20 7b 7d 20 55 20  0000.0 X x {} U 
2920: 75 20 68 61 72 65 20 6d 20 4d 20 61 62 63 20 65  u hare m M abc e
2930: 20 65 20 68 65 6c 6c 6f 20 64 20 44 20 7b 7d 20   e hello d D {} 
2940: 43 20 63 20 39 2e 39 20 62 20 42 20 31 20 61 20  C c 9.9 b B 1 a 
2950: 61 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  a}.do_test selec
2960: 74 41 2d 32 2e 34 30 20 7b 0a 20 20 65 78 65 63  tA-2.40 {.  exec
2970: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
2980: 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55   x,y,z FROM t2 U
2990: 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62 2c  NION SELECT a,b,
29a0: 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52  c FROM t1.    OR
29b0: 44 45 52 20 42 59 20 7a 20 43 4f 4c 4c 41 54 45  DER BY z COLLATE
29c0: 20 42 49 4e 41 52 59 20 44 45 53 43 2c 78 2c 79   BINARY DESC,x,y
29d0: 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20  .  }.} {mad Z z 
29e0: 2d 32 33 20 59 20 79 20 35 32 30 30 30 30 30 2e  -23 Y y 5200000.
29f0: 30 20 58 20 78 20 7b 7d 20 55 20 75 20 61 62 63  0 X x {} U u abc
2a00: 20 65 20 65 20 7b 7d 20 43 20 63 20 31 20 61 20   e e {} C c 1 a 
2a10: 61 20 68 61 72 65 20 6d 20 4d 20 68 65 6c 6c 6f  a hare m M hello
2a20: 20 64 20 44 20 39 2e 39 20 62 20 42 7d 0a 64 6f   d D 9.9 b B}.do
2a30: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e  _test selectA-2.
2a40: 34 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  41 {.  execsql {
2a50: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
2a60: 63 20 46 52 4f 4d 20 74 31 20 45 58 43 45 50 54  c FROM t1 EXCEPT
2a70: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
2a80: 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3e 3d 27  OM t1 WHERE b>='
2a90: 64 27 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  d'.    ORDER BY 
2aa0: 61 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 7b 7d 20  a,b,c.  }.} {{} 
2ab0: 43 20 63 20 31 20 61 20 61 20 39 2e 39 20 62 20  C c 1 a a 9.9 b 
2ac0: 42 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  B}.do_test selec
2ad0: 74 41 2d 32 2e 34 32 20 7b 0a 20 20 65 78 65 63  tA-2.42 {.  exec
2ae0: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
2af0: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 49   a,b,c FROM t1 I
2b00: 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20  NTERSECT SELECT 
2b10: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48  a,b,c FROM t1 WH
2b20: 45 52 45 20 62 3e 3d 27 64 27 0a 20 20 20 20 4f  ERE b>='d'.    O
2b30: 52 44 45 52 20 42 59 20 61 2c 62 2c 63 0a 20 20  RDER BY a,b,c.  
2b40: 7d 0a 7d 20 7b 68 65 6c 6c 6f 20 64 20 44 20 61  }.} {hello d D a
2b50: 62 63 20 65 20 65 7d 0a 64 6f 5f 74 65 73 74 20  bc e e}.do_test 
2b60: 73 65 6c 65 63 74 41 2d 32 2e 34 33 20 7b 0a 20  selectA-2.43 {. 
2b70: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
2b80: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
2b90: 20 74 31 20 57 48 45 52 45 20 62 3e 3d 27 64 27   t1 WHERE b>='d'
2ba0: 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43   INTERSECT SELEC
2bb0: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a  T a,b,c FROM t1.
2bc0: 20 20 20 20 4f 52 44 45 52 20 42 59 20 61 2c 62      ORDER BY a,b
2bd0: 2c 63 0a 20 20 7d 0a 7d 20 7b 68 65 6c 6c 6f 20  ,c.  }.} {hello 
2be0: 64 20 44 20 61 62 63 20 65 20 65 7d 0a 64 6f 5f  d D abc e e}.do_
2bf0: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 34  test selectA-2.4
2c00: 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  4 {.  execsql {.
2c10: 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63      SELECT a,b,c
2c20: 20 46 52 4f 4d 20 74 31 20 45 58 43 45 50 54 20   FROM t1 EXCEPT 
2c30: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
2c40: 4d 20 74 31 20 57 48 45 52 45 20 62 3c 27 64 27  M t1 WHERE b<'d'
2c50: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 61 2c  .    ORDER BY a,
2c60: 62 2c 63 0a 20 20 7d 0a 7d 20 7b 68 65 6c 6c 6f  b,c.  }.} {hello
2c70: 20 64 20 44 20 61 62 63 20 65 20 65 7d 0a 64 6f   d D abc e e}.do
2c80: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e  _test selectA-2.
2c90: 34 35 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  45 {.  execsql {
2ca0: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
2cb0: 63 20 46 52 4f 4d 20 74 31 20 49 4e 54 45 52 53  c FROM t1 INTERS
2cc0: 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63  ECT SELECT a,b,c
2cd0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 62   FROM t1 WHERE b
2ce0: 3c 27 64 27 0a 20 20 20 20 4f 52 44 45 52 20 42  <'d'.    ORDER B
2cf0: 59 20 61 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 7b  Y a,b,c.  }.} {{
2d00: 7d 20 43 20 63 20 31 20 61 20 61 20 39 2e 39 20  } C c 1 a a 9.9 
2d10: 62 20 42 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  b B}.do_test sel
2d20: 65 63 74 41 2d 32 2e 34 36 20 7b 0a 20 20 65 78  ectA-2.46 {.  ex
2d30: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
2d40: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
2d50: 20 57 48 45 52 45 20 62 3c 27 64 27 20 49 4e 54   WHERE b<'d' INT
2d60: 45 52 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c  ERSECT SELECT a,
2d70: 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20  b,c FROM t1.    
2d80: 4f 52 44 45 52 20 42 59 20 61 2c 62 2c 63 0a 20  ORDER BY a,b,c. 
2d90: 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 31 20 61   }.} {{} C c 1 a
2da0: 20 61 20 39 2e 39 20 62 20 42 7d 0a 64 6f 5f 74   a 9.9 b B}.do_t
2db0: 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 34 37  est selectA-2.47
2dc0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
2dd0: 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20     SELECT a,b,c 
2de0: 46 52 4f 4d 20 74 31 20 45 58 43 45 50 54 20 53  FROM t1 EXCEPT S
2df0: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
2e00: 20 74 31 20 57 48 45 52 45 20 62 3e 3d 27 64 27   t1 WHERE b>='d'
2e10: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 61 20  .    ORDER BY a 
2e20: 44 45 53 43 0a 20 20 7d 0a 7d 20 7b 39 2e 39 20  DESC.  }.} {9.9 
2e30: 62 20 42 20 31 20 61 20 61 20 7b 7d 20 43 20 63  b B 1 a a {} C c
2e40: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
2e50: 41 2d 32 2e 34 38 20 7b 0a 20 20 65 78 65 63 73  A-2.48 {.  execs
2e60: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
2e70: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 49 4e  a,b,c FROM t1 IN
2e80: 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20 61  TERSECT SELECT a
2e90: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45  ,b,c FROM t1 WHE
2ea0: 52 45 20 62 3e 3d 27 64 27 0a 20 20 20 20 4f 52  RE b>='d'.    OR
2eb0: 44 45 52 20 42 59 20 61 20 44 45 53 43 0a 20 20  DER BY a DESC.  
2ec0: 7d 0a 7d 20 7b 61 62 63 20 65 20 65 20 68 65 6c  }.} {abc e e hel
2ed0: 6c 6f 20 64 20 44 7d 0a 64 6f 5f 74 65 73 74 20  lo d D}.do_test 
2ee0: 73 65 6c 65 63 74 41 2d 32 2e 34 39 20 7b 0a 20  selectA-2.49 {. 
2ef0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
2f00: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
2f10: 20 74 31 20 57 48 45 52 45 20 62 3e 3d 27 64 27   t1 WHERE b>='d'
2f20: 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43   INTERSECT SELEC
2f30: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a  T a,b,c FROM t1.
2f40: 20 20 20 20 4f 52 44 45 52 20 42 59 20 61 20 44      ORDER BY a D
2f50: 45 53 43 0a 20 20 7d 0a 7d 20 7b 61 62 63 20 65  ESC.  }.} {abc e
2f60: 20 65 20 68 65 6c 6c 6f 20 64 20 44 7d 0a 64 6f   e hello d D}.do
2f70: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e  _test selectA-2.
2f80: 35 30 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  50 {.  execsql {
2f90: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
2fa0: 63 20 46 52 4f 4d 20 74 31 20 45 58 43 45 50 54  c FROM t1 EXCEPT
2fb0: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
2fc0: 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3c 27 64  OM t1 WHERE b<'d
2fd0: 27 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 61  '.    ORDER BY a
2fe0: 20 44 45 53 43 0a 20 20 7d 0a 7d 20 7b 61 62 63   DESC.  }.} {abc
2ff0: 20 65 20 65 20 68 65 6c 6c 6f 20 64 20 44 7d 0a   e e hello d D}.
3000: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
3010: 32 2e 35 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  2.51 {.  execsql
3020: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
3030: 62 2c 63 20 46 52 4f 4d 20 74 31 20 49 4e 54 45  b,c FROM t1 INTE
3040: 52 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62  RSECT SELECT a,b
3050: 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45  ,c FROM t1 WHERE
3060: 20 62 3c 27 64 27 0a 20 20 20 20 4f 52 44 45 52   b<'d'.    ORDER
3070: 20 42 59 20 61 20 44 45 53 43 0a 20 20 7d 0a 7d   BY a DESC.  }.}
3080: 20 7b 39 2e 39 20 62 20 42 20 31 20 61 20 61 20   {9.9 b B 1 a a 
3090: 7b 7d 20 43 20 63 7d 0a 64 6f 5f 74 65 73 74 20  {} C c}.do_test 
30a0: 73 65 6c 65 63 74 41 2d 32 2e 35 32 20 7b 0a 20  selectA-2.52 {. 
30b0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
30c0: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
30d0: 20 74 31 20 57 48 45 52 45 20 62 3c 27 64 27 20   t1 WHERE b<'d' 
30e0: 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43 54  INTERSECT SELECT
30f0: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20   a,b,c FROM t1. 
3100: 20 20 20 4f 52 44 45 52 20 42 59 20 61 20 44 45     ORDER BY a DE
3110: 53 43 0a 20 20 7d 0a 7d 20 7b 39 2e 39 20 62 20  SC.  }.} {9.9 b 
3120: 42 20 31 20 61 20 61 20 7b 7d 20 43 20 63 7d 0a  B 1 a a {} C c}.
3130: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
3140: 32 2e 35 33 20 7b 0a 20 20 65 78 65 63 73 71 6c  2.53 {.  execsql
3150: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
3160: 62 2c 63 20 46 52 4f 4d 20 74 31 20 45 58 43 45  b,c FROM t1 EXCE
3170: 50 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  PT SELECT a,b,c 
3180: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3e  FROM t1 WHERE b>
3190: 3d 27 64 27 0a 20 20 20 20 4f 52 44 45 52 20 42  ='d'.    ORDER B
31a0: 59 20 62 2c 20 61 20 44 45 53 43 0a 20 20 7d 0a  Y b, a DESC.  }.
31b0: 7d 20 7b 7b 7d 20 43 20 63 20 31 20 61 20 61 20  } {{} C c 1 a a 
31c0: 39 2e 39 20 62 20 42 7d 0a 64 6f 5f 74 65 73 74  9.9 b B}.do_test
31d0: 20 73 65 6c 65 63 74 41 2d 32 2e 35 34 20 7b 0a   selectA-2.54 {.
31e0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
31f0: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
3200: 4d 20 74 31 20 49 4e 54 45 52 53 45 43 54 20 53  M t1 INTERSECT S
3210: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
3220: 20 74 31 20 57 48 45 52 45 20 62 3e 3d 27 64 27   t1 WHERE b>='d'
3230: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 62 0a  .    ORDER BY b.
3240: 20 20 7d 0a 7d 20 7b 68 65 6c 6c 6f 20 64 20 44    }.} {hello d D
3250: 20 61 62 63 20 65 20 65 7d 0a 64 6f 5f 74 65 73   abc e e}.do_tes
3260: 74 20 73 65 6c 65 63 74 41 2d 32 2e 35 35 20 7b  t selectA-2.55 {
3270: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
3280: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
3290: 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3e 3d 27  OM t1 WHERE b>='
32a0: 64 27 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c  d' INTERSECT SEL
32b0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
32c0: 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 62  1.    ORDER BY b
32d0: 20 44 45 53 43 2c 20 63 0a 20 20 7d 0a 7d 20 7b   DESC, c.  }.} {
32e0: 61 62 63 20 65 20 65 20 68 65 6c 6c 6f 20 64 20  abc e e hello d 
32f0: 44 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  D}.do_test selec
3300: 74 41 2d 32 2e 35 36 20 7b 0a 20 20 65 78 65 63  tA-2.56 {.  exec
3310: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
3320: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 45   a,b,c FROM t1 E
3330: 58 43 45 50 54 20 53 45 4c 45 43 54 20 61 2c 62  XCEPT SELECT a,b
3340: 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45  ,c FROM t1 WHERE
3350: 20 62 3c 27 64 27 0a 20 20 20 20 4f 52 44 45 52   b<'d'.    ORDER
3360: 20 42 59 20 62 2c 20 63 20 44 45 53 43 2c 20 61   BY b, c DESC, a
3370: 0a 20 20 7d 0a 7d 20 7b 68 65 6c 6c 6f 20 64 20  .  }.} {hello d 
3380: 44 20 61 62 63 20 65 20 65 7d 0a 64 6f 5f 74 65  D abc e e}.do_te
3390: 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 35 37 20  st selectA-2.57 
33a0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
33b0: 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46    SELECT a,b,c F
33c0: 52 4f 4d 20 74 31 20 49 4e 54 45 52 53 45 43 54  ROM t1 INTERSECT
33d0: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
33e0: 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3c 27 64  OM t1 WHERE b<'d
33f0: 27 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 62  '.    ORDER BY b
3400: 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45 0a   COLLATE NOCASE.
3410: 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39    }.} {1 a a 9.9
3420: 20 62 20 42 20 7b 7d 20 43 20 63 7d 0a 64 6f 5f   b B {} C c}.do_
3430: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 35  test selectA-2.5
3440: 38 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  8 {.  execsql {.
3450: 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63      SELECT a,b,c
3460: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 62   FROM t1 WHERE b
3470: 3c 27 64 27 20 49 4e 54 45 52 53 45 43 54 20 53  <'d' INTERSECT S
3480: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
3490: 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59   t1.    ORDER BY
34a0: 20 62 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63   b.  }.} {{} C c
34b0: 20 31 20 61 20 61 20 39 2e 39 20 62 20 42 7d 0a   1 a a 9.9 b B}.
34c0: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
34d0: 32 2e 35 39 20 7b 0a 20 20 65 78 65 63 73 71 6c  2.59 {.  execsql
34e0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
34f0: 62 2c 63 20 46 52 4f 4d 20 74 31 20 45 58 43 45  b,c FROM t1 EXCE
3500: 50 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  PT SELECT a,b,c 
3510: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3e  FROM t1 WHERE b>
3520: 3d 27 64 27 0a 20 20 20 20 4f 52 44 45 52 20 42  ='d'.    ORDER B
3530: 59 20 63 2c 20 61 20 44 45 53 43 0a 20 20 7d 0a  Y c, a DESC.  }.
3540: 7d 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42  } {1 a a 9.9 b B
3550: 20 7b 7d 20 43 20 63 7d 0a 64 6f 5f 74 65 73 74   {} C c}.do_test
3560: 20 73 65 6c 65 63 74 41 2d 32 2e 36 30 20 7b 0a   selectA-2.60 {.
3570: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
3580: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
3590: 4d 20 74 31 20 49 4e 54 45 52 53 45 43 54 20 53  M t1 INTERSECT S
35a0: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
35b0: 20 74 31 20 57 48 45 52 45 20 62 3e 3d 27 64 27   t1 WHERE b>='d'
35c0: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63 0a  .    ORDER BY c.
35d0: 20 20 7d 0a 7d 20 7b 68 65 6c 6c 6f 20 64 20 44    }.} {hello d D
35e0: 20 61 62 63 20 65 20 65 7d 0a 64 6f 5f 74 65 73   abc e e}.do_tes
35f0: 74 20 73 65 6c 65 63 74 41 2d 32 2e 36 31 20 7b  t selectA-2.61 {
3600: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
3610: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
3620: 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3e 3d 27  OM t1 WHERE b>='
3630: 64 27 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c  d' INTERSECT SEL
3640: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
3650: 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63  1.    ORDER BY c
3660: 20 43 4f 4c 4c 41 54 45 20 42 49 4e 41 52 59 2c   COLLATE BINARY,
3670: 20 62 20 44 45 53 43 2c 20 63 2c 20 61 2c 20 62   b DESC, c, a, b
3680: 2c 20 63 2c 20 61 2c 20 62 2c 20 63 0a 20 20 7d  , c, a, b, c.  }
3690: 0a 7d 20 7b 68 65 6c 6c 6f 20 64 20 44 20 61 62  .} {hello d D ab
36a0: 63 20 65 20 65 7d 0a 64 6f 5f 74 65 73 74 20 73  c e e}.do_test s
36b0: 65 6c 65 63 74 41 2d 32 2e 36 32 20 7b 0a 20 20  electA-2.62 {.  
36c0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
36d0: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
36e0: 74 31 20 45 58 43 45 50 54 20 53 45 4c 45 43 54  t1 EXCEPT SELECT
36f0: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57   a,b,c FROM t1 W
3700: 48 45 52 45 20 62 3c 27 64 27 0a 20 20 20 20 4f  HERE b<'d'.    O
3710: 52 44 45 52 20 42 59 20 63 20 44 45 53 43 2c 20  RDER BY c DESC, 
3720: 61 0a 20 20 7d 0a 7d 20 7b 61 62 63 20 65 20 65  a.  }.} {abc e e
3730: 20 68 65 6c 6c 6f 20 64 20 44 7d 0a 64 6f 5f 74   hello d D}.do_t
3740: 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 36 33  est selectA-2.63
3750: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
3760: 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20     SELECT a,b,c 
3770: 46 52 4f 4d 20 74 31 20 49 4e 54 45 52 53 45 43  FROM t1 INTERSEC
3780: 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46  T SELECT a,b,c F
3790: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3c 27  ROM t1 WHERE b<'
37a0: 64 27 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  d'.    ORDER BY 
37b0: 63 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45  c COLLATE NOCASE
37c0: 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e  .  }.} {1 a a 9.
37d0: 39 20 62 20 42 20 7b 7d 20 43 20 63 7d 0a 64 6f  9 b B {} C c}.do
37e0: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e  _test selectA-2.
37f0: 36 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  64 {.  execsql {
3800: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
3810: 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  c FROM t1 WHERE 
3820: 62 3c 27 64 27 20 49 4e 54 45 52 53 45 43 54 20  b<'d' INTERSECT 
3830: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
3840: 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42  M t1.    ORDER B
3850: 59 20 63 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61  Y c.  }.} {1 a a
3860: 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 7d   9.9 b B {} C c}
3870: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
3880: 2d 32 2e 36 35 20 7b 0a 20 20 65 78 65 63 73 71  -2.65 {.  execsq
3890: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61  l {.    SELECT a
38a0: 2c 62 2c 63 20 46 52 4f 4d 20 74 33 20 49 4e 54  ,b,c FROM t3 INT
38b0: 45 52 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c  ERSECT SELECT a,
38c0: 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52  b,c FROM t1 WHER
38d0: 45 20 62 3c 27 64 27 0a 20 20 20 20 4f 52 44 45  E b<'d'.    ORDE
38e0: 52 20 42 59 20 63 20 43 4f 4c 4c 41 54 45 20 4e  R BY c COLLATE N
38f0: 4f 43 41 53 45 0a 20 20 7d 0a 7d 20 7b 31 20 61  OCASE.  }.} {1 a
3900: 20 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20   a 9.9 b B {} C 
3910: 63 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  c}.do_test selec
3920: 74 41 2d 32 2e 36 36 20 7b 0a 20 20 65 78 65 63  tA-2.66 {.  exec
3930: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
3940: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57   a,b,c FROM t1 W
3950: 48 45 52 45 20 62 3c 27 64 27 20 49 4e 54 45 52  HERE b<'d' INTER
3960: 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c  SECT SELECT a,b,
3970: 63 20 46 52 4f 4d 20 74 33 0a 20 20 20 20 4f 52  c FROM t3.    OR
3980: 44 45 52 20 42 59 20 63 0a 20 20 7d 0a 7d 20 7b  DER BY c.  }.} {
3990: 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b 7d  1 a a 9.9 b B {}
39a0: 20 43 20 63 7d 0a 64 6f 5f 74 65 73 74 20 73 65   C c}.do_test se
39b0: 6c 65 63 74 41 2d 32 2e 36 37 20 7b 0a 20 20 65  lectA-2.67 {.  e
39c0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
39d0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
39e0: 31 20 45 58 43 45 50 54 20 53 45 4c 45 43 54 20  1 EXCEPT SELECT 
39f0: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 20 57 48  a,b,c FROM t3 WH
3a00: 45 52 45 20 62 3c 27 64 27 0a 20 20 20 20 4f 52  ERE b<'d'.    OR
3a10: 44 45 52 20 42 59 20 63 20 44 45 53 43 2c 20 61  DER BY c DESC, a
3a20: 0a 20 20 7d 0a 7d 20 7b 61 62 63 20 65 20 65 20  .  }.} {abc e e 
3a30: 68 65 6c 6c 6f 20 64 20 44 7d 0a 64 6f 5f 74 65  hello d D}.do_te
3a40: 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 36 38 20  st selectA-2.68 
3a50: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
3a60: 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46    SELECT a,b,c F
3a70: 52 4f 4d 20 74 31 20 45 58 43 45 50 54 20 53 45  ROM t1 EXCEPT SE
3a80: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
3a90: 74 31 20 57 48 45 52 45 20 62 3c 27 64 27 0a 20  t1 WHERE b<'d'. 
3aa0: 20 20 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c     INTERSECT SEL
3ab0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
3ac0: 33 0a 20 20 20 20 45 58 43 45 50 54 20 53 45 4c  3.    EXCEPT SEL
3ad0: 45 43 54 20 62 2c 63 2c 61 20 46 52 4f 4d 20 74  ECT b,c,a FROM t
3ae0: 33 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63  3.    ORDER BY c
3af0: 20 44 45 53 43 2c 20 61 0a 20 20 7d 0a 7d 20 7b   DESC, a.  }.} {
3b00: 61 62 63 20 65 20 65 20 68 65 6c 6c 6f 20 64 20  abc e e hello d 
3b10: 44 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  D}.do_test selec
3b20: 74 41 2d 32 2e 36 39 20 7b 0a 20 20 65 78 65 63  tA-2.69 {.  exec
3b30: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
3b40: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 49   a,b,c FROM t1 I
3b50: 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20  NTERSECT SELECT 
3b60: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48  a,b,c FROM t1 WH
3b70: 45 52 45 20 62 3c 27 64 27 0a 20 20 20 20 49 4e  ERE b<'d'.    IN
3b80: 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20 61  TERSECT SELECT a
3b90: 2c 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20 20  ,b,c FROM t3.   
3ba0: 20 45 58 43 45 50 54 20 53 45 4c 45 43 54 20 62   EXCEPT SELECT b
3bb0: 2c 63 2c 61 20 46 52 4f 4d 20 74 33 0a 20 20 20  ,c,a FROM t3.   
3bc0: 20 4f 52 44 45 52 20 42 59 20 63 20 43 4f 4c 4c   ORDER BY c COLL
3bd0: 41 54 45 20 4e 4f 43 41 53 45 0a 20 20 7d 0a 7d  ATE NOCASE.  }.}
3be0: 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42 20   {1 a a 9.9 b B 
3bf0: 7b 7d 20 43 20 63 7d 0a 64 6f 5f 74 65 73 74 20  {} C c}.do_test 
3c00: 73 65 6c 65 63 74 41 2d 32 2e 37 30 20 7b 0a 20  selectA-2.70 {. 
3c10: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
3c20: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
3c30: 20 74 31 20 57 48 45 52 45 20 62 3c 27 64 27 20   t1 WHERE b<'d' 
3c40: 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43 54  INTERSECT SELECT
3c50: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20   a,b,c FROM t1. 
3c60: 20 20 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c     INTERSECT SEL
3c70: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
3c80: 33 0a 20 20 20 20 45 58 43 45 50 54 20 53 45 4c  3.    EXCEPT SEL
3c90: 45 43 54 20 62 2c 63 2c 61 20 46 52 4f 4d 20 74  ECT b,c,a FROM t
3ca0: 33 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63  3.    ORDER BY c
3cb0: 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e  .  }.} {1 a a 9.
3cc0: 39 20 62 20 42 20 7b 7d 20 43 20 63 7d 0a 64 6f  9 b B {} C c}.do
3cd0: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e  _test selectA-2.
3ce0: 37 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  71 {.  execsql {
3cf0: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
3d00: 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  c FROM t1 WHERE 
3d10: 62 3c 27 64 27 0a 20 20 20 20 49 4e 54 45 52 53  b<'d'.    INTERS
3d20: 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63  ECT SELECT a,b,c
3d30: 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 49 4e 54   FROM t1.    INT
3d40: 45 52 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c  ERSECT SELECT a,
3d50: 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20 20 20  b,c FROM t3.    
3d60: 45 58 43 45 50 54 20 53 45 4c 45 43 54 20 62 2c  EXCEPT SELECT b,
3d70: 63 2c 61 20 46 52 4f 4d 20 74 33 0a 20 20 20 20  c,a FROM t3.    
3d80: 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43 54  INTERSECT SELECT
3d90: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20   a,b,c FROM t1. 
3da0: 20 20 20 45 58 43 45 50 54 20 53 45 4c 45 43 54     EXCEPT SELECT
3db0: 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20   x,y,z FROM t2. 
3dc0: 20 20 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c     INTERSECT SEL
3dd0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
3de0: 33 0a 20 20 20 20 45 58 43 45 50 54 20 53 45 4c  3.    EXCEPT SEL
3df0: 45 43 54 20 79 2c 78 2c 7a 20 46 52 4f 4d 20 74  ECT y,x,z FROM t
3e00: 32 0a 20 20 20 20 49 4e 54 45 52 53 45 43 54 20  2.    INTERSECT 
3e10: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
3e20: 4d 20 74 31 0a 20 20 20 20 45 58 43 45 50 54 20  M t1.    EXCEPT 
3e30: 53 45 4c 45 43 54 20 63 2c 62 2c 61 20 46 52 4f  SELECT c,b,a FRO
3e40: 4d 20 74 33 0a 20 20 20 20 4f 52 44 45 52 20 42  M t3.    ORDER B
3e50: 59 20 63 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61  Y c.  }.} {1 a a
3e60: 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 7d   9.9 b B {} C c}
3e70: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
3e80: 2d 32 2e 37 32 20 7b 0a 20 20 65 78 65 63 73 71  -2.72 {.  execsq
3e90: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61  l {.    SELECT a
3ea0: 2c 62 2c 63 20 46 52 4f 4d 20 74 33 20 55 4e 49  ,b,c FROM t3 UNI
3eb0: 4f 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20  ON SELECT x,y,z 
3ec0: 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45  FROM t2.    ORDE
3ed0: 52 20 42 59 20 61 2c 62 2c 63 0a 20 20 7d 0a 7d  R BY a,b,c.  }.}
3ee0: 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 20   {{} C c {} U u 
3ef0: 2d 32 33 20 59 20 79 20 31 20 61 20 61 20 39 2e  -23 Y y 1 a a 9.
3f00: 39 20 62 20 42 20 35 32 30 30 30 30 30 2e 30 20  9 b B 5200000.0 
3f10: 58 20 78 20 68 65 6c 6c 6f 20 64 20 44 20 6d 61  X x hello d D ma
3f20: 64 20 5a 20 7a 20 61 62 63 20 65 20 65 20 68 61  d Z z abc e e ha
3f30: 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20  re m M}.do_test 
3f40: 73 65 6c 65 63 74 41 2d 32 2e 37 33 20 7b 0a 20  selectA-2.73 {. 
3f50: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
3f60: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
3f70: 20 74 33 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54   t3 UNION SELECT
3f80: 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20   x,y,z FROM t2. 
3f90: 20 20 20 4f 52 44 45 52 20 42 59 20 61 20 44 45     ORDER BY a DE
3fa0: 53 43 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 68 61  SC,b,c.  }.} {ha
3fb0: 72 65 20 6d 20 4d 20 61 62 63 20 65 20 65 20 6d  re m M abc e e m
3fc0: 61 64 20 5a 20 7a 20 68 65 6c 6c 6f 20 64 20 44  ad Z z hello d D
3fd0: 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 39   5200000.0 X x 9
3fe0: 2e 39 20 62 20 42 20 31 20 61 20 61 20 2d 32 33  .9 b B 1 a a -23
3ff0: 20 59 20 79 20 7b 7d 20 43 20 63 20 7b 7d 20 55   Y y {} C c {} U
4000: 20 75 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   u}.do_test sele
4010: 63 74 41 2d 32 2e 37 34 20 7b 0a 20 20 65 78 65  ctA-2.74 {.  exe
4020: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
4030: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 20  T a,b,c FROM t3 
4040: 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 78 2c 79  UNION SELECT x,y
4050: 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f  ,z FROM t2.    O
4060: 52 44 45 52 20 42 59 20 61 2c 63 2c 62 0a 20 20  RDER BY a,c,b.  
4070: 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55  }.} {{} C c {} U
4080: 20 75 20 2d 32 33 20 59 20 79 20 31 20 61 20 61   u -23 Y y 1 a a
4090: 20 39 2e 39 20 62 20 42 20 35 32 30 30 30 30 30   9.9 b B 5200000
40a0: 2e 30 20 58 20 78 20 68 65 6c 6c 6f 20 64 20 44  .0 X x hello d D
40b0: 20 6d 61 64 20 5a 20 7a 20 61 62 63 20 65 20 65   mad Z z abc e e
40c0: 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65   hare m M}.do_te
40d0: 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 37 35 20  st selectA-2.75 
40e0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
40f0: 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46    SELECT a,b,c F
4100: 52 4f 4d 20 74 33 20 55 4e 49 4f 4e 20 53 45 4c  ROM t3 UNION SEL
4110: 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74  ECT x,y,z FROM t
4120: 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 62  2.    ORDER BY b
4130: 2c 61 2c 63 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43  ,a,c.  }.} {{} C
4140: 20 63 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30   c {} U u 520000
4150: 30 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79 20  0.0 X x -23 Y y 
4160: 6d 61 64 20 5a 20 7a 20 31 20 61 20 61 20 39 2e  mad Z z 1 a a 9.
4170: 39 20 62 20 42 20 68 65 6c 6c 6f 20 64 20 44 20  9 b B hello d D 
4180: 61 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d  abc e e hare m M
4190: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
41a0: 41 2d 32 2e 37 36 20 7b 0a 20 20 65 78 65 63 73  A-2.76 {.  execs
41b0: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
41c0: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 20 55 4e  a,b,c FROM t3 UN
41d0: 49 4f 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a  ION SELECT x,y,z
41e0: 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44   FROM t2.    ORD
41f0: 45 52 20 42 59 20 62 20 43 4f 4c 4c 41 54 45 20  ER BY b COLLATE 
4200: 4e 4f 43 41 53 45 2c 61 2c 63 0a 20 20 7d 0a 7d  NOCASE,a,c.  }.}
4210: 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42 20   {1 a a 9.9 b B 
4220: 7b 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64 20 44  {} C c hello d D
4230: 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d 20   abc e e hare m 
4240: 4d 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30 30  M {} U u 5200000
4250: 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79 20 6d  .0 X x -23 Y y m
4260: 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74 20  ad Z z}.do_test 
4270: 73 65 6c 65 63 74 41 2d 32 2e 37 37 20 7b 0a 20  selectA-2.77 {. 
4280: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
4290: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
42a0: 20 74 33 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54   t3 UNION SELECT
42b0: 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20   x,y,z FROM t2. 
42c0: 20 20 20 4f 52 44 45 52 20 42 59 20 62 20 43 4f     ORDER BY b CO
42d0: 4c 4c 41 54 45 20 4e 4f 43 41 53 45 20 44 45 53  LLATE NOCASE DES
42e0: 43 2c 61 2c 63 0a 20 20 7d 0a 7d 20 7b 6d 61 64  C,a,c.  }.} {mad
42f0: 20 5a 20 7a 20 2d 32 33 20 59 20 79 20 35 32 30   Z z -23 Y y 520
4300: 30 30 30 30 2e 30 20 58 20 78 20 7b 7d 20 55 20  0000.0 X x {} U 
4310: 75 20 68 61 72 65 20 6d 20 4d 20 61 62 63 20 65  u hare m M abc e
4320: 20 65 20 68 65 6c 6c 6f 20 64 20 44 20 7b 7d 20   e hello d D {} 
4330: 43 20 63 20 39 2e 39 20 62 20 42 20 31 20 61 20  C c 9.9 b B 1 a 
4340: 61 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  a}.do_test selec
4350: 74 41 2d 32 2e 37 38 20 7b 0a 20 20 65 78 65 63  tA-2.78 {.  exec
4360: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
4370: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 20 55   a,b,c FROM t3 U
4380: 4e 49 4f 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c  NION SELECT x,y,
4390: 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52  z FROM t2.    OR
43a0: 44 45 52 20 42 59 20 63 2c 62 2c 61 0a 20 20 7d  DER BY c,b,a.  }
43b0: 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20  .} {1 a a 9.9 b 
43c0: 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64  B {} C c hello d
43d0: 20 44 20 61 62 63 20 65 20 65 20 68 61 72 65 20   D abc e e hare 
43e0: 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32 30 30 30  m M {} U u 52000
43f0: 30 30 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79  00.0 X x -23 Y y
4400: 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73   mad Z z}.do_tes
4410: 74 20 73 65 6c 65 63 74 41 2d 32 2e 37 39 20 7b  t selectA-2.79 {
4420: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
4430: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
4440: 4f 4d 20 74 33 20 55 4e 49 4f 4e 20 53 45 4c 45  OM t3 UNION SELE
4450: 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32  CT x,y,z FROM t2
4460: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63 2c  .    ORDER BY c,
4470: 61 2c 62 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61  a,b.  }.} {1 a a
4480: 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 20   9.9 b B {} C c 
4490: 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20  hello d D abc e 
44a0: 65 20 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55 20  e hare m M {} U 
44b0: 75 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20  u 5200000.0 X x 
44c0: 2d 32 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 7d  -23 Y y mad Z z}
44d0: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
44e0: 2d 32 2e 38 30 20 7b 0a 20 20 65 78 65 63 73 71  -2.80 {.  execsq
44f0: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61  l {.    SELECT a
4500: 2c 62 2c 63 20 46 52 4f 4d 20 74 33 20 55 4e 49  ,b,c FROM t3 UNI
4510: 4f 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20  ON SELECT x,y,z 
4520: 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45  FROM t2.    ORDE
4530: 52 20 42 59 20 63 20 44 45 53 43 2c 61 2c 62 0a  R BY c DESC,a,b.
4540: 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d    }.} {mad Z z -
4550: 32 33 20 59 20 79 20 35 32 30 30 30 30 30 2e 30  23 Y y 5200000.0
4560: 20 58 20 78 20 7b 7d 20 55 20 75 20 68 61 72 65   X x {} U u hare
4570: 20 6d 20 4d 20 61 62 63 20 65 20 65 20 68 65 6c   m M abc e e hel
4580: 6c 6f 20 64 20 44 20 7b 7d 20 43 20 63 20 39 2e  lo d D {} C c 9.
4590: 39 20 62 20 42 20 31 20 61 20 61 7d 0a 64 6f 5f  9 b B 1 a a}.do_
45a0: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 38  test selectA-2.8
45b0: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  1 {.  execsql {.
45c0: 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63      SELECT a,b,c
45d0: 20 46 52 4f 4d 20 74 33 20 55 4e 49 4f 4e 20 53   FROM t3 UNION S
45e0: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
45f0: 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59   t2.    ORDER BY
4600: 20 63 20 43 4f 4c 4c 41 54 45 20 42 49 4e 41 52   c COLLATE BINAR
4610: 59 20 44 45 53 43 2c 61 2c 62 0a 20 20 7d 0a 7d  Y DESC,a,b.  }.}
4620: 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59 20   {mad Z z -23 Y 
4630: 79 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20  y 5200000.0 X x 
4640: 7b 7d 20 55 20 75 20 61 62 63 20 65 20 65 20 7b  {} U u abc e e {
4650: 7d 20 43 20 63 20 31 20 61 20 61 20 68 61 72 65  } C c 1 a a hare
4660: 20 6d 20 4d 20 68 65 6c 6c 6f 20 64 20 44 20 39   m M hello d D 9
4670: 2e 39 20 62 20 42 7d 0a 64 6f 5f 74 65 73 74 20  .9 b B}.do_test 
4680: 73 65 6c 65 63 74 41 2d 32 2e 38 32 20 7b 0a 20  selectA-2.82 {. 
4690: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
46a0: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
46b0: 20 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54   t2 UNION SELECT
46c0: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20   a,b,c FROM t3. 
46d0: 20 20 20 4f 52 44 45 52 20 42 59 20 61 2c 62 2c     ORDER BY a,b,
46e0: 63 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20  c.  }.} {{} C c 
46f0: 7b 7d 20 55 20 75 20 2d 32 33 20 59 20 79 20 31  {} U u -23 Y y 1
4700: 20 61 20 61 20 39 2e 39 20 62 20 42 20 35 32 30   a a 9.9 b B 520
4710: 30 30 30 30 2e 30 20 58 20 78 20 68 65 6c 6c 6f  0000.0 X x hello
4720: 20 64 20 44 20 6d 61 64 20 5a 20 7a 20 61 62 63   d D mad Z z abc
4730: 20 65 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a 64   e e hare m M}.d
4740: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32  o_test selectA-2
4750: 2e 38 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .83 {.  execsql 
4760: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79  {.    SELECT x,y
4770: 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e  ,z FROM t2 UNION
4780: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
4790: 4f 4d 20 74 33 0a 20 20 20 20 4f 52 44 45 52 20  OM t3.    ORDER 
47a0: 42 59 20 61 20 44 45 53 43 2c 62 2c 63 0a 20 20  BY a DESC,b,c.  
47b0: 7d 0a 7d 20 7b 68 61 72 65 20 6d 20 4d 20 61 62  }.} {hare m M ab
47c0: 63 20 65 20 65 20 6d 61 64 20 5a 20 7a 20 68 65  c e e mad Z z he
47d0: 6c 6c 6f 20 64 20 44 20 35 32 30 30 30 30 30 2e  llo d D 5200000.
47e0: 30 20 58 20 78 20 39 2e 39 20 62 20 42 20 31 20  0 X x 9.9 b B 1 
47f0: 61 20 61 20 2d 32 33 20 59 20 79 20 7b 7d 20 43  a a -23 Y y {} C
4800: 20 63 20 7b 7d 20 55 20 75 7d 0a 64 6f 5f 74 65   c {} U u}.do_te
4810: 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 38 34 20  st selectA-2.84 
4820: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
4830: 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46    SELECT x,y,z F
4840: 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 53 45 4c  ROM t2 UNION SEL
4850: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
4860: 33 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 61  3.    ORDER BY a
4870: 2c 63 2c 62 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43  ,c,b.  }.} {{} C
4880: 20 63 20 7b 7d 20 55 20 75 20 2d 32 33 20 59 20   c {} U u -23 Y 
4890: 79 20 31 20 61 20 61 20 39 2e 39 20 62 20 42 20  y 1 a a 9.9 b B 
48a0: 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 68 65  5200000.0 X x he
48b0: 6c 6c 6f 20 64 20 44 20 6d 61 64 20 5a 20 7a 20  llo d D mad Z z 
48c0: 61 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d  abc e e hare m M
48d0: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
48e0: 41 2d 32 2e 38 35 20 7b 0a 20 20 65 78 65 63 73  A-2.85 {.  execs
48f0: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
4900: 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e  x,y,z FROM t2 UN
4910: 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62 2c 63  ION SELECT a,b,c
4920: 20 46 52 4f 4d 20 74 33 0a 20 20 20 20 4f 52 44   FROM t3.    ORD
4930: 45 52 20 42 59 20 62 2c 61 2c 63 0a 20 20 7d 0a  ER BY b,a,c.  }.
4940: 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75  } {{} C c {} U u
4950: 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d   5200000.0 X x -
4960: 32 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 20 31  23 Y y mad Z z 1
4970: 20 61 20 61 20 39 2e 39 20 62 20 42 20 68 65 6c   a a 9.9 b B hel
4980: 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65 20 68  lo d D abc e e h
4990: 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74  are m M}.do_test
49a0: 20 73 65 6c 65 63 74 41 2d 32 2e 38 36 20 7b 0a   selectA-2.86 {.
49b0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
49c0: 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f  SELECT x,y,z FRO
49d0: 4d 20 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43  M t2 UNION SELEC
49e0: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 0a  T a,b,c FROM t3.
49f0: 20 20 20 20 4f 52 44 45 52 20 42 59 20 79 20 43      ORDER BY y C
4a00: 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45 2c 78 2c  OLLATE NOCASE,x,
4a10: 7a 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39  z.  }.} {1 a a 9
4a20: 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 20 68 65  .9 b B {} C c he
4a30: 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65 20  llo d D abc e e 
4a40: 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20  hare m M {} U u 
4a50: 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32  5200000.0 X x -2
4a60: 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64  3 Y y mad Z z}.d
4a70: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32  o_test selectA-2
4a80: 2e 38 37 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .87 {.  execsql 
4a90: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79  {.    SELECT x,y
4aa0: 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e  ,z FROM t2 UNION
4ab0: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
4ac0: 4f 4d 20 74 33 0a 20 20 20 20 4f 52 44 45 52 20  OM t3.    ORDER 
4ad0: 42 59 20 79 20 43 4f 4c 4c 41 54 45 20 4e 4f 43  BY y COLLATE NOC
4ae0: 41 53 45 20 44 45 53 43 2c 78 2c 7a 0a 20 20 7d  ASE DESC,x,z.  }
4af0: 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20  .} {mad Z z -23 
4b00: 59 20 79 20 35 32 30 30 30 30 30 2e 30 20 58 20  Y y 5200000.0 X 
4b10: 78 20 7b 7d 20 55 20 75 20 68 61 72 65 20 6d 20  x {} U u hare m 
4b20: 4d 20 61 62 63 20 65 20 65 20 68 65 6c 6c 6f 20  M abc e e hello 
4b30: 64 20 44 20 7b 7d 20 43 20 63 20 39 2e 39 20 62  d D {} C c 9.9 b
4b40: 20 42 20 31 20 61 20 61 7d 0a 64 6f 5f 74 65 73   B 1 a a}.do_tes
4b50: 74 20 73 65 6c 65 63 74 41 2d 32 2e 38 38 20 7b  t selectA-2.88 {
4b60: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
4b70: 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52   SELECT x,y,z FR
4b80: 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45  OM t2 UNION SELE
4b90: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33  CT a,b,c FROM t3
4ba0: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63 2c  .    ORDER BY c,
4bb0: 62 2c 61 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61  b,a.  }.} {1 a a
4bc0: 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 20   9.9 b B {} C c 
4bd0: 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20  hello d D abc e 
4be0: 65 20 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55 20  e hare m M {} U 
4bf0: 75 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20  u 5200000.0 X x 
4c00: 2d 32 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 7d  -23 Y y mad Z z}
4c10: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
4c20: 2d 32 2e 38 39 20 7b 0a 20 20 65 78 65 63 73 71  -2.89 {.  execsq
4c30: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78  l {.    SELECT x
4c40: 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49  ,y,z FROM t2 UNI
4c50: 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  ON SELECT a,b,c 
4c60: 46 52 4f 4d 20 74 33 0a 20 20 20 20 4f 52 44 45  FROM t3.    ORDE
4c70: 52 20 42 59 20 63 2c 61 2c 62 0a 20 20 7d 0a 7d  R BY c,a,b.  }.}
4c80: 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42 20   {1 a a 9.9 b B 
4c90: 7b 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64 20 44  {} C c hello d D
4ca0: 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d 20   abc e e hare m 
4cb0: 4d 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30 30  M {} U u 5200000
4cc0: 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79 20 6d  .0 X x -23 Y y m
4cd0: 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74 20  ad Z z}.do_test 
4ce0: 73 65 6c 65 63 74 41 2d 32 2e 39 30 20 7b 0a 20  selectA-2.90 {. 
4cf0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
4d00: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
4d10: 20 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54   t2 UNION SELECT
4d20: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20   a,b,c FROM t3. 
4d30: 20 20 20 4f 52 44 45 52 20 42 59 20 63 20 44 45     ORDER BY c DE
4d40: 53 43 2c 61 2c 62 0a 20 20 7d 0a 7d 20 7b 6d 61  SC,a,b.  }.} {ma
4d50: 64 20 5a 20 7a 20 2d 32 33 20 59 20 79 20 35 32  d Z z -23 Y y 52
4d60: 30 30 30 30 30 2e 30 20 58 20 78 20 7b 7d 20 55  00000.0 X x {} U
4d70: 20 75 20 68 61 72 65 20 6d 20 4d 20 61 62 63 20   u hare m M abc 
4d80: 65 20 65 20 68 65 6c 6c 6f 20 64 20 44 20 7b 7d  e e hello d D {}
4d90: 20 43 20 63 20 39 2e 39 20 62 20 42 20 31 20 61   C c 9.9 b B 1 a
4da0: 20 61 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   a}.do_test sele
4db0: 63 74 41 2d 32 2e 39 31 20 7b 0a 20 20 65 78 65  ctA-2.91 {.  exe
4dc0: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
4dd0: 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20  T x,y,z FROM t2 
4de0: 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62  UNION SELECT a,b
4df0: 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20 20 20 4f  ,c FROM t3.    O
4e00: 52 44 45 52 20 42 59 20 7a 20 43 4f 4c 4c 41 54  RDER BY z COLLAT
4e10: 45 20 42 49 4e 41 52 59 20 44 45 53 43 2c 78 2c  E BINARY DESC,x,
4e20: 79 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a  y.  }.} {mad Z z
4e30: 20 2d 32 33 20 59 20 79 20 35 32 30 30 30 30 30   -23 Y y 5200000
4e40: 2e 30 20 58 20 78 20 7b 7d 20 55 20 75 20 61 62  .0 X x {} U u ab
4e50: 63 20 65 20 65 20 7b 7d 20 43 20 63 20 31 20 61  c e e {} C c 1 a
4e60: 20 61 20 68 61 72 65 20 6d 20 4d 20 68 65 6c 6c   a hare m M hell
4e70: 6f 20 64 20 44 20 39 2e 39 20 62 20 42 7d 0a 64  o d D 9.9 b B}.d
4e80: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32  o_test selectA-2
4e90: 2e 39 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .92 {.  execsql 
4ea0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79  {.    SELECT x,y
4eb0: 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 49  ,z FROM t2.    I
4ec0: 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20  NTERSECT SELECT 
4ed0: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20  a,b,c FROM t3.  
4ee0: 20 20 45 58 43 45 50 54 20 53 45 4c 45 43 54 20    EXCEPT SELECT 
4ef0: 63 2c 62 2c 61 20 46 52 4f 4d 20 74 31 0a 20 20  c,b,a FROM t1.  
4f00: 20 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61    UNION SELECT a
4f10: 2c 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20 20  ,b,c FROM t3.   
4f20: 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43   INTERSECT SELEC
4f30: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 0a  T a,b,c FROM t3.
4f40: 20 20 20 20 45 58 43 45 50 54 20 53 45 4c 45 43      EXCEPT SELEC
4f50: 54 20 63 2c 62 2c 61 20 46 52 4f 4d 20 74 31 0a  T c,b,a FROM t1.
4f60: 20 20 20 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54      UNION SELECT
4f70: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20   a,b,c FROM t3. 
4f80: 20 20 20 4f 52 44 45 52 20 42 59 20 79 20 43 4f     ORDER BY y CO
4f90: 4c 4c 41 54 45 20 4e 4f 43 41 53 45 20 44 45 53  LLATE NOCASE DES
4fa0: 43 2c 78 2c 7a 0a 20 20 7d 0a 7d 20 7b 6d 61 64  C,x,z.  }.} {mad
4fb0: 20 5a 20 7a 20 2d 32 33 20 59 20 79 20 35 32 30   Z z -23 Y y 520
4fc0: 30 30 30 30 2e 30 20 58 20 78 20 7b 7d 20 55 20  0000.0 X x {} U 
4fd0: 75 20 68 61 72 65 20 6d 20 4d 20 61 62 63 20 65  u hare m M abc e
4fe0: 20 65 20 68 65 6c 6c 6f 20 64 20 44 20 7b 7d 20   e hello d D {} 
4ff0: 43 20 63 20 39 2e 39 20 62 20 42 20 31 20 61 20  C c 9.9 b B 1 a 
5000: 61 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  a}.do_test selec
5010: 74 41 2d 32 2e 39 33 20 7b 0a 20 20 65 78 65 63  tA-2.93 {.  exec
5020: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
5030: 20 75 70 70 65 72 28 28 53 45 4c 45 43 54 20 63   upper((SELECT c
5040: 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 53   FROM t1 UNION S
5050: 45 4c 45 43 54 20 7a 20 46 52 4f 4d 20 74 32 20  ELECT z FROM t2 
5060: 4f 52 44 45 52 20 42 59 20 31 29 29 3b 0a 20 20  ORDER BY 1));.  
5070: 7d 0a 7d 20 7b 41 7d 0a 64 6f 5f 74 65 73 74 20  }.} {A}.do_test 
5080: 73 65 6c 65 63 74 41 2d 32 2e 39 34 20 7b 0a 20  selectA-2.94 {. 
5090: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
50a0: 45 4c 45 43 54 20 6c 6f 77 65 72 28 28 53 45 4c  ELECT lower((SEL
50b0: 45 43 54 20 63 20 46 52 4f 4d 20 74 31 20 55 4e  ECT c FROM t1 UN
50c0: 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 7a  ION ALL SELECT z
50d0: 20 46 52 4f 4d 20 74 32 20 4f 52 44 45 52 20 42   FROM t2 ORDER B
50e0: 59 20 31 29 29 3b 0a 20 20 7d 0a 7d 20 7b 61 7d  Y 1));.  }.} {a}
50f0: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
5100: 2d 32 2e 39 35 20 7b 0a 20 20 65 78 65 63 73 71  -2.95 {.  execsq
5110: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 6c  l {.    SELECT l
5120: 6f 77 65 72 28 28 53 45 4c 45 43 54 20 63 20 46  ower((SELECT c F
5130: 52 4f 4d 20 74 31 20 49 4e 54 45 52 53 45 43 54  ROM t1 INTERSECT
5140: 20 53 45 4c 45 43 54 20 7a 20 46 52 4f 4d 20 74   SELECT z FROM t
5150: 32 20 4f 52 44 45 52 20 42 59 20 31 29 29 3b 0a  2 ORDER BY 1));.
5160: 20 20 7d 0a 7d 20 7b 7b 7d 7d 0a 64 6f 5f 74 65    }.} {{}}.do_te
5170: 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 39 36 20  st selectA-2.96 
5180: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
5190: 20 20 53 45 4c 45 43 54 20 6c 6f 77 65 72 28 28    SELECT lower((
51a0: 53 45 4c 45 43 54 20 7a 20 46 52 4f 4d 20 74 32  SELECT z FROM t2
51b0: 20 45 58 43 45 50 54 20 53 45 4c 45 43 54 20 63   EXCEPT SELECT c
51c0: 20 46 52 4f 4d 20 74 31 20 4f 52 44 45 52 20 42   FROM t1 ORDER B
51d0: 59 20 31 29 29 3b 0a 20 20 7d 0a 7d 20 7b 6d 7d  Y 1));.  }.} {m}
51e0: 0a 0a 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  ...do_test selec
51f0: 74 41 2d 33 2e 30 20 7b 0a 20 20 65 78 65 63 73  tA-3.0 {.  execs
5200: 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20  ql {.    CREATE 
5210: 55 4e 49 51 55 45 20 49 4e 44 45 58 20 74 31 61  UNIQUE INDEX t1a
5220: 20 4f 4e 20 74 31 28 61 29 3b 0a 20 20 20 20 43   ON t1(a);.    C
5230: 52 45 41 54 45 20 55 4e 49 51 55 45 20 49 4e 44  REATE UNIQUE IND
5240: 45 58 20 74 31 62 20 4f 4e 20 74 31 28 62 29 3b  EX t1b ON t1(b);
5250: 0a 20 20 20 20 43 52 45 41 54 45 20 55 4e 49 51  .    CREATE UNIQ
5260: 55 45 20 49 4e 44 45 58 20 74 31 63 20 4f 4e 20  UE INDEX t1c ON 
5270: 74 31 28 63 29 3b 0a 20 20 20 20 43 52 45 41 54  t1(c);.    CREAT
5280: 45 20 55 4e 49 51 55 45 20 49 4e 44 45 58 20 74  E UNIQUE INDEX t
5290: 32 78 20 4f 4e 20 74 32 28 78 29 3b 0a 20 20 20  2x ON t2(x);.   
52a0: 20 43 52 45 41 54 45 20 55 4e 49 51 55 45 20 49   CREATE UNIQUE I
52b0: 4e 44 45 58 20 74 32 79 20 4f 4e 20 74 32 28 79  NDEX t2y ON t2(y
52c0: 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20 55 4e  );.    CREATE UN
52d0: 49 51 55 45 20 49 4e 44 45 58 20 74 32 7a 20 4f  IQUE INDEX t2z O
52e0: 4e 20 74 32 28 7a 29 3b 0a 20 20 20 20 53 45 4c  N t2(z);.    SEL
52f0: 45 43 54 20 6e 61 6d 65 20 46 52 4f 4d 20 73 71  ECT name FROM sq
5300: 6c 69 74 65 5f 6d 61 73 74 65 72 20 57 48 45 52  lite_master WHER
5310: 45 20 74 79 70 65 3d 27 69 6e 64 65 78 27 0a 20  E type='index'. 
5320: 20 7d 0a 7d 20 7b 74 31 61 20 74 31 62 20 74 31   }.} {t1a t1b t1
5330: 63 20 74 32 78 20 74 32 79 20 74 32 7a 7d 0a 64  c t2x t2y t2z}.d
5340: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33  o_test selectA-3
5350: 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .1 {.  execsql {
5360: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
5370: 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20  c FROM t1 UNION 
5380: 41 4c 4c 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a  ALL SELECT x,y,z
5390: 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44   FROM t2.    ORD
53a0: 45 52 20 42 59 20 61 2c 62 2c 63 0a 20 20 7d 0a  ER BY a,b,c.  }.
53b0: 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75  } {{} C c {} U u
53c0: 20 2d 32 33 20 59 20 79 20 31 20 61 20 61 20 39   -23 Y y 1 a a 9
53d0: 2e 39 20 62 20 42 20 35 32 30 30 30 30 30 2e 30  .9 b B 5200000.0
53e0: 20 58 20 78 20 68 65 6c 6c 6f 20 64 20 44 20 6d   X x hello d D m
53f0: 61 64 20 5a 20 7a 20 61 62 63 20 65 20 65 20 68  ad Z z abc e e h
5400: 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74  are m M}.do_test
5410: 20 73 65 6c 65 63 74 41 2d 33 2e 31 2e 31 20 7b   selectA-3.1.1 {
5420: 20 20 23 20 54 69 63 6b 65 74 20 23 33 33 31 34    # Ticket #3314
5430: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
5440: 20 53 45 4c 45 43 54 20 74 31 2e 61 2c 62 2c 74   SELECT t1.a,b,t
5450: 31 2e 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f  1.c FROM t1 UNIO
5460: 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 78 2c 79  N ALL SELECT x,y
5470: 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f  ,z FROM t2.    O
5480: 52 44 45 52 20 42 59 20 61 2c 74 31 2e 62 2c 74  RDER BY a,t1.b,t
5490: 31 2e 63 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20  1.c.  }.} {{} C 
54a0: 63 20 7b 7d 20 55 20 75 20 2d 32 33 20 59 20 79  c {} U u -23 Y y
54b0: 20 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 35   1 a a 9.9 b B 5
54c0: 32 30 30 30 30 30 2e 30 20 58 20 78 20 68 65 6c  200000.0 X x hel
54d0: 6c 6f 20 64 20 44 20 6d 61 64 20 5a 20 7a 20 61  lo d D mad Z z a
54e0: 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d 7d  bc e e hare m M}
54f0: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
5500: 2d 33 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c  -3.2 {.  execsql
5510: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
5520: 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f  b,c FROM t1 UNIO
5530: 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 78 2c 79  N ALL SELECT x,y
5540: 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f  ,z FROM t2.    O
5550: 52 44 45 52 20 42 59 20 61 20 44 45 53 43 2c 62  RDER BY a DESC,b
5560: 2c 63 0a 20 20 7d 0a 7d 20 7b 68 61 72 65 20 6d  ,c.  }.} {hare m
5570: 20 4d 20 61 62 63 20 65 20 65 20 6d 61 64 20 5a   M abc e e mad Z
5580: 20 7a 20 68 65 6c 6c 6f 20 64 20 44 20 35 32 30   z hello d D 520
5590: 30 30 30 30 2e 30 20 58 20 78 20 39 2e 39 20 62  0000.0 X x 9.9 b
55a0: 20 42 20 31 20 61 20 61 20 2d 32 33 20 59 20 79   B 1 a a -23 Y y
55b0: 20 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 7d 0a   {} C c {} U u}.
55c0: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
55d0: 33 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  3.3 {.  execsql 
55e0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62  {.    SELECT a,b
55f0: 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e  ,c FROM t1 UNION
5600: 20 41 4c 4c 20 53 45 4c 45 43 54 20 78 2c 79 2c   ALL SELECT x,y,
5610: 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52  z FROM t2.    OR
5620: 44 45 52 20 42 59 20 61 2c 63 2c 62 0a 20 20 7d  DER BY a,c,b.  }
5630: 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20  .} {{} C c {} U 
5640: 75 20 2d 32 33 20 59 20 79 20 31 20 61 20 61 20  u -23 Y y 1 a a 
5650: 39 2e 39 20 62 20 42 20 35 32 30 30 30 30 30 2e  9.9 b B 5200000.
5660: 30 20 58 20 78 20 68 65 6c 6c 6f 20 64 20 44 20  0 X x hello d D 
5670: 6d 61 64 20 5a 20 7a 20 61 62 63 20 65 20 65 20  mad Z z abc e e 
5680: 68 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73  hare m M}.do_tes
5690: 74 20 73 65 6c 65 63 74 41 2d 33 2e 34 20 7b 0a  t selectA-3.4 {.
56a0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
56b0: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
56c0: 4d 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 20 53  M t1 UNION ALL S
56d0: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
56e0: 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59   t2.    ORDER BY
56f0: 20 62 2c 61 2c 63 0a 20 20 7d 0a 7d 20 7b 7b 7d   b,a,c.  }.} {{}
5700: 20 43 20 63 20 7b 7d 20 55 20 75 20 35 32 30 30   C c {} U u 5200
5710: 30 30 30 2e 30 20 58 20 78 20 2d 32 33 20 59 20  000.0 X x -23 Y 
5720: 79 20 6d 61 64 20 5a 20 7a 20 31 20 61 20 61 20  y mad Z z 1 a a 
5730: 39 2e 39 20 62 20 42 20 68 65 6c 6c 6f 20 64 20  9.9 b B hello d 
5740: 44 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d  D abc e e hare m
5750: 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   M}.do_test sele
5760: 63 74 41 2d 33 2e 35 20 7b 0a 20 20 65 78 65 63  ctA-3.5 {.  exec
5770: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
5780: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 55   a,b,c FROM t1 U
5790: 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20  NION ALL SELECT 
57a0: 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20  x,y,z FROM t2.  
57b0: 20 20 4f 52 44 45 52 20 42 59 20 62 20 43 4f 4c    ORDER BY b COL
57c0: 4c 41 54 45 20 4e 4f 43 41 53 45 2c 61 2c 63 0a  LATE NOCASE,a,c.
57d0: 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39    }.} {1 a a 9.9
57e0: 20 62 20 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c   b B {} C c hell
57f0: 6f 20 64 20 44 20 61 62 63 20 65 20 65 20 68 61  o d D abc e e ha
5800: 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32  re m M {} U u 52
5810: 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32 33 20  00000.0 X x -23 
5820: 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f  Y y mad Z z}.do_
5830: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 36  test selectA-3.6
5840: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
5850: 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20     SELECT a,b,c 
5860: 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 41 4c  FROM t1 UNION AL
5870: 4c 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46  L SELECT x,y,z F
5880: 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52  ROM t2.    ORDER
5890: 20 42 59 20 62 20 43 4f 4c 4c 41 54 45 20 4e 4f   BY b COLLATE NO
58a0: 43 41 53 45 20 44 45 53 43 2c 61 2c 63 0a 20 20  CASE DESC,a,c.  
58b0: 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33  }.} {mad Z z -23
58c0: 20 59 20 79 20 35 32 30 30 30 30 30 2e 30 20 58   Y y 5200000.0 X
58d0: 20 78 20 7b 7d 20 55 20 75 20 68 61 72 65 20 6d   x {} U u hare m
58e0: 20 4d 20 61 62 63 20 65 20 65 20 68 65 6c 6c 6f   M abc e e hello
58f0: 20 64 20 44 20 7b 7d 20 43 20 63 20 39 2e 39 20   d D {} C c 9.9 
5900: 62 20 42 20 31 20 61 20 61 7d 0a 64 6f 5f 74 65  b B 1 a a}.do_te
5910: 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 37 20 7b  st selectA-3.7 {
5920: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
5930: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
5940: 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 20  OM t1 UNION ALL 
5950: 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f  SELECT x,y,z FRO
5960: 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42  M t2.    ORDER B
5970: 59 20 63 2c 62 2c 61 0a 20 20 7d 0a 7d 20 7b 31  Y c,b,a.  }.} {1
5980: 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b 7d 20   a a 9.9 b B {} 
5990: 43 20 63 20 68 65 6c 6c 6f 20 64 20 44 20 61 62  C c hello d D ab
59a0: 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d 20 7b  c e e hare m M {
59b0: 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e 30 20  } U u 5200000.0 
59c0: 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61 64 20  X x -23 Y y mad 
59d0: 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  Z z}.do_test sel
59e0: 65 63 74 41 2d 33 2e 38 20 7b 0a 20 20 65 78 65  ectA-3.8 {.  exe
59f0: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
5a00: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
5a10: 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54  UNION ALL SELECT
5a20: 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20   x,y,z FROM t2. 
5a30: 20 20 20 4f 52 44 45 52 20 42 59 20 63 2c 61 2c     ORDER BY c,a,
5a40: 62 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39  b.  }.} {1 a a 9
5a50: 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 20 68 65  .9 b B {} C c he
5a60: 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65 20  llo d D abc e e 
5a70: 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20  hare m M {} U u 
5a80: 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32  5200000.0 X x -2
5a90: 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64  3 Y y mad Z z}.d
5aa0: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33  o_test selectA-3
5ab0: 2e 39 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .9 {.  execsql {
5ac0: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
5ad0: 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20  c FROM t1 UNION 
5ae0: 41 4c 4c 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a  ALL SELECT x,y,z
5af0: 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44   FROM t2.    ORD
5b00: 45 52 20 42 59 20 63 20 44 45 53 43 2c 61 2c 62  ER BY c DESC,a,b
5b10: 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20  .  }.} {mad Z z 
5b20: 2d 32 33 20 59 20 79 20 35 32 30 30 30 30 30 2e  -23 Y y 5200000.
5b30: 30 20 58 20 78 20 7b 7d 20 55 20 75 20 68 61 72  0 X x {} U u har
5b40: 65 20 6d 20 4d 20 61 62 63 20 65 20 65 20 68 65  e m M abc e e he
5b50: 6c 6c 6f 20 64 20 44 20 7b 7d 20 43 20 63 20 39  llo d D {} C c 9
5b60: 2e 39 20 62 20 42 20 31 20 61 20 61 7d 0a 64 6f  .9 b B 1 a a}.do
5b70: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e  _test selectA-3.
5b80: 31 30 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  10 {.  execsql {
5b90: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
5ba0: 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20  c FROM t1 UNION 
5bb0: 41 4c 4c 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a  ALL SELECT x,y,z
5bc0: 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44   FROM t2.    ORD
5bd0: 45 52 20 42 59 20 63 20 43 4f 4c 4c 41 54 45 20  ER BY c COLLATE 
5be0: 42 49 4e 41 52 59 20 44 45 53 43 2c 61 2c 62 0a  BINARY DESC,a,b.
5bf0: 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d    }.} {mad Z z -
5c00: 32 33 20 59 20 79 20 35 32 30 30 30 30 30 2e 30  23 Y y 5200000.0
5c10: 20 58 20 78 20 7b 7d 20 55 20 75 20 61 62 63 20   X x {} U u abc 
5c20: 65 20 65 20 7b 7d 20 43 20 63 20 31 20 61 20 61  e e {} C c 1 a a
5c30: 20 68 61 72 65 20 6d 20 4d 20 68 65 6c 6c 6f 20   hare m M hello 
5c40: 64 20 44 20 39 2e 39 20 62 20 42 7d 0a 64 6f 5f  d D 9.9 b B}.do_
5c50: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 31  test selectA-3.1
5c60: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  1 {.  execsql {.
5c70: 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a      SELECT x,y,z
5c80: 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 41   FROM t2 UNION A
5c90: 4c 4c 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  LL SELECT a,b,c 
5ca0: 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45  FROM t1.    ORDE
5cb0: 52 20 42 59 20 61 2c 62 2c 63 0a 20 20 7d 0a 7d  R BY a,b,c.  }.}
5cc0: 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 20   {{} C c {} U u 
5cd0: 2d 32 33 20 59 20 79 20 31 20 61 20 61 20 39 2e  -23 Y y 1 a a 9.
5ce0: 39 20 62 20 42 20 35 32 30 30 30 30 30 2e 30 20  9 b B 5200000.0 
5cf0: 58 20 78 20 68 65 6c 6c 6f 20 64 20 44 20 6d 61  X x hello d D ma
5d00: 64 20 5a 20 7a 20 61 62 63 20 65 20 65 20 68 61  d Z z abc e e ha
5d10: 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20  re m M}.do_test 
5d20: 73 65 6c 65 63 74 41 2d 33 2e 31 32 20 7b 0a 20  selectA-3.12 {. 
5d30: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
5d40: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
5d50: 20 74 32 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45   t2 UNION ALL SE
5d60: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
5d70: 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  t1.    ORDER BY 
5d80: 61 20 44 45 53 43 2c 62 2c 63 0a 20 20 7d 0a 7d  a DESC,b,c.  }.}
5d90: 20 7b 68 61 72 65 20 6d 20 4d 20 61 62 63 20 65   {hare m M abc e
5da0: 20 65 20 6d 61 64 20 5a 20 7a 20 68 65 6c 6c 6f   e mad Z z hello
5db0: 20 64 20 44 20 35 32 30 30 30 30 30 2e 30 20 58   d D 5200000.0 X
5dc0: 20 78 20 39 2e 39 20 62 20 42 20 31 20 61 20 61   x 9.9 b B 1 a a
5dd0: 20 2d 32 33 20 59 20 79 20 7b 7d 20 43 20 63 20   -23 Y y {} C c 
5de0: 7b 7d 20 55 20 75 7d 0a 64 6f 5f 74 65 73 74 20  {} U u}.do_test 
5df0: 73 65 6c 65 63 74 41 2d 33 2e 31 33 20 7b 0a 20  selectA-3.13 {. 
5e00: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
5e10: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
5e20: 20 74 32 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45   t2 UNION ALL SE
5e30: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
5e40: 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  t1.    ORDER BY 
5e50: 61 2c 63 2c 62 0a 20 20 7d 0a 7d 20 7b 7b 7d 20  a,c,b.  }.} {{} 
5e60: 43 20 63 20 7b 7d 20 55 20 75 20 2d 32 33 20 59  C c {} U u -23 Y
5e70: 20 79 20 31 20 61 20 61 20 39 2e 39 20 62 20 42   y 1 a a 9.9 b B
5e80: 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 68   5200000.0 X x h
5e90: 65 6c 6c 6f 20 64 20 44 20 6d 61 64 20 5a 20 7a  ello d D mad Z z
5ea0: 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d 20   abc e e hare m 
5eb0: 4d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  M}.do_test selec
5ec0: 74 41 2d 33 2e 31 34 20 7b 0a 20 20 65 78 65 63  tA-3.14 {.  exec
5ed0: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
5ee0: 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55   x,y,z FROM t2 U
5ef0: 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20  NION ALL SELECT 
5f00: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20  a,b,c FROM t1.  
5f10: 20 20 4f 52 44 45 52 20 42 59 20 62 2c 61 2c 63    ORDER BY b,a,c
5f20: 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b  .  }.} {{} C c {
5f30: 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e 30 20  } U u 5200000.0 
5f40: 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61 64 20  X x -23 Y y mad 
5f50: 5a 20 7a 20 31 20 61 20 61 20 39 2e 39 20 62 20  Z z 1 a a 9.9 b 
5f60: 42 20 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20  B hello d D abc 
5f70: 65 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f  e e hare m M}.do
5f80: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e  _test selectA-3.
5f90: 31 35 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  15 {.  execsql {
5fa0: 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c  .    SELECT x,y,
5fb0: 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20  z FROM t2 UNION 
5fc0: 41 4c 4c 20 53 45 4c 45 43 54 20 61 2c 62 2c 63  ALL SELECT a,b,c
5fd0: 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44   FROM t1.    ORD
5fe0: 45 52 20 42 59 20 62 20 43 4f 4c 4c 41 54 45 20  ER BY b COLLATE 
5ff0: 4e 4f 43 41 53 45 2c 61 2c 63 0a 20 20 7d 0a 7d  NOCASE,a,c.  }.}
6000: 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42 20   {1 a a 9.9 b B 
6010: 7b 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64 20 44  {} C c hello d D
6020: 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d 20   abc e e hare m 
6030: 4d 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30 30  M {} U u 5200000
6040: 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79 20 6d  .0 X x -23 Y y m
6050: 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74 20  ad Z z}.do_test 
6060: 73 65 6c 65 63 74 41 2d 33 2e 31 36 20 7b 0a 20  selectA-3.16 {. 
6070: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
6080: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
6090: 20 74 32 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45   t2 UNION ALL SE
60a0: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
60b0: 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  t1.    ORDER BY 
60c0: 62 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45  b COLLATE NOCASE
60d0: 20 44 45 53 43 2c 61 2c 63 0a 20 20 7d 0a 7d 20   DESC,a,c.  }.} 
60e0: 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59 20 79  {mad Z z -23 Y y
60f0: 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 7b   5200000.0 X x {
6100: 7d 20 55 20 75 20 68 61 72 65 20 6d 20 4d 20 61  } U u hare m M a
6110: 62 63 20 65 20 65 20 68 65 6c 6c 6f 20 64 20 44  bc e e hello d D
6120: 20 7b 7d 20 43 20 63 20 39 2e 39 20 62 20 42 20   {} C c 9.9 b B 
6130: 31 20 61 20 61 7d 0a 64 6f 5f 74 65 73 74 20 73  1 a a}.do_test s
6140: 65 6c 65 63 74 41 2d 33 2e 31 37 20 7b 0a 20 20  electA-3.17 {.  
6150: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
6160: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
6170: 74 32 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c  t2 UNION ALL SEL
6180: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
6190: 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63  1.    ORDER BY c
61a0: 2c 62 2c 61 0a 20 20 7d 0a 7d 20 7b 31 20 61 20  ,b,a.  }.} {1 a 
61b0: 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63  a 9.9 b B {} C c
61c0: 20 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65   hello d D abc e
61d0: 20 65 20 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55   e hare m M {} U
61e0: 20 75 20 35 32 30 30 30 30 30 2e 30 20 58 20 78   u 5200000.0 X x
61f0: 20 2d 32 33 20 59 20 79 20 6d 61 64 20 5a 20 7a   -23 Y y mad Z z
6200: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
6210: 41 2d 33 2e 31 38 20 7b 0a 20 20 65 78 65 63 73  A-3.18 {.  execs
6220: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
6230: 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e  x,y,z FROM t2 UN
6240: 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 61  ION ALL SELECT a
6250: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20  ,b,c FROM t1.   
6260: 20 4f 52 44 45 52 20 42 59 20 63 2c 61 2c 62 0a   ORDER BY c,a,b.
6270: 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39    }.} {1 a a 9.9
6280: 20 62 20 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c   b B {} C c hell
6290: 6f 20 64 20 44 20 61 62 63 20 65 20 65 20 68 61  o d D abc e e ha
62a0: 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32  re m M {} U u 52
62b0: 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32 33 20  00000.0 X x -23 
62c0: 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f  Y y mad Z z}.do_
62d0: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 31  test selectA-3.1
62e0: 39 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  9 {.  execsql {.
62f0: 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a      SELECT x,y,z
6300: 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 41   FROM t2 UNION A
6310: 4c 4c 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  LL SELECT a,b,c 
6320: 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45  FROM t1.    ORDE
6330: 52 20 42 59 20 63 20 44 45 53 43 2c 61 2c 62 0a  R BY c DESC,a,b.
6340: 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d    }.} {mad Z z -
6350: 32 33 20 59 20 79 20 35 32 30 30 30 30 30 2e 30  23 Y y 5200000.0
6360: 20 58 20 78 20 7b 7d 20 55 20 75 20 68 61 72 65   X x {} U u hare
6370: 20 6d 20 4d 20 61 62 63 20 65 20 65 20 68 65 6c   m M abc e e hel
6380: 6c 6f 20 64 20 44 20 7b 7d 20 43 20 63 20 39 2e  lo d D {} C c 9.
6390: 39 20 62 20 42 20 31 20 61 20 61 7d 0a 64 6f 5f  9 b B 1 a a}.do_
63a0: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 32  test selectA-3.2
63b0: 30 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  0 {.  execsql {.
63c0: 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a      SELECT x,y,z
63d0: 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 41   FROM t2 UNION A
63e0: 4c 4c 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  LL SELECT a,b,c 
63f0: 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45  FROM t1.    ORDE
6400: 52 20 42 59 20 63 20 43 4f 4c 4c 41 54 45 20 42  R BY c COLLATE B
6410: 49 4e 41 52 59 20 44 45 53 43 2c 61 2c 62 0a 20  INARY DESC,a,b. 
6420: 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32   }.} {mad Z z -2
6430: 33 20 59 20 79 20 35 32 30 30 30 30 30 2e 30 20  3 Y y 5200000.0 
6440: 58 20 78 20 7b 7d 20 55 20 75 20 61 62 63 20 65  X x {} U u abc e
6450: 20 65 20 7b 7d 20 43 20 63 20 31 20 61 20 61 20   e {} C c 1 a a 
6460: 68 61 72 65 20 6d 20 4d 20 68 65 6c 6c 6f 20 64  hare m M hello d
6470: 20 44 20 39 2e 39 20 62 20 42 7d 0a 64 6f 5f 74   D 9.9 b B}.do_t
6480: 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 32 31  est selectA-3.21
6490: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
64a0: 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20     SELECT a,b,c 
64b0: 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 53 45  FROM t1 UNION SE
64c0: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
64d0: 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  t2.    ORDER BY 
64e0: 61 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 7b 7d 20  a,b,c.  }.} {{} 
64f0: 43 20 63 20 7b 7d 20 55 20 75 20 2d 32 33 20 59  C c {} U u -23 Y
6500: 20 79 20 31 20 61 20 61 20 39 2e 39 20 62 20 42   y 1 a a 9.9 b B
6510: 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 68   5200000.0 X x h
6520: 65 6c 6c 6f 20 64 20 44 20 6d 61 64 20 5a 20 7a  ello d D mad Z z
6530: 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d 20   abc e e hare m 
6540: 4d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  M}.do_test selec
6550: 74 41 2d 33 2e 32 32 20 7b 0a 20 20 65 78 65 63  tA-3.22 {.  exec
6560: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
6570: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 55   a,b,c FROM t1 U
6580: 4e 49 4f 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c  NION SELECT x,y,
6590: 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52  z FROM t2.    OR
65a0: 44 45 52 20 42 59 20 61 20 44 45 53 43 2c 62 2c  DER BY a DESC,b,
65b0: 63 0a 20 20 7d 0a 7d 20 7b 68 61 72 65 20 6d 20  c.  }.} {hare m 
65c0: 4d 20 61 62 63 20 65 20 65 20 6d 61 64 20 5a 20  M abc e e mad Z 
65d0: 7a 20 68 65 6c 6c 6f 20 64 20 44 20 35 32 30 30  z hello d D 5200
65e0: 30 30 30 2e 30 20 58 20 78 20 39 2e 39 20 62 20  000.0 X x 9.9 b 
65f0: 42 20 31 20 61 20 61 20 2d 32 33 20 59 20 79 20  B 1 a a -23 Y y 
6600: 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 7d 0a 64  {} C c {} U u}.d
6610: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33  o_test selectA-3
6620: 2e 32 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .23 {.  execsql 
6630: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62  {.    SELECT a,b
6640: 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e  ,c FROM t1 UNION
6650: 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52   SELECT x,y,z FR
6660: 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20  OM t2.    ORDER 
6670: 42 59 20 61 2c 63 2c 62 0a 20 20 7d 0a 7d 20 7b  BY a,c,b.  }.} {
6680: 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 20 2d 32  {} C c {} U u -2
6690: 33 20 59 20 79 20 31 20 61 20 61 20 39 2e 39 20  3 Y y 1 a a 9.9 
66a0: 62 20 42 20 35 32 30 30 30 30 30 2e 30 20 58 20  b B 5200000.0 X 
66b0: 78 20 68 65 6c 6c 6f 20 64 20 44 20 6d 61 64 20  x hello d D mad 
66c0: 5a 20 7a 20 61 62 63 20 65 20 65 20 68 61 72 65  Z z abc e e hare
66d0: 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73 65   m M}.do_test se
66e0: 6c 65 63 74 41 2d 33 2e 32 34 20 7b 0a 20 20 65  lectA-3.24 {.  e
66f0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
6700: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
6710: 31 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 78  1 UNION SELECT x
6720: 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20  ,y,z FROM t2.   
6730: 20 4f 52 44 45 52 20 42 59 20 62 2c 61 2c 63 0a   ORDER BY b,a,c.
6740: 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d    }.} {{} C c {}
6750: 20 55 20 75 20 35 32 30 30 30 30 30 2e 30 20 58   U u 5200000.0 X
6760: 20 78 20 2d 32 33 20 59 20 79 20 6d 61 64 20 5a   x -23 Y y mad Z
6770: 20 7a 20 31 20 61 20 61 20 39 2e 39 20 62 20 42   z 1 a a 9.9 b B
6780: 20 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65   hello d D abc e
6790: 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f   e hare m M}.do_
67a0: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 32  test selectA-3.2
67b0: 35 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  5 {.  execsql {.
67c0: 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63      SELECT a,b,c
67d0: 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 53   FROM t1 UNION S
67e0: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
67f0: 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59   t2.    ORDER BY
6800: 20 62 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53   b COLLATE NOCAS
6810: 45 2c 61 2c 63 0a 20 20 7d 0a 7d 20 7b 31 20 61  E,a,c.  }.} {1 a
6820: 20 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20   a 9.9 b B {} C 
6830: 63 20 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20  c hello d D abc 
6840: 65 20 65 20 68 61 72 65 20 6d 20 4d 20 7b 7d 20  e e hare m M {} 
6850: 55 20 75 20 35 32 30 30 30 30 30 2e 30 20 58 20  U u 5200000.0 X 
6860: 78 20 2d 32 33 20 59 20 79 20 6d 61 64 20 5a 20  x -23 Y y mad Z 
6870: 7a 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  z}.do_test selec
6880: 74 41 2d 33 2e 32 36 20 7b 0a 20 20 65 78 65 63  tA-3.26 {.  exec
6890: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
68a0: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 55   a,b,c FROM t1 U
68b0: 4e 49 4f 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c  NION SELECT x,y,
68c0: 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52  z FROM t2.    OR
68d0: 44 45 52 20 42 59 20 62 20 43 4f 4c 4c 41 54 45  DER BY b COLLATE
68e0: 20 4e 4f 43 41 53 45 20 44 45 53 43 2c 61 2c 63   NOCASE DESC,a,c
68f0: 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20  .  }.} {mad Z z 
6900: 2d 32 33 20 59 20 79 20 35 32 30 30 30 30 30 2e  -23 Y y 5200000.
6910: 30 20 58 20 78 20 7b 7d 20 55 20 75 20 68 61 72  0 X x {} U u har
6920: 65 20 6d 20 4d 20 61 62 63 20 65 20 65 20 68 65  e m M abc e e he
6930: 6c 6c 6f 20 64 20 44 20 7b 7d 20 43 20 63 20 39  llo d D {} C c 9
6940: 2e 39 20 62 20 42 20 31 20 61 20 61 7d 0a 64 6f  .9 b B 1 a a}.do
6950: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e  _test selectA-3.
6960: 32 37 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  27 {.  execsql {
6970: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
6980: 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20  c FROM t1 UNION 
6990: 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f  SELECT x,y,z FRO
69a0: 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42  M t2.    ORDER B
69b0: 59 20 63 2c 62 2c 61 0a 20 20 7d 0a 7d 20 7b 31  Y c,b,a.  }.} {1
69c0: 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b 7d 20   a a 9.9 b B {} 
69d0: 43 20 63 20 68 65 6c 6c 6f 20 64 20 44 20 61 62  C c hello d D ab
69e0: 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d 20 7b  c e e hare m M {
69f0: 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e 30 20  } U u 5200000.0 
6a00: 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61 64 20  X x -23 Y y mad 
6a10: 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  Z z}.do_test sel
6a20: 65 63 74 41 2d 33 2e 32 38 20 7b 0a 20 20 65 78  ectA-3.28 {.  ex
6a30: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
6a40: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
6a50: 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 78 2c   UNION SELECT x,
6a60: 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20  y,z FROM t2.    
6a70: 4f 52 44 45 52 20 42 59 20 63 2c 61 2c 62 0a 20  ORDER BY c,a,b. 
6a80: 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39 20   }.} {1 a a 9.9 
6a90: 62 20 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c 6f  b B {} C c hello
6aa0: 20 64 20 44 20 61 62 63 20 65 20 65 20 68 61 72   d D abc e e har
6ab0: 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32 30  e m M {} U u 520
6ac0: 30 30 30 30 2e 30 20 58 20 78 20 2d 32 33 20 59  0000.0 X x -23 Y
6ad0: 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74   y mad Z z}.do_t
6ae0: 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 32 39  est selectA-3.29
6af0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
6b00: 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20     SELECT a,b,c 
6b10: 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 53 45  FROM t1 UNION SE
6b20: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
6b30: 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  t2.    ORDER BY 
6b40: 63 20 44 45 53 43 2c 61 2c 62 0a 20 20 7d 0a 7d  c DESC,a,b.  }.}
6b50: 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59 20   {mad Z z -23 Y 
6b60: 79 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20  y 5200000.0 X x 
6b70: 7b 7d 20 55 20 75 20 68 61 72 65 20 6d 20 4d 20  {} U u hare m M 
6b80: 61 62 63 20 65 20 65 20 68 65 6c 6c 6f 20 64 20  abc e e hello d 
6b90: 44 20 7b 7d 20 43 20 63 20 39 2e 39 20 62 20 42  D {} C c 9.9 b B
6ba0: 20 31 20 61 20 61 7d 0a 64 6f 5f 74 65 73 74 20   1 a a}.do_test 
6bb0: 73 65 6c 65 63 74 41 2d 33 2e 33 30 20 7b 0a 20  selectA-3.30 {. 
6bc0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
6bd0: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
6be0: 20 74 31 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54   t1 UNION SELECT
6bf0: 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20   x,y,z FROM t2. 
6c00: 20 20 20 4f 52 44 45 52 20 42 59 20 63 20 43 4f     ORDER BY c CO
6c10: 4c 4c 41 54 45 20 42 49 4e 41 52 59 20 44 45 53  LLATE BINARY DES
6c20: 43 2c 61 2c 62 0a 20 20 7d 0a 7d 20 7b 6d 61 64  C,a,b.  }.} {mad
6c30: 20 5a 20 7a 20 2d 32 33 20 59 20 79 20 35 32 30   Z z -23 Y y 520
6c40: 30 30 30 30 2e 30 20 58 20 78 20 7b 7d 20 55 20  0000.0 X x {} U 
6c50: 75 20 61 62 63 20 65 20 65 20 7b 7d 20 43 20 63  u abc e e {} C c
6c60: 20 31 20 61 20 61 20 68 61 72 65 20 6d 20 4d 20   1 a a hare m M 
6c70: 68 65 6c 6c 6f 20 64 20 44 20 39 2e 39 20 62 20  hello d D 9.9 b 
6c80: 42 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  B}.do_test selec
6c90: 74 41 2d 33 2e 33 31 20 7b 0a 20 20 65 78 65 63  tA-3.31 {.  exec
6ca0: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
6cb0: 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55   x,y,z FROM t2 U
6cc0: 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62 2c  NION SELECT a,b,
6cd0: 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52  c FROM t1.    OR
6ce0: 44 45 52 20 42 59 20 61 2c 62 2c 63 0a 20 20 7d  DER BY a,b,c.  }
6cf0: 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20  .} {{} C c {} U 
6d00: 75 20 2d 32 33 20 59 20 79 20 31 20 61 20 61 20  u -23 Y y 1 a a 
6d10: 39 2e 39 20 62 20 42 20 35 32 30 30 30 30 30 2e  9.9 b B 5200000.
6d20: 30 20 58 20 78 20 68 65 6c 6c 6f 20 64 20 44 20  0 X x hello d D 
6d30: 6d 61 64 20 5a 20 7a 20 61 62 63 20 65 20 65 20  mad Z z abc e e 
6d40: 68 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73  hare m M}.do_tes
6d50: 74 20 73 65 6c 65 63 74 41 2d 33 2e 33 32 20 7b  t selectA-3.32 {
6d60: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
6d70: 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52   SELECT x,y,z FR
6d80: 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45  OM t2 UNION SELE
6d90: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
6da0: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 61 20  .    ORDER BY a 
6db0: 44 45 53 43 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b  DESC,b,c.  }.} {
6dc0: 68 61 72 65 20 6d 20 4d 20 61 62 63 20 65 20 65  hare m M abc e e
6dd0: 20 6d 61 64 20 5a 20 7a 20 68 65 6c 6c 6f 20 64   mad Z z hello d
6de0: 20 44 20 35 32 30 30 30 30 30 2e 30 20 58 20 78   D 5200000.0 X x
6df0: 20 39 2e 39 20 62 20 42 20 31 20 61 20 61 20 2d   9.9 b B 1 a a -
6e00: 32 33 20 59 20 79 20 7b 7d 20 43 20 63 20 7b 7d  23 Y y {} C c {}
6e10: 20 55 20 75 7d 0a 64 6f 5f 74 65 73 74 20 73 65   U u}.do_test se
6e20: 6c 65 63 74 41 2d 33 2e 33 33 20 7b 0a 20 20 65  lectA-3.33 {.  e
6e30: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
6e40: 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74  ECT x,y,z FROM t
6e50: 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61  2 UNION SELECT a
6e60: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20  ,b,c FROM t1.   
6e70: 20 4f 52 44 45 52 20 42 59 20 61 2c 63 2c 62 0a   ORDER BY a,c,b.
6e80: 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d    }.} {{} C c {}
6e90: 20 55 20 75 20 2d 32 33 20 59 20 79 20 31 20 61   U u -23 Y y 1 a
6ea0: 20 61 20 39 2e 39 20 62 20 42 20 35 32 30 30 30   a 9.9 b B 52000
6eb0: 30 30 2e 30 20 58 20 78 20 68 65 6c 6c 6f 20 64  00.0 X x hello d
6ec0: 20 44 20 6d 61 64 20 5a 20 7a 20 61 62 63 20 65   D mad Z z abc e
6ed0: 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f   e hare m M}.do_
6ee0: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 33  test selectA-3.3
6ef0: 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  4 {.  execsql {.
6f00: 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a      SELECT x,y,z
6f10: 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 53   FROM t2 UNION S
6f20: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
6f30: 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59   t1.    ORDER BY
6f40: 20 62 2c 61 2c 63 0a 20 20 7d 0a 7d 20 7b 7b 7d   b,a,c.  }.} {{}
6f50: 20 43 20 63 20 7b 7d 20 55 20 75 20 35 32 30 30   C c {} U u 5200
6f60: 30 30 30 2e 30 20 58 20 78 20 2d 32 33 20 59 20  000.0 X x -23 Y 
6f70: 79 20 6d 61 64 20 5a 20 7a 20 31 20 61 20 61 20  y mad Z z 1 a a 
6f80: 39 2e 39 20 62 20 42 20 68 65 6c 6c 6f 20 64 20  9.9 b B hello d 
6f90: 44 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d  D abc e e hare m
6fa0: 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   M}.do_test sele
6fb0: 63 74 41 2d 33 2e 33 35 20 7b 0a 20 20 65 78 65  ctA-3.35 {.  exe
6fc0: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
6fd0: 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20  T x,y,z FROM t2 
6fe0: 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62  UNION SELECT a,b
6ff0: 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f  ,c FROM t1.    O
7000: 52 44 45 52 20 42 59 20 79 20 43 4f 4c 4c 41 54  RDER BY y COLLAT
7010: 45 20 4e 4f 43 41 53 45 2c 78 2c 7a 0a 20 20 7d  E NOCASE,x,z.  }
7020: 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20  .} {1 a a 9.9 b 
7030: 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64  B {} C c hello d
7040: 20 44 20 61 62 63 20 65 20 65 20 68 61 72 65 20   D abc e e hare 
7050: 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32 30 30 30  m M {} U u 52000
7060: 30 30 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79  00.0 X x -23 Y y
7070: 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73   mad Z z}.do_tes
7080: 74 20 73 65 6c 65 63 74 41 2d 33 2e 33 36 20 7b  t selectA-3.36 {
7090: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
70a0: 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52   SELECT x,y,z FR
70b0: 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45  OM t2 UNION SELE
70c0: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
70d0: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 79 20  .    ORDER BY y 
70e0: 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45 20 44  COLLATE NOCASE D
70f0: 45 53 43 2c 78 2c 7a 0a 20 20 7d 0a 7d 20 7b 6d  ESC,x,z.  }.} {m
7100: 61 64 20 5a 20 7a 20 2d 32 33 20 59 20 79 20 35  ad Z z -23 Y y 5
7110: 32 30 30 30 30 30 2e 30 20 58 20 78 20 7b 7d 20  200000.0 X x {} 
7120: 55 20 75 20 68 61 72 65 20 6d 20 4d 20 61 62 63  U u hare m M abc
7130: 20 65 20 65 20 68 65 6c 6c 6f 20 64 20 44 20 7b   e e hello d D {
7140: 7d 20 43 20 63 20 39 2e 39 20 62 20 42 20 31 20  } C c 9.9 b B 1 
7150: 61 20 61 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  a a}.do_test sel
7160: 65 63 74 41 2d 33 2e 33 37 20 7b 0a 20 20 65 78  ectA-3.37 {.  ex
7170: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
7180: 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32  CT x,y,z FROM t2
7190: 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c   UNION SELECT a,
71a0: 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20  b,c FROM t1.    
71b0: 4f 52 44 45 52 20 42 59 20 63 2c 62 2c 61 0a 20  ORDER BY c,b,a. 
71c0: 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39 20   }.} {1 a a 9.9 
71d0: 62 20 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c 6f  b B {} C c hello
71e0: 20 64 20 44 20 61 62 63 20 65 20 65 20 68 61 72   d D abc e e har
71f0: 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32 30  e m M {} U u 520
7200: 30 30 30 30 2e 30 20 58 20 78 20 2d 32 33 20 59  0000.0 X x -23 Y
7210: 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74   y mad Z z}.do_t
7220: 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 33 38  est selectA-3.38
7230: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
7240: 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20     SELECT x,y,z 
7250: 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 53 45  FROM t2 UNION SE
7260: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
7270: 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  t1.    ORDER BY 
7280: 63 2c 61 2c 62 0a 20 20 7d 0a 7d 20 7b 31 20 61  c,a,b.  }.} {1 a
7290: 20 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20   a 9.9 b B {} C 
72a0: 63 20 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20  c hello d D abc 
72b0: 65 20 65 20 68 61 72 65 20 6d 20 4d 20 7b 7d 20  e e hare m M {} 
72c0: 55 20 75 20 35 32 30 30 30 30 30 2e 30 20 58 20  U u 5200000.0 X 
72d0: 78 20 2d 32 33 20 59 20 79 20 6d 61 64 20 5a 20  x -23 Y y mad Z 
72e0: 7a 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  z}.do_test selec
72f0: 74 41 2d 33 2e 33 39 20 7b 0a 20 20 65 78 65 63  tA-3.39 {.  exec
7300: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
7310: 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55   x,y,z FROM t2 U
7320: 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62 2c  NION SELECT a,b,
7330: 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52  c FROM t1.    OR
7340: 44 45 52 20 42 59 20 63 20 44 45 53 43 2c 61 2c  DER BY c DESC,a,
7350: 62 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a  b.  }.} {mad Z z
7360: 20 2d 32 33 20 59 20 79 20 35 32 30 30 30 30 30   -23 Y y 5200000
7370: 2e 30 20 58 20 78 20 7b 7d 20 55 20 75 20 68 61  .0 X x {} U u ha
7380: 72 65 20 6d 20 4d 20 61 62 63 20 65 20 65 20 68  re m M abc e e h
7390: 65 6c 6c 6f 20 64 20 44 20 7b 7d 20 43 20 63 20  ello d D {} C c 
73a0: 39 2e 39 20 62 20 42 20 31 20 61 20 61 7d 0a 64  9.9 b B 1 a a}.d
73b0: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33  o_test selectA-3
73c0: 2e 34 30 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .40 {.  execsql 
73d0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79  {.    SELECT x,y
73e0: 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e  ,z FROM t2 UNION
73f0: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
7400: 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20  OM t1.    ORDER 
7410: 42 59 20 7a 20 43 4f 4c 4c 41 54 45 20 42 49 4e  BY z COLLATE BIN
7420: 41 52 59 20 44 45 53 43 2c 78 2c 79 0a 20 20 7d  ARY DESC,x,y.  }
7430: 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20  .} {mad Z z -23 
7440: 59 20 79 20 35 32 30 30 30 30 30 2e 30 20 58 20  Y y 5200000.0 X 
7450: 78 20 7b 7d 20 55 20 75 20 61 62 63 20 65 20 65  x {} U u abc e e
7460: 20 7b 7d 20 43 20 63 20 31 20 61 20 61 20 68 61   {} C c 1 a a ha
7470: 72 65 20 6d 20 4d 20 68 65 6c 6c 6f 20 64 20 44  re m M hello d D
7480: 20 39 2e 39 20 62 20 42 7d 0a 64 6f 5f 74 65 73   9.9 b B}.do_tes
7490: 74 20 73 65 6c 65 63 74 41 2d 33 2e 34 31 20 7b  t selectA-3.41 {
74a0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
74b0: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
74c0: 4f 4d 20 74 31 20 45 58 43 45 50 54 20 53 45 4c  OM t1 EXCEPT SEL
74d0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
74e0: 31 20 57 48 45 52 45 20 62 3e 3d 27 64 27 0a 20  1 WHERE b>='d'. 
74f0: 20 20 20 4f 52 44 45 52 20 42 59 20 61 2c 62 2c     ORDER BY a,b,
7500: 63 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20  c.  }.} {{} C c 
7510: 31 20 61 20 61 20 39 2e 39 20 62 20 42 7d 0a 64  1 a a 9.9 b B}.d
7520: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33  o_test selectA-3
7530: 2e 34 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .42 {.  execsql 
7540: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62  {.    SELECT a,b
7550: 2c 63 20 46 52 4f 4d 20 74 31 20 49 4e 54 45 52  ,c FROM t1 INTER
7560: 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c  SECT SELECT a,b,
7570: 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  c FROM t1 WHERE 
7580: 62 3e 3d 27 64 27 0a 20 20 20 20 4f 52 44 45 52  b>='d'.    ORDER
7590: 20 42 59 20 61 2c 62 2c 63 0a 20 20 7d 0a 7d 20   BY a,b,c.  }.} 
75a0: 7b 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65  {hello d D abc e
75b0: 20 65 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   e}.do_test sele
75c0: 63 74 41 2d 33 2e 34 33 20 7b 0a 20 20 65 78 65  ctA-3.43 {.  exe
75d0: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
75e0: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
75f0: 57 48 45 52 45 20 62 3e 3d 27 64 27 20 49 4e 54  WHERE b>='d' INT
7600: 45 52 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c  ERSECT SELECT a,
7610: 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20  b,c FROM t1.    
7620: 4f 52 44 45 52 20 42 59 20 61 2c 62 2c 63 0a 20  ORDER BY a,b,c. 
7630: 20 7d 0a 7d 20 7b 68 65 6c 6c 6f 20 64 20 44 20   }.} {hello d D 
7640: 61 62 63 20 65 20 65 7d 0a 64 6f 5f 74 65 73 74  abc e e}.do_test
7650: 20 73 65 6c 65 63 74 41 2d 33 2e 34 34 20 7b 0a   selectA-3.44 {.
7660: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
7670: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
7680: 4d 20 74 31 20 45 58 43 45 50 54 20 53 45 4c 45  M t1 EXCEPT SELE
7690: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
76a0: 20 57 48 45 52 45 20 62 3c 27 64 27 0a 20 20 20   WHERE b<'d'.   
76b0: 20 4f 52 44 45 52 20 42 59 20 61 2c 62 2c 63 0a   ORDER BY a,b,c.
76c0: 20 20 7d 0a 7d 20 7b 68 65 6c 6c 6f 20 64 20 44    }.} {hello d D
76d0: 20 61 62 63 20 65 20 65 7d 0a 64 6f 5f 74 65 73   abc e e}.do_tes
76e0: 74 20 73 65 6c 65 63 74 41 2d 33 2e 34 35 20 7b  t selectA-3.45 {
76f0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
7700: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
7710: 4f 4d 20 74 31 20 49 4e 54 45 52 53 45 43 54 20  OM t1 INTERSECT 
7720: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
7730: 4d 20 74 31 20 57 48 45 52 45 20 62 3c 27 64 27  M t1 WHERE b<'d'
7740: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 61 2c  .    ORDER BY a,
7750: 62 2c 63 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20  b,c.  }.} {{} C 
7760: 63 20 31 20 61 20 61 20 39 2e 39 20 62 20 42 7d  c 1 a a 9.9 b B}
7770: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
7780: 2d 33 2e 34 36 20 7b 0a 20 20 65 78 65 63 73 71  -3.46 {.  execsq
7790: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61  l {.    SELECT a
77a0: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45  ,b,c FROM t1 WHE
77b0: 52 45 20 62 3c 27 64 27 20 49 4e 54 45 52 53 45  RE b<'d' INTERSE
77c0: 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  CT SELECT a,b,c 
77d0: 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45  FROM t1.    ORDE
77e0: 52 20 42 59 20 61 2c 62 2c 63 0a 20 20 7d 0a 7d  R BY a,b,c.  }.}
77f0: 20 7b 7b 7d 20 43 20 63 20 31 20 61 20 61 20 39   {{} C c 1 a a 9
7800: 2e 39 20 62 20 42 7d 0a 64 6f 5f 74 65 73 74 20  .9 b B}.do_test 
7810: 73 65 6c 65 63 74 41 2d 33 2e 34 37 20 7b 0a 20  selectA-3.47 {. 
7820: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
7830: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
7840: 20 74 31 20 45 58 43 45 50 54 20 53 45 4c 45 43   t1 EXCEPT SELEC
7850: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
7860: 57 48 45 52 45 20 62 3e 3d 27 64 27 0a 20 20 20  WHERE b>='d'.   
7870: 20 4f 52 44 45 52 20 42 59 20 61 20 44 45 53 43   ORDER BY a DESC
7880: 0a 20 20 7d 0a 7d 20 7b 39 2e 39 20 62 20 42 20  .  }.} {9.9 b B 
7890: 31 20 61 20 61 20 7b 7d 20 43 20 63 7d 0a 64 6f  1 a a {} C c}.do
78a0: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e  _test selectA-3.
78b0: 34 38 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  48 {.  execsql {
78c0: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
78d0: 63 20 46 52 4f 4d 20 74 31 20 49 4e 54 45 52 53  c FROM t1 INTERS
78e0: 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63  ECT SELECT a,b,c
78f0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 62   FROM t1 WHERE b
7900: 3e 3d 27 64 27 0a 20 20 20 20 4f 52 44 45 52 20  >='d'.    ORDER 
7910: 42 59 20 61 20 44 45 53 43 0a 20 20 7d 0a 7d 20  BY a DESC.  }.} 
7920: 7b 61 62 63 20 65 20 65 20 68 65 6c 6c 6f 20 64  {abc e e hello d
7930: 20 44 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   D}.do_test sele
7940: 63 74 41 2d 33 2e 34 39 20 7b 0a 20 20 65 78 65  ctA-3.49 {.  exe
7950: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
7960: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
7970: 57 48 45 52 45 20 62 3e 3d 27 64 27 20 49 4e 54  WHERE b>='d' INT
7980: 45 52 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c  ERSECT SELECT a,
7990: 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20  b,c FROM t1.    
79a0: 4f 52 44 45 52 20 42 59 20 61 20 44 45 53 43 0a  ORDER BY a DESC.
79b0: 20 20 7d 0a 7d 20 7b 61 62 63 20 65 20 65 20 68    }.} {abc e e h
79c0: 65 6c 6c 6f 20 64 20 44 7d 0a 64 6f 5f 74 65 73  ello d D}.do_tes
79d0: 74 20 73 65 6c 65 63 74 41 2d 33 2e 35 30 20 7b  t selectA-3.50 {
79e0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
79f0: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
7a00: 4f 4d 20 74 31 20 45 58 43 45 50 54 20 53 45 4c  OM t1 EXCEPT SEL
7a10: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
7a20: 31 20 57 48 45 52 45 20 62 3c 27 64 27 0a 20 20  1 WHERE b<'d'.  
7a30: 20 20 4f 52 44 45 52 20 42 59 20 61 20 44 45 53    ORDER BY a DES
7a40: 43 0a 20 20 7d 0a 7d 20 7b 61 62 63 20 65 20 65  C.  }.} {abc e e
7a50: 20 68 65 6c 6c 6f 20 64 20 44 7d 0a 64 6f 5f 74   hello d D}.do_t
7a60: 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 35 31  est selectA-3.51
7a70: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
7a80: 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20     SELECT a,b,c 
7a90: 46 52 4f 4d 20 74 31 20 49 4e 54 45 52 53 45 43  FROM t1 INTERSEC
7aa0: 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46  T SELECT a,b,c F
7ab0: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3c 27  ROM t1 WHERE b<'
7ac0: 64 27 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  d'.    ORDER BY 
7ad0: 61 20 44 45 53 43 0a 20 20 7d 0a 7d 20 7b 39 2e  a DESC.  }.} {9.
7ae0: 39 20 62 20 42 20 31 20 61 20 61 20 7b 7d 20 43  9 b B 1 a a {} C
7af0: 20 63 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   c}.do_test sele
7b00: 63 74 41 2d 33 2e 35 32 20 7b 0a 20 20 65 78 65  ctA-3.52 {.  exe
7b10: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
7b20: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
7b30: 57 48 45 52 45 20 62 3c 27 64 27 20 49 4e 54 45  WHERE b<'d' INTE
7b40: 52 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62  RSECT SELECT a,b
7b50: 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f  ,c FROM t1.    O
7b60: 52 44 45 52 20 42 59 20 61 20 44 45 53 43 0a 20  RDER BY a DESC. 
7b70: 20 7d 0a 7d 20 7b 39 2e 39 20 62 20 42 20 31 20   }.} {9.9 b B 1 
7b80: 61 20 61 20 7b 7d 20 43 20 63 7d 0a 64 6f 5f 74  a a {} C c}.do_t
7b90: 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 35 33  est selectA-3.53
7ba0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
7bb0: 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20     SELECT a,b,c 
7bc0: 46 52 4f 4d 20 74 31 20 45 58 43 45 50 54 20 53  FROM t1 EXCEPT S
7bd0: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
7be0: 20 74 31 20 57 48 45 52 45 20 62 3e 3d 27 64 27   t1 WHERE b>='d'
7bf0: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 62 2c  .    ORDER BY b,
7c00: 20 61 20 44 45 53 43 0a 20 20 7d 0a 7d 20 7b 7b   a DESC.  }.} {{
7c10: 7d 20 43 20 63 20 31 20 61 20 61 20 39 2e 39 20  } C c 1 a a 9.9 
7c20: 62 20 42 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  b B}.do_test sel
7c30: 65 63 74 41 2d 33 2e 35 34 20 7b 0a 20 20 65 78  ectA-3.54 {.  ex
7c40: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
7c50: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
7c60: 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43   INTERSECT SELEC
7c70: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
7c80: 57 48 45 52 45 20 62 3e 3d 27 64 27 0a 20 20 20  WHERE b>='d'.   
7c90: 20 4f 52 44 45 52 20 42 59 20 62 0a 20 20 7d 0a   ORDER BY b.  }.
7ca0: 7d 20 7b 68 65 6c 6c 6f 20 64 20 44 20 61 62 63  } {hello d D abc
7cb0: 20 65 20 65 7d 0a 64 6f 5f 74 65 73 74 20 73 65   e e}.do_test se
7cc0: 6c 65 63 74 41 2d 33 2e 35 35 20 7b 0a 20 20 65  lectA-3.55 {.  e
7cd0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
7ce0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
7cf0: 31 20 57 48 45 52 45 20 62 3e 3d 27 64 27 20 49  1 WHERE b>='d' I
7d00: 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20  NTERSECT SELECT 
7d10: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20  a,b,c FROM t1.  
7d20: 20 20 4f 52 44 45 52 20 42 59 20 62 20 44 45 53    ORDER BY b DES
7d30: 43 2c 20 63 0a 20 20 7d 0a 7d 20 7b 61 62 63 20  C, c.  }.} {abc 
7d40: 65 20 65 20 68 65 6c 6c 6f 20 64 20 44 7d 0a 64  e e hello d D}.d
7d50: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33  o_test selectA-3
7d60: 2e 35 36 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .56 {.  execsql 
7d70: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62  {.    SELECT a,b
7d80: 2c 63 20 46 52 4f 4d 20 74 31 20 45 58 43 45 50  ,c FROM t1 EXCEP
7d90: 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46  T SELECT a,b,c F
7da0: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3c 27  ROM t1 WHERE b<'
7db0: 64 27 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  d'.    ORDER BY 
7dc0: 62 2c 20 63 20 44 45 53 43 2c 20 61 0a 20 20 7d  b, c DESC, a.  }
7dd0: 0a 7d 20 7b 68 65 6c 6c 6f 20 64 20 44 20 61 62  .} {hello d D ab
7de0: 63 20 65 20 65 7d 0a 64 6f 5f 74 65 73 74 20 73  c e e}.do_test s
7df0: 65 6c 65 63 74 41 2d 33 2e 35 37 20 7b 0a 20 20  electA-3.57 {.  
7e00: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
7e10: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
7e20: 74 31 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c  t1 INTERSECT SEL
7e30: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
7e40: 31 20 57 48 45 52 45 20 62 3c 27 64 27 0a 20 20  1 WHERE b<'d'.  
7e50: 20 20 4f 52 44 45 52 20 42 59 20 62 20 43 4f 4c    ORDER BY b COL
7e60: 4c 41 54 45 20 4e 4f 43 41 53 45 0a 20 20 7d 0a  LATE NOCASE.  }.
7e70: 7d 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42  } {1 a a 9.9 b B
7e80: 20 7b 7d 20 43 20 63 7d 0a 64 6f 5f 74 65 73 74   {} C c}.do_test
7e90: 20 73 65 6c 65 63 74 41 2d 33 2e 35 38 20 7b 0a   selectA-3.58 {.
7ea0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
7eb0: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
7ec0: 4d 20 74 31 20 57 48 45 52 45 20 62 3c 27 64 27  M t1 WHERE b<'d'
7ed0: 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43   INTERSECT SELEC
7ee0: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a  T a,b,c FROM t1.
7ef0: 20 20 20 20 4f 52 44 45 52 20 42 59 20 62 0a 20      ORDER BY b. 
7f00: 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 31 20 61   }.} {{} C c 1 a
7f10: 20 61 20 39 2e 39 20 62 20 42 7d 0a 64 6f 5f 74   a 9.9 b B}.do_t
7f20: 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 35 39  est selectA-3.59
7f30: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
7f40: 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20     SELECT a,b,c 
7f50: 46 52 4f 4d 20 74 31 20 45 58 43 45 50 54 20 53  FROM t1 EXCEPT S
7f60: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
7f70: 20 74 31 20 57 48 45 52 45 20 62 3e 3d 27 64 27   t1 WHERE b>='d'
7f80: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63 2c  .    ORDER BY c,
7f90: 20 61 20 44 45 53 43 0a 20 20 7d 0a 7d 20 7b 31   a DESC.  }.} {1
7fa0: 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b 7d 20   a a 9.9 b B {} 
7fb0: 43 20 63 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  C c}.do_test sel
7fc0: 65 63 74 41 2d 33 2e 36 30 20 7b 0a 20 20 65 78  ectA-3.60 {.  ex
7fd0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
7fe0: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
7ff0: 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43   INTERSECT SELEC
8000: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
8010: 57 48 45 52 45 20 62 3e 3d 27 64 27 0a 20 20 20  WHERE b>='d'.   
8020: 20 4f 52 44 45 52 20 42 59 20 63 0a 20 20 7d 0a   ORDER BY c.  }.
8030: 7d 20 7b 68 65 6c 6c 6f 20 64 20 44 20 61 62 63  } {hello d D abc
8040: 20 65 20 65 7d 0a 64 6f 5f 74 65 73 74 20 73 65   e e}.do_test se
8050: 6c 65 63 74 41 2d 33 2e 36 31 20 7b 0a 20 20 65  lectA-3.61 {.  e
8060: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
8070: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
8080: 31 20 57 48 45 52 45 20 62 3e 3d 27 64 27 20 49  1 WHERE b>='d' I
8090: 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20  NTERSECT SELECT 
80a0: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20  a,b,c FROM t1.  
80b0: 20 20 4f 52 44 45 52 20 42 59 20 63 20 43 4f 4c    ORDER BY c COL
80c0: 4c 41 54 45 20 42 49 4e 41 52 59 2c 20 62 20 44  LATE BINARY, b D
80d0: 45 53 43 2c 20 63 2c 20 61 2c 20 62 2c 20 63 2c  ESC, c, a, b, c,
80e0: 20 61 2c 20 62 2c 20 63 0a 20 20 7d 0a 7d 20 7b   a, b, c.  }.} {
80f0: 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20  hello d D abc e 
8100: 65 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  e}.do_test selec
8110: 74 41 2d 33 2e 36 32 20 7b 0a 20 20 65 78 65 63  tA-3.62 {.  exec
8120: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
8130: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 45   a,b,c FROM t1 E
8140: 58 43 45 50 54 20 53 45 4c 45 43 54 20 61 2c 62  XCEPT SELECT a,b
8150: 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45  ,c FROM t1 WHERE
8160: 20 62 3c 27 64 27 0a 20 20 20 20 4f 52 44 45 52   b<'d'.    ORDER
8170: 20 42 59 20 63 20 44 45 53 43 2c 20 61 0a 20 20   BY c DESC, a.  
8180: 7d 0a 7d 20 7b 61 62 63 20 65 20 65 20 68 65 6c  }.} {abc e e hel
8190: 6c 6f 20 64 20 44 7d 0a 64 6f 5f 74 65 73 74 20  lo d D}.do_test 
81a0: 73 65 6c 65 63 74 41 2d 33 2e 36 33 20 7b 0a 20  selectA-3.63 {. 
81b0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
81c0: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
81d0: 20 74 31 20 49 4e 54 45 52 53 45 43 54 20 53 45   t1 INTERSECT SE
81e0: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
81f0: 74 31 20 57 48 45 52 45 20 62 3c 27 64 27 0a 20  t1 WHERE b<'d'. 
8200: 20 20 20 4f 52 44 45 52 20 42 59 20 63 20 43 4f     ORDER BY c CO
8210: 4c 4c 41 54 45 20 4e 4f 43 41 53 45 0a 20 20 7d  LLATE NOCASE.  }
8220: 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20  .} {1 a a 9.9 b 
8230: 42 20 7b 7d 20 43 20 63 7d 0a 64 6f 5f 74 65 73  B {} C c}.do_tes
8240: 74 20 73 65 6c 65 63 74 41 2d 33 2e 36 34 20 7b  t selectA-3.64 {
8250: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
8260: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
8270: 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3c 27 64  OM t1 WHERE b<'d
8280: 27 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45  ' INTERSECT SELE
8290: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
82a0: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63 0a  .    ORDER BY c.
82b0: 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39    }.} {1 a a 9.9
82c0: 20 62 20 42 20 7b 7d 20 43 20 63 7d 0a 64 6f 5f   b B {} C c}.do_
82d0: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 36  test selectA-3.6
82e0: 35 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  5 {.  execsql {.
82f0: 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63      SELECT a,b,c
8300: 20 46 52 4f 4d 20 74 33 20 49 4e 54 45 52 53 45   FROM t3 INTERSE
8310: 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  CT SELECT a,b,c 
8320: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3c  FROM t1 WHERE b<
8330: 27 64 27 0a 20 20 20 20 4f 52 44 45 52 20 42 59  'd'.    ORDER BY
8340: 20 63 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53   c COLLATE NOCAS
8350: 45 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39  E.  }.} {1 a a 9
8360: 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 7d 0a 64  .9 b B {} C c}.d
8370: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33  o_test selectA-3
8380: 2e 36 36 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .66 {.  execsql 
8390: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62  {.    SELECT a,b
83a0: 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45  ,c FROM t1 WHERE
83b0: 20 62 3c 27 64 27 20 49 4e 54 45 52 53 45 43 54   b<'d' INTERSECT
83c0: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
83d0: 4f 4d 20 74 33 0a 20 20 20 20 4f 52 44 45 52 20  OM t3.    ORDER 
83e0: 42 59 20 63 0a 20 20 7d 0a 7d 20 7b 31 20 61 20  BY c.  }.} {1 a 
83f0: 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63  a 9.9 b B {} C c
8400: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
8410: 41 2d 33 2e 36 37 20 7b 0a 20 20 65 78 65 63 73  A-3.67 {.  execs
8420: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
8430: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 45 58  a,b,c FROM t1 EX
8440: 43 45 50 54 20 53 45 4c 45 43 54 20 61 2c 62 2c  CEPT SELECT a,b,
8450: 63 20 46 52 4f 4d 20 74 33 20 57 48 45 52 45 20  c FROM t3 WHERE 
8460: 62 3c 27 64 27 0a 20 20 20 20 4f 52 44 45 52 20  b<'d'.    ORDER 
8470: 42 59 20 63 20 44 45 53 43 2c 20 61 0a 20 20 7d  BY c DESC, a.  }
8480: 0a 7d 20 7b 61 62 63 20 65 20 65 20 68 65 6c 6c  .} {abc e e hell
8490: 6f 20 64 20 44 7d 0a 64 6f 5f 74 65 73 74 20 73  o d D}.do_test s
84a0: 65 6c 65 63 74 41 2d 33 2e 36 38 20 7b 0a 20 20  electA-3.68 {.  
84b0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
84c0: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
84d0: 74 31 20 45 58 43 45 50 54 20 53 45 4c 45 43 54  t1 EXCEPT SELECT
84e0: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57   a,b,c FROM t1 W
84f0: 48 45 52 45 20 62 3c 27 64 27 0a 20 20 20 20 49  HERE b<'d'.    I
8500: 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20  NTERSECT SELECT 
8510: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20  a,b,c FROM t3.  
8520: 20 20 45 58 43 45 50 54 20 53 45 4c 45 43 54 20    EXCEPT SELECT 
8530: 62 2c 63 2c 61 20 46 52 4f 4d 20 74 33 0a 20 20  b,c,a FROM t3.  
8540: 20 20 4f 52 44 45 52 20 42 59 20 63 20 44 45 53    ORDER BY c DES
8550: 43 2c 20 61 0a 20 20 7d 0a 7d 20 7b 61 62 63 20  C, a.  }.} {abc 
8560: 65 20 65 20 68 65 6c 6c 6f 20 64 20 44 7d 0a 64  e e hello d D}.d
8570: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33  o_test selectA-3
8580: 2e 36 39 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .69 {.  execsql 
8590: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62  {.    SELECT a,b
85a0: 2c 63 20 46 52 4f 4d 20 74 31 20 49 4e 54 45 52  ,c FROM t1 INTER
85b0: 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c  SECT SELECT a,b,
85c0: 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  c FROM t1 WHERE 
85d0: 62 3c 27 64 27 0a 20 20 20 20 49 4e 54 45 52 53  b<'d'.    INTERS
85e0: 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63  ECT SELECT a,b,c
85f0: 20 46 52 4f 4d 20 74 33 0a 20 20 20 20 45 58 43   FROM t3.    EXC
8600: 45 50 54 20 53 45 4c 45 43 54 20 62 2c 63 2c 61  EPT SELECT b,c,a
8610: 20 46 52 4f 4d 20 74 33 0a 20 20 20 20 4f 52 44   FROM t3.    ORD
8620: 45 52 20 42 59 20 63 20 43 4f 4c 4c 41 54 45 20  ER BY c COLLATE 
8630: 4e 4f 43 41 53 45 0a 20 20 7d 0a 7d 20 7b 31 20  NOCASE.  }.} {1 
8640: 61 20 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43  a a 9.9 b B {} C
8650: 20 63 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   c}.do_test sele
8660: 63 74 41 2d 33 2e 37 30 20 7b 0a 20 20 65 78 65  ctA-3.70 {.  exe
8670: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
8680: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
8690: 57 48 45 52 45 20 62 3c 27 64 27 20 49 4e 54 45  WHERE b<'d' INTE
86a0: 52 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62  RSECT SELECT a,b
86b0: 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 49  ,c FROM t1.    I
86c0: 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20  NTERSECT SELECT 
86d0: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20  a,b,c FROM t3.  
86e0: 20 20 45 58 43 45 50 54 20 53 45 4c 45 43 54 20    EXCEPT SELECT 
86f0: 62 2c 63 2c 61 20 46 52 4f 4d 20 74 33 0a 20 20  b,c,a FROM t3.  
8700: 20 20 4f 52 44 45 52 20 42 59 20 63 0a 20 20 7d    ORDER BY c.  }
8710: 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20  .} {1 a a 9.9 b 
8720: 42 20 7b 7d 20 43 20 63 7d 0a 64 6f 5f 74 65 73  B {} C c}.do_tes
8730: 74 20 73 65 6c 65 63 74 41 2d 33 2e 37 31 20 7b  t selectA-3.71 {
8740: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
8750: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
8760: 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3c 27 64  OM t1 WHERE b<'d
8770: 27 0a 20 20 20 20 49 4e 54 45 52 53 45 43 54 20  '.    INTERSECT 
8780: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
8790: 4d 20 74 31 0a 20 20 20 20 49 4e 54 45 52 53 45  M t1.    INTERSE
87a0: 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  CT SELECT a,b,c 
87b0: 46 52 4f 4d 20 74 33 0a 20 20 20 20 45 58 43 45  FROM t3.    EXCE
87c0: 50 54 20 53 45 4c 45 43 54 20 62 2c 63 2c 61 20  PT SELECT b,c,a 
87d0: 46 52 4f 4d 20 74 33 0a 20 20 20 20 49 4e 54 45  FROM t3.    INTE
87e0: 52 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62  RSECT SELECT a,b
87f0: 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 45  ,c FROM t1.    E
8800: 58 43 45 50 54 20 53 45 4c 45 43 54 20 78 2c 79  XCEPT SELECT x,y
8810: 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 49  ,z FROM t2.    I
8820: 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20  NTERSECT SELECT 
8830: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20  a,b,c FROM t3.  
8840: 20 20 45 58 43 45 50 54 20 53 45 4c 45 43 54 20    EXCEPT SELECT 
8850: 79 2c 78 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20  y,x,z FROM t2.  
8860: 20 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45    INTERSECT SELE
8870: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
8880: 0a 20 20 20 20 45 58 43 45 50 54 20 53 45 4c 45  .    EXCEPT SELE
8890: 43 54 20 63 2c 62 2c 61 20 46 52 4f 4d 20 74 33  CT c,b,a FROM t3
88a0: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63 0a  .    ORDER BY c.
88b0: 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39    }.} {1 a a 9.9
88c0: 20 62 20 42 20 7b 7d 20 43 20 63 7d 0a 64 6f 5f   b B {} C c}.do_
88d0: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 37  test selectA-3.7
88e0: 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  2 {.  execsql {.
88f0: 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63      SELECT a,b,c
8900: 20 46 52 4f 4d 20 74 33 20 55 4e 49 4f 4e 20 53   FROM t3 UNION S
8910: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
8920: 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59   t2.    ORDER BY
8930: 20 61 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 7b 7d   a,b,c.  }.} {{}
8940: 20 43 20 63 20 7b 7d 20 55 20 75 20 2d 32 33 20   C c {} U u -23 
8950: 59 20 79 20 31 20 61 20 61 20 39 2e 39 20 62 20  Y y 1 a a 9.9 b 
8960: 42 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20  B 5200000.0 X x 
8970: 68 65 6c 6c 6f 20 64 20 44 20 6d 61 64 20 5a 20  hello d D mad Z 
8980: 7a 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d  z abc e e hare m
8990: 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   M}.do_test sele
89a0: 63 74 41 2d 33 2e 37 33 20 7b 0a 20 20 65 78 65  ctA-3.73 {.  exe
89b0: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
89c0: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 20  T a,b,c FROM t3 
89d0: 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 78 2c 79  UNION SELECT x,y
89e0: 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f  ,z FROM t2.    O
89f0: 52 44 45 52 20 42 59 20 61 20 44 45 53 43 2c 62  RDER BY a DESC,b
8a00: 2c 63 0a 20 20 7d 0a 7d 20 7b 68 61 72 65 20 6d  ,c.  }.} {hare m
8a10: 20 4d 20 61 62 63 20 65 20 65 20 6d 61 64 20 5a   M abc e e mad Z
8a20: 20 7a 20 68 65 6c 6c 6f 20 64 20 44 20 35 32 30   z hello d D 520
8a30: 30 30 30 30 2e 30 20 58 20 78 20 39 2e 39 20 62  0000.0 X x 9.9 b
8a40: 20 42 20 31 20 61 20 61 20 2d 32 33 20 59 20 79   B 1 a a -23 Y y
8a50: 20 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 7d 0a   {} C c {} U u}.
8a60: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
8a70: 33 2e 37 34 20 7b 0a 20 20 65 78 65 63 73 71 6c  3.74 {.  execsql
8a80: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
8a90: 62 2c 63 20 46 52 4f 4d 20 74 33 20 55 4e 49 4f  b,c FROM t3 UNIO
8aa0: 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46  N SELECT x,y,z F
8ab0: 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52  ROM t2.    ORDER
8ac0: 20 42 59 20 61 2c 63 2c 62 0a 20 20 7d 0a 7d 20   BY a,c,b.  }.} 
8ad0: 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 20 2d  {{} C c {} U u -
8ae0: 32 33 20 59 20 79 20 31 20 61 20 61 20 39 2e 39  23 Y y 1 a a 9.9
8af0: 20 62 20 42 20 35 32 30 30 30 30 30 2e 30 20 58   b B 5200000.0 X
8b00: 20 78 20 68 65 6c 6c 6f 20 64 20 44 20 6d 61 64   x hello d D mad
8b10: 20 5a 20 7a 20 61 62 63 20 65 20 65 20 68 61 72   Z z abc e e har
8b20: 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73  e m M}.do_test s
8b30: 65 6c 65 63 74 41 2d 33 2e 37 35 20 7b 0a 20 20  electA-3.75 {.  
8b40: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
8b50: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
8b60: 74 33 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20  t3 UNION SELECT 
8b70: 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20  x,y,z FROM t2.  
8b80: 20 20 4f 52 44 45 52 20 42 59 20 62 2c 61 2c 63    ORDER BY b,a,c
8b90: 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b  .  }.} {{} C c {
8ba0: 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e 30 20  } U u 5200000.0 
8bb0: 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61 64 20  X x -23 Y y mad 
8bc0: 5a 20 7a 20 31 20 61 20 61 20 39 2e 39 20 62 20  Z z 1 a a 9.9 b 
8bd0: 42 20 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20  B hello d D abc 
8be0: 65 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f  e e hare m M}.do
8bf0: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e  _test selectA-3.
8c00: 37 36 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  76 {.  execsql {
8c10: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
8c20: 63 20 46 52 4f 4d 20 74 33 20 55 4e 49 4f 4e 20  c FROM t3 UNION 
8c30: 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f  SELECT x,y,z FRO
8c40: 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42  M t2.    ORDER B
8c50: 59 20 62 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41  Y b COLLATE NOCA
8c60: 53 45 2c 61 2c 63 0a 20 20 7d 0a 7d 20 7b 31 20  SE,a,c.  }.} {1 
8c70: 61 20 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43  a a 9.9 b B {} C
8c80: 20 63 20 68 65 6c 6c 6f 20 64 20 44 20 61 62 63   c hello d D abc
8c90: 20 65 20 65 20 68 61 72 65 20 6d 20 4d 20 7b 7d   e e hare m M {}
8ca0: 20 55 20 75 20 35 32 30 30 30 30 30 2e 30 20 58   U u 5200000.0 X
8cb0: 20 78 20 2d 32 33 20 59 20 79 20 6d 61 64 20 5a   x -23 Y y mad Z
8cc0: 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   z}.do_test sele
8cd0: 63 74 41 2d 33 2e 37 37 20 7b 0a 20 20 65 78 65  ctA-3.77 {.  exe
8ce0: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
8cf0: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 20  T a,b,c FROM t3 
8d00: 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 78 2c 79  UNION SELECT x,y
8d10: 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f  ,z FROM t2.    O
8d20: 52 44 45 52 20 42 59 20 62 20 43 4f 4c 4c 41 54  RDER BY b COLLAT
8d30: 45 20 4e 4f 43 41 53 45 20 44 45 53 43 2c 61 2c  E NOCASE DESC,a,
8d40: 63 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a  c.  }.} {mad Z z
8d50: 20 2d 32 33 20 59 20 79 20 35 32 30 30 30 30 30   -23 Y y 5200000
8d60: 2e 30 20 58 20 78 20 7b 7d 20 55 20 75 20 68 61  .0 X x {} U u ha
8d70: 72 65 20 6d 20 4d 20 61 62 63 20 65 20 65 20 68  re m M abc e e h
8d80: 65 6c 6c 6f 20 64 20 44 20 7b 7d 20 43 20 63 20  ello d D {} C c 
8d90: 39 2e 39 20 62 20 42 20 31 20 61 20 61 7d 0a 64  9.9 b B 1 a a}.d
8da0: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33  o_test selectA-3
8db0: 2e 37 38 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .78 {.  execsql 
8dc0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62  {.    SELECT a,b
8dd0: 2c 63 20 46 52 4f 4d 20 74 33 20 55 4e 49 4f 4e  ,c FROM t3 UNION
8de0: 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52   SELECT x,y,z FR
8df0: 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20  OM t2.    ORDER 
8e00: 42 59 20 63 2c 62 2c 61 0a 20 20 7d 0a 7d 20 7b  BY c,b,a.  }.} {
8e10: 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b 7d  1 a a 9.9 b B {}
8e20: 20 43 20 63 20 68 65 6c 6c 6f 20 64 20 44 20 61   C c hello d D a
8e30: 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d 20  bc e e hare m M 
8e40: 7b 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e 30  {} U u 5200000.0
8e50: 20 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61 64   X x -23 Y y mad
8e60: 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 73 65   Z z}.do_test se
8e70: 6c 65 63 74 41 2d 33 2e 37 39 20 7b 0a 20 20 65  lectA-3.79 {.  e
8e80: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
8e90: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
8ea0: 33 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 78  3 UNION SELECT x
8eb0: 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20  ,y,z FROM t2.   
8ec0: 20 4f 52 44 45 52 20 42 59 20 63 2c 61 2c 62 0a   ORDER BY c,a,b.
8ed0: 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39    }.} {1 a a 9.9
8ee0: 20 62 20 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c   b B {} C c hell
8ef0: 6f 20 64 20 44 20 61 62 63 20 65 20 65 20 68 61  o d D abc e e ha
8f00: 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32  re m M {} U u 52
8f10: 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32 33 20  00000.0 X x -23 
8f20: 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f  Y y mad Z z}.do_
8f30: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 38  test selectA-3.8
8f40: 30 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  0 {.  execsql {.
8f50: 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63      SELECT a,b,c
8f60: 20 46 52 4f 4d 20 74 33 20 55 4e 49 4f 4e 20 53   FROM t3 UNION S
8f70: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
8f80: 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59   t2.    ORDER BY
8f90: 20 63 20 44 45 53 43 2c 61 2c 62 0a 20 20 7d 0a   c DESC,a,b.  }.
8fa0: 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59  } {mad Z z -23 Y
8fb0: 20 79 20 35 32 30 30 30 30 30 2e 30 20 58 20 78   y 5200000.0 X x
8fc0: 20 7b 7d 20 55 20 75 20 68 61 72 65 20 6d 20 4d   {} U u hare m M
8fd0: 20 61 62 63 20 65 20 65 20 68 65 6c 6c 6f 20 64   abc e e hello d
8fe0: 20 44 20 7b 7d 20 43 20 63 20 39 2e 39 20 62 20   D {} C c 9.9 b 
8ff0: 42 20 31 20 61 20 61 7d 0a 64 6f 5f 74 65 73 74  B 1 a a}.do_test
9000: 20 73 65 6c 65 63 74 41 2d 33 2e 38 31 20 7b 0a   selectA-3.81 {.
9010: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
9020: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
9030: 4d 20 74 33 20 55 4e 49 4f 4e 20 53 45 4c 45 43  M t3 UNION SELEC
9040: 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a  T x,y,z FROM t2.
9050: 20 20 20 20 4f 52 44 45 52 20 42 59 20 63 20 43      ORDER BY c C
9060: 4f 4c 4c 41 54 45 20 42 49 4e 41 52 59 20 44 45  OLLATE BINARY DE
9070: 53 43 2c 61 2c 62 0a 20 20 7d 0a 7d 20 7b 6d 61  SC,a,b.  }.} {ma
9080: 64 20 5a 20 7a 20 2d 32 33 20 59 20 79 20 35 32  d Z z -23 Y y 52
9090: 30 30 30 30 30 2e 30 20 58 20 78 20 7b 7d 20 55  00000.0 X x {} U
90a0: 20 75 20 61 62 63 20 65 20 65 20 7b 7d 20 43 20   u abc e e {} C 
90b0: 63 20 31 20 61 20 61 20 68 61 72 65 20 6d 20 4d  c 1 a a hare m M
90c0: 20 68 65 6c 6c 6f 20 64 20 44 20 39 2e 39 20 62   hello d D 9.9 b
90d0: 20 42 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   B}.do_test sele
90e0: 63 74 41 2d 33 2e 38 32 20 7b 0a 20 20 65 78 65  ctA-3.82 {.  exe
90f0: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
9100: 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20  T x,y,z FROM t2 
9110: 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62  UNION SELECT a,b
9120: 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20 20 20 4f  ,c FROM t3.    O
9130: 52 44 45 52 20 42 59 20 61 2c 62 2c 63 0a 20 20  RDER BY a,b,c.  
9140: 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55  }.} {{} C c {} U
9150: 20 75 20 2d 32 33 20 59 20 79 20 31 20 61 20 61   u -23 Y y 1 a a
9160: 20 39 2e 39 20 62 20 42 20 35 32 30 30 30 30 30   9.9 b B 5200000
9170: 2e 30 20 58 20 78 20 68 65 6c 6c 6f 20 64 20 44  .0 X x hello d D
9180: 20 6d 61 64 20 5a 20 7a 20 61 62 63 20 65 20 65   mad Z z abc e e
9190: 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65   hare m M}.do_te
91a0: 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 38 33 20  st selectA-3.83 
91b0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
91c0: 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46    SELECT x,y,z F
91d0: 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 53 45 4c  ROM t2 UNION SEL
91e0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
91f0: 33 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 61  3.    ORDER BY a
9200: 20 44 45 53 43 2c 62 2c 63 0a 20 20 7d 0a 7d 20   DESC,b,c.  }.} 
9210: 7b 68 61 72 65 20 6d 20 4d 20 61 62 63 20 65 20  {hare m M abc e 
9220: 65 20 6d 61 64 20 5a 20 7a 20 68 65 6c 6c 6f 20  e mad Z z hello 
9230: 64 20 44 20 35 32 30 30 30 30 30 2e 30 20 58 20  d D 5200000.0 X 
9240: 78 20 39 2e 39 20 62 20 42 20 31 20 61 20 61 20  x 9.9 b B 1 a a 
9250: 2d 32 33 20 59 20 79 20 7b 7d 20 43 20 63 20 7b  -23 Y y {} C c {
9260: 7d 20 55 20 75 7d 0a 64 6f 5f 74 65 73 74 20 73  } U u}.do_test s
9270: 65 6c 65 63 74 41 2d 33 2e 38 34 20 7b 0a 20 20  electA-3.84 {.  
9280: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
9290: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
92a0: 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20  t2 UNION SELECT 
92b0: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20  a,b,c FROM t3.  
92c0: 20 20 4f 52 44 45 52 20 42 59 20 61 2c 63 2c 62    ORDER BY a,c,b
92d0: 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b  .  }.} {{} C c {
92e0: 7d 20 55 20 75 20 2d 32 33 20 59 20 79 20 31 20  } U u -23 Y y 1 
92f0: 61 20 61 20 39 2e 39 20 62 20 42 20 35 32 30 30  a a 9.9 b B 5200
9300: 30 30 30 2e 30 20 58 20 78 20 68 65 6c 6c 6f 20  000.0 X x hello 
9310: 64 20 44 20 6d 61 64 20 5a 20 7a 20 61 62 63 20  d D mad Z z abc 
9320: 65 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f  e e hare m M}.do
9330: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e  _test selectA-3.
9340: 38 35 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  85 {.  execsql {
9350: 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c  .    SELECT x,y,
9360: 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20  z FROM t2 UNION 
9370: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
9380: 4d 20 74 33 0a 20 20 20 20 4f 52 44 45 52 20 42  M t3.    ORDER B
9390: 59 20 62 2c 61 2c 63 0a 20 20 7d 0a 7d 20 7b 7b  Y b,a,c.  }.} {{
93a0: 7d 20 43 20 63 20 7b 7d 20 55 20 75 20 35 32 30  } C c {} U u 520
93b0: 30 30 30 30 2e 30 20 58 20 78 20 2d 32 33 20 59  0000.0 X x -23 Y
93c0: 20 79 20 6d 61 64 20 5a 20 7a 20 31 20 61 20 61   y mad Z z 1 a a
93d0: 20 39 2e 39 20 62 20 42 20 68 65 6c 6c 6f 20 64   9.9 b B hello d
93e0: 20 44 20 61 62 63 20 65 20 65 20 68 61 72 65 20   D abc e e hare 
93f0: 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  m M}.do_test sel
9400: 65 63 74 41 2d 33 2e 38 36 20 7b 0a 20 20 65 78  ectA-3.86 {.  ex
9410: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
9420: 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32  CT x,y,z FROM t2
9430: 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c   UNION SELECT a,
9440: 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20 20 20  b,c FROM t3.    
9450: 4f 52 44 45 52 20 42 59 20 79 20 43 4f 4c 4c 41  ORDER BY y COLLA
9460: 54 45 20 4e 4f 43 41 53 45 2c 78 2c 7a 0a 20 20  TE NOCASE,x,z.  
9470: 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39 20 62  }.} {1 a a 9.9 b
9480: 20 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c 6f 20   B {} C c hello 
9490: 64 20 44 20 61 62 63 20 65 20 65 20 68 61 72 65  d D abc e e hare
94a0: 20 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32 30 30   m M {} U u 5200
94b0: 30 30 30 2e 30 20 58 20 78 20 2d 32 33 20 59 20  000.0 X x -23 Y 
94c0: 79 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65  y mad Z z}.do_te
94d0: 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 38 37 20  st selectA-3.87 
94e0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
94f0: 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46    SELECT x,y,z F
9500: 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 53 45 4c  ROM t2 UNION SEL
9510: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
9520: 33 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 79  3.    ORDER BY y
9530: 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45 20   COLLATE NOCASE 
9540: 44 45 53 43 2c 78 2c 7a 0a 20 20 7d 0a 7d 20 7b  DESC,x,z.  }.} {
9550: 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59 20 79 20  mad Z z -23 Y y 
9560: 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 7b 7d  5200000.0 X x {}
9570: 20 55 20 75 20 68 61 72 65 20 6d 20 4d 20 61 62   U u hare m M ab
9580: 63 20 65 20 65 20 68 65 6c 6c 6f 20 64 20 44 20  c e e hello d D 
9590: 7b 7d 20 43 20 63 20 39 2e 39 20 62 20 42 20 31  {} C c 9.9 b B 1
95a0: 20 61 20 61 7d 0a 64 6f 5f 74 65 73 74 20 73 65   a a}.do_test se
95b0: 6c 65 63 74 41 2d 33 2e 38 38 20 7b 0a 20 20 65  lectA-3.88 {.  e
95c0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
95d0: 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74  ECT x,y,z FROM t
95e0: 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61  2 UNION SELECT a
95f0: 2c 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20 20  ,b,c FROM t3.   
9600: 20 4f 52 44 45 52 20 42 59 20 63 2c 62 2c 61 0a   ORDER BY c,b,a.
9610: 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39    }.} {1 a a 9.9
9620: 20 62 20 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c   b B {} C c hell
9630: 6f 20 64 20 44 20 61 62 63 20 65 20 65 20 68 61  o d D abc e e ha
9640: 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32  re m M {} U u 52
9650: 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32 33 20  00000.0 X x -23 
9660: 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f  Y y mad Z z}.do_
9670: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 38  test selectA-3.8
9680: 39 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  9 {.  execsql {.
9690: 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a      SELECT x,y,z
96a0: 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 53   FROM t2 UNION S
96b0: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
96c0: 20 74 33 0a 20 20 20 20 4f 52 44 45 52 20 42 59   t3.    ORDER BY
96d0: 20 63 2c 61 2c 62 0a 20 20 7d 0a 7d 20 7b 31 20   c,a,b.  }.} {1 
96e0: 61 20 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43  a a 9.9 b B {} C
96f0: 20 63 20 68 65 6c 6c 6f 20 64 20 44 20 61 62 63   c hello d D abc
9700: 20 65 20 65 20 68 61 72 65 20 6d 20 4d 20 7b 7d   e e hare m M {}
9710: 20 55 20 75 20 35 32 30 30 30 30 30 2e 30 20 58   U u 5200000.0 X
9720: 20 78 20 2d 32 33 20 59 20 79 20 6d 61 64 20 5a   x -23 Y y mad Z
9730: 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   z}.do_test sele
9740: 63 74 41 2d 33 2e 39 30 20 7b 0a 20 20 65 78 65  ctA-3.90 {.  exe
9750: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
9760: 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20  T x,y,z FROM t2 
9770: 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62  UNION SELECT a,b
9780: 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20 20 20 4f  ,c FROM t3.    O
9790: 52 44 45 52 20 42 59 20 63 20 44 45 53 43 2c 61  RDER BY c DESC,a
97a0: 2c 62 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20  ,b.  }.} {mad Z 
97b0: 7a 20 2d 32 33 20 59 20 79 20 35 32 30 30 30 30  z -23 Y y 520000
97c0: 30 2e 30 20 58 20 78 20 7b 7d 20 55 20 75 20 68  0.0 X x {} U u h
97d0: 61 72 65 20 6d 20 4d 20 61 62 63 20 65 20 65 20  are m M abc e e 
97e0: 68 65 6c 6c 6f 20 64 20 44 20 7b 7d 20 43 20 63  hello d D {} C c
97f0: 20 39 2e 39 20 62 20 42 20 31 20 61 20 61 7d 0a   9.9 b B 1 a a}.
9800: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
9810: 33 2e 39 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  3.91 {.  execsql
9820: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c   {.    SELECT x,
9830: 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f  y,z FROM t2 UNIO
9840: 4e 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46  N SELECT a,b,c F
9850: 52 4f 4d 20 74 33 0a 20 20 20 20 4f 52 44 45 52  ROM t3.    ORDER
9860: 20 42 59 20 7a 20 43 4f 4c 4c 41 54 45 20 42 49   BY z COLLATE BI
9870: 4e 41 52 59 20 44 45 53 43 2c 78 2c 79 0a 20 20  NARY DESC,x,y.  
9880: 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33  }.} {mad Z z -23
9890: 20 59 20 79 20 35 32 30 30 30 30 30 2e 30 20 58   Y y 5200000.0 X
98a0: 20 78 20 7b 7d 20 55 20 75 20 61 62 63 20 65 20   x {} U u abc e 
98b0: 65 20 7b 7d 20 43 20 63 20 31 20 61 20 61 20 68  e {} C c 1 a a h
98c0: 61 72 65 20 6d 20 4d 20 68 65 6c 6c 6f 20 64 20  are m M hello d 
98d0: 44 20 39 2e 39 20 62 20 42 7d 0a 64 6f 5f 74 65  D 9.9 b B}.do_te
98e0: 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 39 32 20  st selectA-3.92 
98f0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
9900: 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46    SELECT x,y,z F
9910: 52 4f 4d 20 74 32 0a 20 20 20 20 49 4e 54 45 52  ROM t2.    INTER
9920: 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c  SECT SELECT a,b,
9930: 63 20 46 52 4f 4d 20 74 33 0a 20 20 20 20 45 58  c FROM t3.    EX
9940: 43 45 50 54 20 53 45 4c 45 43 54 20 63 2c 62 2c  CEPT SELECT c,b,
9950: 61 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 55 4e  a FROM t1.    UN
9960: 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62 2c 63  ION SELECT a,b,c
9970: 20 46 52 4f 4d 20 74 33 0a 20 20 20 20 49 4e 54   FROM t3.    INT
9980: 45 52 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c  ERSECT SELECT a,
9990: 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20 20 20  b,c FROM t3.    
99a0: 45 58 43 45 50 54 20 53 45 4c 45 43 54 20 63 2c  EXCEPT SELECT c,
99b0: 62 2c 61 20 46 52 4f 4d 20 74 31 0a 20 20 20 20  b,a FROM t1.    
99c0: 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62  UNION SELECT a,b
99d0: 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20 20 20 4f  ,c FROM t3.    O
99e0: 52 44 45 52 20 42 59 20 79 20 43 4f 4c 4c 41 54  RDER BY y COLLAT
99f0: 45 20 4e 4f 43 41 53 45 20 44 45 53 43 2c 78 2c  E NOCASE DESC,x,
9a00: 7a 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a  z.  }.} {mad Z z
9a10: 20 2d 32 33 20 59 20 79 20 35 32 30 30 30 30 30   -23 Y y 5200000
9a20: 2e 30 20 58 20 78 20 7b 7d 20 55 20 75 20 68 61  .0 X x {} U u ha
9a30: 72 65 20 6d 20 4d 20 61 62 63 20 65 20 65 20 68  re m M abc e e h
9a40: 65 6c 6c 6f 20 64 20 44 20 7b 7d 20 43 20 63 20  ello d D {} C c 
9a50: 39 2e 39 20 62 20 42 20 31 20 61 20 61 7d 0a 64  9.9 b B 1 a a}.d
9a60: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33  o_test selectA-3
9a70: 2e 39 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .93 {.  execsql 
9a80: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 75 70 70  {.    SELECT upp
9a90: 65 72 28 28 53 45 4c 45 43 54 20 63 20 46 52 4f  er((SELECT c FRO
9aa0: 4d 20 74 31 20 55 4e 49 4f 4e 20 53 45 4c 45 43  M t1 UNION SELEC
9ab0: 54 20 7a 20 46 52 4f 4d 20 74 32 20 4f 52 44 45  T z FROM t2 ORDE
9ac0: 52 20 42 59 20 31 29 29 3b 0a 20 20 7d 0a 7d 20  R BY 1));.  }.} 
9ad0: 7b 41 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65  {A}.do_test sele
9ae0: 63 74 41 2d 33 2e 39 34 20 7b 0a 20 20 65 78 65  ctA-3.94 {.  exe
9af0: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
9b00: 54 20 6c 6f 77 65 72 28 28 53 45 4c 45 43 54 20  T lower((SELECT 
9b10: 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20  c FROM t1 UNION 
9b20: 41 4c 4c 20 53 45 4c 45 43 54 20 7a 20 46 52 4f  ALL SELECT z FRO
9b30: 4d 20 74 32 20 4f 52 44 45 52 20 42 59 20 31 29  M t2 ORDER BY 1)
9b40: 29 3b 0a 20 20 7d 0a 7d 20 7b 61 7d 0a 64 6f 5f  );.  }.} {a}.do_
9b50: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 39  test selectA-3.9
9b60: 35 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  5 {.  execsql {.
9b70: 20 20 20 20 53 45 4c 45 43 54 20 6c 6f 77 65 72      SELECT lower
9b80: 28 28 53 45 4c 45 43 54 20 63 20 46 52 4f 4d 20  ((SELECT c FROM 
9b90: 74 31 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c  t1 INTERSECT SEL
9ba0: 45 43 54 20 7a 20 46 52 4f 4d 20 74 32 20 4f 52  ECT z FROM t2 OR
9bb0: 44 45 52 20 42 59 20 31 29 29 3b 0a 20 20 7d 0a  DER BY 1));.  }.
9bc0: 7d 20 7b 7b 7d 7d 0a 64 6f 5f 74 65 73 74 20 73  } {{}}.do_test s
9bd0: 65 6c 65 63 74 41 2d 33 2e 39 36 20 7b 0a 20 20  electA-3.96 {.  
9be0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
9bf0: 4c 45 43 54 20 6c 6f 77 65 72 28 28 53 45 4c 45  LECT lower((SELE
9c00: 43 54 20 7a 20 46 52 4f 4d 20 74 32 20 45 58 43  CT z FROM t2 EXC
9c10: 45 50 54 20 53 45 4c 45 43 54 20 63 20 46 52 4f  EPT SELECT c FRO
9c20: 4d 20 74 31 20 4f 52 44 45 52 20 42 59 20 31 29  M t1 ORDER BY 1)
9c30: 29 3b 0a 20 20 7d 0a 7d 20 7b 6d 7d 0a 64 6f 5f  );.  }.} {m}.do_
9c40: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 39  test selectA-3.9
9c50: 37 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  7 {.  execsql {.
9c60: 20 20 20 20 53 45 4c 45 43 54 20 75 70 70 65 72      SELECT upper
9c70: 28 28 53 45 4c 45 43 54 20 78 20 46 52 4f 4d 20  ((SELECT x FROM 
9c80: 28 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 78  (.      SELECT x
9c90: 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20  ,y,z FROM t2.   
9ca0: 20 20 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c     INTERSECT SEL
9cb0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
9cc0: 33 0a 20 20 20 20 20 20 45 58 43 45 50 54 20 53  3.      EXCEPT S
9cd0: 45 4c 45 43 54 20 63 2c 62 2c 61 20 46 52 4f 4d  ELECT c,b,a FROM
9ce0: 20 74 31 0a 20 20 20 20 20 20 55 4e 49 4f 4e 20   t1.      UNION 
9cf0: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
9d00: 4d 20 74 33 0a 20 20 20 20 20 20 49 4e 54 45 52  M t3.      INTER
9d10: 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c  SECT SELECT a,b,
9d20: 63 20 46 52 4f 4d 20 74 33 0a 20 20 20 20 20 20  c FROM t3.      
9d30: 45 58 43 45 50 54 20 53 45 4c 45 43 54 20 63 2c  EXCEPT SELECT c,
9d40: 62 2c 61 20 46 52 4f 4d 20 74 31 0a 20 20 20 20  b,a FROM t1.    
9d50: 20 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61    UNION SELECT a
9d60: 2c 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20 20  ,b,c FROM t3.   
9d70: 20 20 20 4f 52 44 45 52 20 42 59 20 79 20 43 4f     ORDER BY y CO
9d80: 4c 4c 41 54 45 20 4e 4f 43 41 53 45 20 44 45 53  LLATE NOCASE DES
9d90: 43 2c 78 2c 7a 29 29 29 0a 20 20 7d 0a 7d 20 7b  C,x,z))).  }.} {
9da0: 4d 41 44 7d 0a 64 6f 5f 65 78 65 63 73 71 6c 5f  MAD}.do_execsql_
9db0: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 39  test selectA-3.9
9dc0: 38 20 7b 0a 20 20 57 49 54 48 20 52 45 43 55 52  8 {.  WITH RECUR
9dd0: 53 49 56 45 0a 20 20 20 20 78 79 7a 28 6e 29 20  SIVE.    xyz(n) 
9de0: 41 53 20 28 0a 20 20 20 20 20 20 53 45 4c 45 43  AS (.      SELEC
9df0: 54 20 75 70 70 65 72 28 28 53 45 4c 45 43 54 20  T upper((SELECT 
9e00: 78 20 46 52 4f 4d 20 28 0a 20 20 20 20 20 20 20  x FROM (.       
9e10: 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52   SELECT x,y,z FR
9e20: 4f 4d 20 74 32 0a 20 20 20 20 20 20 20 20 49 4e  OM t2.        IN
9e30: 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20 61  TERSECT SELECT a
9e40: 2c 62 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20 20  ,b,c FROM t3.   
9e50: 20 20 20 20 20 45 58 43 45 50 54 20 53 45 4c 45       EXCEPT SELE
9e60: 43 54 20 63 2c 62 2c 61 20 46 52 4f 4d 20 74 31  CT c,b,a FROM t1
9e70: 0a 20 20 20 20 20 20 20 20 55 4e 49 4f 4e 20 53  .        UNION S
9e80: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
9e90: 20 74 33 0a 20 20 20 20 20 20 20 20 49 4e 54 45   t3.        INTE
9ea0: 52 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62  RSECT SELECT a,b
9eb0: 2c 63 20 46 52 4f 4d 20 74 33 0a 20 20 20 20 20  ,c FROM t3.     
9ec0: 20 20 20 45 58 43 45 50 54 20 53 45 4c 45 43 54     EXCEPT SELECT
9ed0: 20 63 2c 62 2c 61 20 46 52 4f 4d 20 74 31 0a 20   c,b,a FROM t1. 
9ee0: 20 20 20 20 20 20 20 55 4e 49 4f 4e 20 53 45 4c         UNION SEL
9ef0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
9f00: 33 0a 20 20 20 20 20 20 20 20 4f 52 44 45 52 20  3.        ORDER 
9f10: 42 59 20 79 20 43 4f 4c 4c 41 54 45 20 4e 4f 43  BY y COLLATE NOC
9f20: 41 53 45 20 44 45 53 43 2c 78 2c 7a 29 29 29 0a  ASE DESC,x,z))).
9f30: 20 20 20 20 20 20 55 4e 49 4f 4e 20 41 4c 4c 0a        UNION ALL.
9f40: 20 20 20 20 20 20 53 45 4c 45 43 54 20 6e 20 7c        SELECT n |
9f50: 7c 20 27 2b 27 20 46 52 4f 4d 20 78 79 7a 20 57  | '+' FROM xyz W
9f60: 48 45 52 45 20 6c 65 6e 67 74 68 28 6e 29 3c 35  HERE length(n)<5
9f70: 0a 20 20 20 20 29 0a 20 20 53 45 4c 45 43 54 20  .    ).  SELECT 
9f80: 6e 20 46 52 4f 4d 20 78 79 7a 20 4f 52 44 45 52  n FROM xyz ORDER
9f90: 20 42 59 20 2b 6e 3b 0a 7d 20 7b 4d 41 44 20 4d   BY +n;.} {MAD M
9fa0: 41 44 2b 20 4d 41 44 2b 2b 7d 0a 0a 23 2d 2d 2d  AD+ MAD++}..#---
9fb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9fc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9ff0: 2d 2d 2d 2d 2d 2d 0a 23 20 41 74 20 6f 6e 65 20  ------.# At one 
a000: 70 6f 69 6e 74 20 74 68 65 20 66 6f 6c 6c 6f 77  point the follow
a010: 69 6e 67 20 63 6f 64 65 20 65 78 70 6f 73 65 64  ing code exposed
a020: 20 61 20 74 65 6d 70 20 72 65 67 69 73 74 65 72   a temp register
a030: 20 72 65 75 73 65 20 70 72 6f 62 6c 65 6d 2e 0a   reuse problem..
a040: 23 0a 70 72 6f 63 20 66 20 7b 61 72 67 73 7d 20  #.proc f {args} 
a050: 7b 20 72 65 74 75 72 6e 20 31 20 7d 0a 64 62 20  { return 1 }.db 
a060: 66 75 6e 63 20 66 20 66 0a 0a 64 6f 5f 65 78 65  func f f..do_exe
a070: 63 73 71 6c 5f 74 65 73 74 20 34 2e 31 2e 31 20  csql_test 4.1.1 
a080: 7b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  {.  CREATE TABLE
a090: 20 74 34 28 61 2c 20 62 29 3b 0a 20 20 43 52 45   t4(a, b);.  CRE
a0a0: 41 54 45 20 54 41 42 4c 45 20 74 35 28 63 2c 20  ATE TABLE t5(c, 
a0b0: 64 29 3b 0a 0a 20 20 49 4e 53 45 52 54 20 49 4e  d);..  INSERT IN
a0c0: 54 4f 20 74 35 20 56 41 4c 55 45 53 28 31 2c 20  TO t5 VALUES(1, 
a0d0: 27 78 27 29 3b 0a 20 20 49 4e 53 45 52 54 20 49  'x');.  INSERT I
a0e0: 4e 54 4f 20 74 35 20 56 41 4c 55 45 53 28 32 2c  NTO t5 VALUES(2,
a0f0: 20 27 78 27 29 3b 0a 20 20 49 4e 53 45 52 54 20   'x');.  INSERT 
a100: 49 4e 54 4f 20 74 34 20 56 41 4c 55 45 53 28 33  INTO t4 VALUES(3
a110: 2c 20 27 78 27 29 3b 0a 20 20 49 4e 53 45 52 54  , 'x');.  INSERT
a120: 20 49 4e 54 4f 20 74 34 20 56 41 4c 55 45 53 28   INTO t4 VALUES(
a130: 34 2c 20 27 78 27 29 3b 0a 0a 20 20 43 52 45 41  4, 'x');..  CREA
a140: 54 45 20 49 4e 44 45 58 20 69 31 20 4f 4e 20 74  TE INDEX i1 ON t
a150: 34 28 61 29 3b 0a 20 20 43 52 45 41 54 45 20 49  4(a);.  CREATE I
a160: 4e 44 45 58 20 69 32 20 4f 4e 20 74 35 28 63 29  NDEX i2 ON t5(c)
a170: 3b 0a 7d 0a 0a 64 6f 5f 65 71 70 5f 74 65 73 74  ;.}..do_eqp_test
a180: 20 34 2e 31 2e 32 20 7b 0a 20 20 53 45 4c 45 43   4.1.2 {.  SELEC
a190: 54 20 63 2c 20 64 20 46 52 4f 4d 20 74 35 20 0a  T c, d FROM t5 .
a1a0: 20 20 55 4e 49 4f 4e 20 41 4c 4c 0a 20 20 53 45    UNION ALL.  SE
a1b0: 4c 45 43 54 20 61 2c 20 62 20 46 52 4f 4d 20 74  LECT a, b FROM t
a1c0: 34 20 57 48 45 52 45 20 66 28 29 3d 3d 66 28 29  4 WHERE f()==f()
a1d0: 0a 20 20 4f 52 44 45 52 20 42 59 20 31 2c 32 0a  .  ORDER BY 1,2.
a1e0: 7d 20 7b 0a 20 20 51 55 45 52 59 20 50 4c 41 4e  } {.  QUERY PLAN
a1f0: 0a 20 20 60 2d 2d 4d 45 52 47 45 20 28 55 4e 49  .  `--MERGE (UNI
a200: 4f 4e 20 41 4c 4c 29 0a 20 20 20 20 20 7c 2d 2d  ON ALL).     |--
a210: 4c 45 46 54 0a 20 20 20 20 20 7c 20 20 7c 2d 2d  LEFT.     |  |--
a220: 53 43 41 4e 20 54 41 42 4c 45 20 74 35 20 55 53  SCAN TABLE t5 US
a230: 49 4e 47 20 49 4e 44 45 58 20 69 32 0a 20 20 20  ING INDEX i2.   
a240: 20 20 7c 20 20 60 2d 2d 55 53 45 20 54 45 4d 50    |  `--USE TEMP
a250: 20 42 2d 54 52 45 45 20 46 4f 52 20 52 49 47 48   B-TREE FOR RIGH
a260: 54 20 50 41 52 54 20 4f 46 20 4f 52 44 45 52 20  T PART OF ORDER 
a270: 42 59 0a 20 20 20 20 20 60 2d 2d 52 49 47 48 54  BY.     `--RIGHT
a280: 0a 20 20 20 20 20 20 20 20 7c 2d 2d 53 43 41 4e  .        |--SCAN
a290: 20 54 41 42 4c 45 20 74 34 20 55 53 49 4e 47 20   TABLE t4 USING 
a2a0: 49 4e 44 45 58 20 69 31 0a 20 20 20 20 20 20 20  INDEX i1.       
a2b0: 20 60 2d 2d 55 53 45 20 54 45 4d 50 20 42 2d 54   `--USE TEMP B-T
a2c0: 52 45 45 20 46 4f 52 20 52 49 47 48 54 20 50 41  REE FOR RIGHT PA
a2d0: 52 54 20 4f 46 20 4f 52 44 45 52 20 42 59 0a 7d  RT OF ORDER BY.}
a2e0: 0a 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73  ..do_execsql_tes
a2f0: 74 20 34 2e 31 2e 33 20 7b 0a 20 20 53 45 4c 45  t 4.1.3 {.  SELE
a300: 43 54 20 63 2c 20 64 20 46 52 4f 4d 20 74 35 20  CT c, d FROM t5 
a310: 0a 20 20 55 4e 49 4f 4e 20 41 4c 4c 0a 20 20 53  .  UNION ALL.  S
a320: 45 4c 45 43 54 20 61 2c 20 62 20 46 52 4f 4d 20  ELECT a, b FROM 
a330: 74 34 20 57 48 45 52 45 20 66 28 29 3d 3d 66 28  t4 WHERE f()==f(
a340: 29 0a 20 20 4f 52 44 45 52 20 42 59 20 31 2c 32  ).  ORDER BY 1,2
a350: 0a 7d 20 7b 0a 20 20 31 20 78 20 32 20 78 20 33  .} {.  1 x 2 x 3
a360: 20 78 20 34 20 78 0a 7d 0a 0a 64 6f 5f 65 78 65   x 4 x.}..do_exe
a370: 63 73 71 6c 5f 74 65 73 74 20 34 2e 32 2e 31 20  csql_test 4.2.1 
a380: 7b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  {.  CREATE TABLE
a390: 20 74 36 28 61 2c 20 62 29 3b 0a 20 20 43 52 45   t6(a, b);.  CRE
a3a0: 41 54 45 20 54 41 42 4c 45 20 74 37 28 63 2c 20  ATE TABLE t7(c, 
a3b0: 64 29 3b 0a 0a 20 20 49 4e 53 45 52 54 20 49 4e  d);..  INSERT IN
a3c0: 54 4f 20 74 37 20 56 41 4c 55 45 53 28 32 2c 20  TO t7 VALUES(2, 
a3d0: 39 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54  9);.  INSERT INT
a3e0: 4f 20 74 36 20 56 41 4c 55 45 53 28 33 2c 20 30  O t6 VALUES(3, 0
a3f0: 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  );.  INSERT INTO
a400: 20 74 36 20 56 41 4c 55 45 53 28 34 2c 20 31 29   t6 VALUES(4, 1)
a410: 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20  ;.  INSERT INTO 
a420: 74 37 20 56 41 4c 55 45 53 28 35 2c 20 36 29 3b  t7 VALUES(5, 6);
a430: 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74  .  INSERT INTO t
a440: 36 20 56 41 4c 55 45 53 28 36 2c 20 30 29 3b 0a  6 VALUES(6, 0);.
a450: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 37    INSERT INTO t7
a460: 20 56 41 4c 55 45 53 28 37 2c 20 36 29 3b 0a 0a   VALUES(7, 6);..
a470: 20 20 43 52 45 41 54 45 20 49 4e 44 45 58 20 69    CREATE INDEX i
a480: 36 20 4f 4e 20 74 36 28 61 29 3b 0a 20 20 43 52  6 ON t6(a);.  CR
a490: 45 41 54 45 20 49 4e 44 45 58 20 69 37 20 4f 4e  EATE INDEX i7 ON
a4a0: 20 74 37 28 63 29 3b 0a 7d 0a 0a 64 6f 5f 65 78   t7(c);.}..do_ex
a4b0: 65 63 73 71 6c 5f 74 65 73 74 20 34 2e 32 2e 32  ecsql_test 4.2.2
a4c0: 20 7b 0a 20 20 53 45 4c 45 43 54 20 63 2c 20 66   {.  SELECT c, f
a4d0: 28 64 2c 63 2c 64 2c 63 2c 64 29 20 46 52 4f 4d  (d,c,d,c,d) FROM
a4e0: 20 74 37 0a 20 20 55 4e 49 4f 4e 20 41 4c 4c 0a   t7.  UNION ALL.
a4f0: 20 20 53 45 4c 45 43 54 20 61 2c 20 62 20 46 52    SELECT a, b FR
a500: 4f 4d 20 74 36 20 0a 20 20 4f 52 44 45 52 20 42  OM t6 .  ORDER B
a510: 59 20 31 2c 32 0a 7d 20 7b 2f 32 20 2e 20 33 20  Y 1,2.} {/2 . 3 
a520: 2e 20 34 20 2e 20 35 20 2e 20 36 20 2e 20 37 20  . 4 . 5 . 6 . 7 
a530: 2e 2f 7d 0a 0a 0a 70 72 6f 63 20 73 74 72 69 70  ./}...proc strip
a540: 5f 72 6e 64 20 7b 65 78 70 6c 61 69 6e 7d 20 7b  _rnd {explain} {
a550: 0a 20 20 72 65 67 65 78 70 20 2d 61 6c 6c 20 7b  .  regexp -all {
a560: 73 71 6c 69 74 65 5f 73 71 5f 5b 30 31 32 33 34  sqlite_sq_[01234
a570: 35 36 37 38 39 41 42 43 44 45 46 5d 2a 7d 20 24  56789ABCDEF]*} $
a580: 65 78 70 6c 61 69 6e 20 73 71 6c 69 74 65 5f 73  explain sqlite_s
a590: 71 0a 7d 0a 0a 70 72 6f 63 20 64 6f 5f 73 61 6d  q.}..proc do_sam
a5a0: 65 5f 74 65 73 74 20 7b 74 6e 20 71 31 20 61 72  e_test {tn q1 ar
a5b0: 67 73 7d 20 7b 0a 20 20 73 65 74 20 72 32 20 5b  gs} {.  set r2 [
a5c0: 73 74 72 69 70 5f 72 6e 64 20 5b 64 62 20 65 76  strip_rnd [db ev
a5d0: 61 6c 20 22 45 58 50 4c 41 49 4e 20 24 71 31 22  al "EXPLAIN $q1"
a5e0: 5d 5d 0a 20 20 73 65 74 20 69 20 31 0a 20 20 66  ]].  set i 1.  f
a5f0: 6f 72 65 61 63 68 20 71 20 24 61 72 67 73 20 7b  oreach q $args {
a600: 0a 20 20 20 20 73 65 74 20 74 73 74 20 5b 73 75  .    set tst [su
a610: 62 73 74 20 2d 6e 6f 63 6f 6d 6d 61 6e 64 73 20  bst -nocommands 
a620: 7b 73 74 72 69 70 5f 72 6e 64 20 5b 64 62 20 65  {strip_rnd [db e
a630: 76 61 6c 20 22 45 58 50 4c 41 49 4e 20 24 71 22  val "EXPLAIN $q"
a640: 5d 7d 5d 0a 20 20 20 20 75 70 6c 65 76 65 6c 20  ]}].    uplevel 
a650: 64 6f 5f 74 65 73 74 20 24 74 6e 2e 24 69 20 5b  do_test $tn.$i [
a660: 6c 69 73 74 20 24 74 73 74 5d 20 5b 6c 69 73 74  list $tst] [list
a670: 20 24 72 32 5d 0a 20 20 20 20 69 6e 63 72 20 69   $r2].    incr i
a680: 0a 20 20 7d 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73  .  }.}..do_execs
a690: 71 6c 5f 74 65 73 74 20 35 2e 30 20 7b 0a 20 20  ql_test 5.0 {.  
a6a0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 38 28  CREATE TABLE t8(
a6b0: 61 2c 20 62 29 3b 0a 20 20 43 52 45 41 54 45 20  a, b);.  CREATE 
a6c0: 54 41 42 4c 45 20 74 39 28 63 2c 20 64 29 3b 0a  TABLE t9(c, d);.
a6d0: 7d 20 7b 7d 0a 0a 64 6f 5f 73 61 6d 65 5f 74 65  } {}..do_same_te
a6e0: 73 74 20 35 2e 31 20 7b 0a 20 20 53 45 4c 45 43  st 5.1 {.  SELEC
a6f0: 54 20 61 2c 20 62 20 46 52 4f 4d 20 74 38 20 49  T a, b FROM t8 I
a700: 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20  NTERSECT SELECT 
a710: 63 2c 20 64 20 46 52 4f 4d 20 74 39 20 4f 52 44  c, d FROM t9 ORD
a720: 45 52 20 42 59 20 61 3b 0a 7d 20 7b 0a 20 20 53  ER BY a;.} {.  S
a730: 45 4c 45 43 54 20 61 2c 20 62 20 46 52 4f 4d 20  ELECT a, b FROM 
a740: 74 38 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c  t8 INTERSECT SEL
a750: 45 43 54 20 63 2c 20 64 20 46 52 4f 4d 20 74 39  ECT c, d FROM t9
a760: 20 4f 52 44 45 52 20 42 59 20 74 38 2e 61 3b 0a   ORDER BY t8.a;.
a770: 7d 20 7b 0a 20 20 53 45 4c 45 43 54 20 61 2c 20  } {.  SELECT a, 
a780: 62 20 46 52 4f 4d 20 74 38 20 49 4e 54 45 52 53  b FROM t8 INTERS
a790: 45 43 54 20 53 45 4c 45 43 54 20 63 2c 20 64 20  ECT SELECT c, d 
a7a0: 46 52 4f 4d 20 74 39 20 4f 52 44 45 52 20 42 59  FROM t9 ORDER BY
a7b0: 20 31 3b 0a 7d 20 7b 0a 20 20 53 45 4c 45 43 54   1;.} {.  SELECT
a7c0: 20 61 2c 20 62 20 46 52 4f 4d 20 74 38 20 49 4e   a, b FROM t8 IN
a7d0: 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20 63  TERSECT SELECT c
a7e0: 2c 20 64 20 46 52 4f 4d 20 74 39 20 4f 52 44 45  , d FROM t9 ORDE
a7f0: 52 20 42 59 20 63 3b 0a 7d 20 7b 0a 20 20 53 45  R BY c;.} {.  SE
a800: 4c 45 43 54 20 61 2c 20 62 20 46 52 4f 4d 20 74  LECT a, b FROM t
a810: 38 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45  8 INTERSECT SELE
a820: 43 54 20 63 2c 20 64 20 46 52 4f 4d 20 74 39 20  CT c, d FROM t9 
a830: 4f 52 44 45 52 20 42 59 20 74 39 2e 63 3b 0a 7d  ORDER BY t9.c;.}
a840: 0a 0a 64 6f 5f 73 61 6d 65 5f 74 65 73 74 20 35  ..do_same_test 5
a850: 2e 32 20 7b 0a 20 20 53 45 4c 45 43 54 20 61 2c  .2 {.  SELECT a,
a860: 20 62 20 46 52 4f 4d 20 74 38 20 55 4e 49 4f 4e   b FROM t8 UNION
a870: 20 53 45 4c 45 43 54 20 63 2c 20 64 20 46 52 4f   SELECT c, d FRO
a880: 4d 20 74 39 20 4f 52 44 45 52 20 42 59 20 61 20  M t9 ORDER BY a 
a890: 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45 0a 7d  COLLATE NOCASE.}
a8a0: 20 7b 0a 20 20 53 45 4c 45 43 54 20 61 2c 20 62   {.  SELECT a, b
a8b0: 20 46 52 4f 4d 20 74 38 20 55 4e 49 4f 4e 20 53   FROM t8 UNION S
a8c0: 45 4c 45 43 54 20 63 2c 20 64 20 46 52 4f 4d 20  ELECT c, d FROM 
a8d0: 74 39 20 4f 52 44 45 52 20 42 59 20 74 38 2e 61  t9 ORDER BY t8.a
a8e0: 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45 0a   COLLATE NOCASE.
a8f0: 7d 20 7b 0a 20 20 53 45 4c 45 43 54 20 61 2c 20  } {.  SELECT a, 
a900: 62 20 46 52 4f 4d 20 74 38 20 55 4e 49 4f 4e 20  b FROM t8 UNION 
a910: 53 45 4c 45 43 54 20 63 2c 20 64 20 46 52 4f 4d  SELECT c, d FROM
a920: 20 74 39 20 4f 52 44 45 52 20 42 59 20 31 20 43   t9 ORDER BY 1 C
a930: 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45 0a 7d 20  OLLATE NOCASE.} 
a940: 7b 0a 20 20 53 45 4c 45 43 54 20 61 2c 20 62 20  {.  SELECT a, b 
a950: 46 52 4f 4d 20 74 38 20 55 4e 49 4f 4e 20 53 45  FROM t8 UNION SE
a960: 4c 45 43 54 20 63 2c 20 64 20 46 52 4f 4d 20 74  LECT c, d FROM t
a970: 39 20 4f 52 44 45 52 20 42 59 20 63 20 43 4f 4c  9 ORDER BY c COL
a980: 4c 41 54 45 20 4e 4f 43 41 53 45 0a 7d 20 7b 0a  LATE NOCASE.} {.
a990: 20 20 53 45 4c 45 43 54 20 61 2c 20 62 20 46 52    SELECT a, b FR
a9a0: 4f 4d 20 74 38 20 55 4e 49 4f 4e 20 53 45 4c 45  OM t8 UNION SELE
a9b0: 43 54 20 63 2c 20 64 20 46 52 4f 4d 20 74 39 20  CT c, d FROM t9 
a9c0: 4f 52 44 45 52 20 42 59 20 74 39 2e 63 20 43 4f  ORDER BY t9.c CO
a9d0: 4c 4c 41 54 45 20 4e 4f 43 41 53 45 0a 7d 0a 0a  LLATE NOCASE.}..
a9e0: 64 6f 5f 73 61 6d 65 5f 74 65 73 74 20 35 2e 33  do_same_test 5.3
a9f0: 20 7b 0a 20 20 53 45 4c 45 43 54 20 61 2c 20 62   {.  SELECT a, b
aa00: 20 46 52 4f 4d 20 74 38 20 45 58 43 45 50 54 20   FROM t8 EXCEPT 
aa10: 53 45 4c 45 43 54 20 63 2c 20 64 20 46 52 4f 4d  SELECT c, d FROM
aa20: 20 74 39 20 4f 52 44 45 52 20 42 59 20 62 2c 20   t9 ORDER BY b, 
aa30: 63 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45  c COLLATE NOCASE
aa40: 0a 7d 20 7b 0a 20 20 53 45 4c 45 43 54 20 61 2c  .} {.  SELECT a,
aa50: 20 62 20 46 52 4f 4d 20 74 38 20 45 58 43 45 50   b FROM t8 EXCEP
aa60: 54 20 53 45 4c 45 43 54 20 63 2c 20 64 20 46 52  T SELECT c, d FR
aa70: 4f 4d 20 74 39 20 4f 52 44 45 52 20 42 59 20 32  OM t9 ORDER BY 2
aa80: 2c 20 31 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41  , 1 COLLATE NOCA
aa90: 53 45 0a 7d 20 7b 0a 20 20 53 45 4c 45 43 54 20  SE.} {.  SELECT 
aaa0: 61 2c 20 62 20 46 52 4f 4d 20 74 38 20 45 58 43  a, b FROM t8 EXC
aab0: 45 50 54 20 53 45 4c 45 43 54 20 63 2c 20 64 20  EPT SELECT c, d 
aac0: 46 52 4f 4d 20 74 39 20 4f 52 44 45 52 20 42 59  FROM t9 ORDER BY
aad0: 20 64 2c 20 61 20 43 4f 4c 4c 41 54 45 20 4e 4f   d, a COLLATE NO
aae0: 43 41 53 45 0a 7d 20 7b 0a 20 20 53 45 4c 45 43  CASE.} {.  SELEC
aaf0: 54 20 61 2c 20 62 20 46 52 4f 4d 20 74 38 20 45  T a, b FROM t8 E
ab00: 58 43 45 50 54 20 53 45 4c 45 43 54 20 2a 20 46  XCEPT SELECT * F
ab10: 52 4f 4d 20 74 39 20 4f 52 44 45 52 20 42 59 20  ROM t9 ORDER BY 
ab20: 74 39 2e 64 2c 20 63 20 43 4f 4c 4c 41 54 45 20  t9.d, c COLLATE 
ab30: 4e 4f 43 41 53 45 0a 7d 20 7b 0a 20 20 53 45 4c  NOCASE.} {.  SEL
ab40: 45 43 54 20 2a 20 46 52 4f 4d 20 74 38 20 45 58  ECT * FROM t8 EX
ab50: 43 45 50 54 20 53 45 4c 45 43 54 20 63 2c 20 64  CEPT SELECT c, d
ab60: 20 46 52 4f 4d 20 74 39 20 4f 52 44 45 52 20 42   FROM t9 ORDER B
ab70: 59 20 64 2c 20 74 38 2e 61 20 43 4f 4c 4c 41 54  Y d, t8.a COLLAT
ab80: 45 20 4e 4f 43 41 53 45 0a 7d 0a 0a 64 6f 5f 63  E NOCASE.}..do_c
ab90: 61 74 63 68 73 71 6c 5f 74 65 73 74 20 35 2e 34  atchsql_test 5.4
aba0: 20 7b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52   {.  SELECT * FR
abb0: 4f 4d 20 74 38 20 55 4e 49 4f 4e 20 53 45 4c 45  OM t8 UNION SELE
abc0: 43 54 20 2a 20 46 52 4f 4d 20 74 39 20 4f 52 44  CT * FROM t9 ORD
abd0: 45 52 20 42 59 20 61 2b 62 20 43 4f 4c 4c 41 54  ER BY a+b COLLAT
abe0: 45 20 4e 4f 43 41 53 45 0a 7d 20 7b 31 20 7b 31  E NOCASE.} {1 {1
abf0: 73 74 20 4f 52 44 45 52 20 42 59 20 74 65 72 6d  st ORDER BY term
ac00: 20 64 6f 65 73 20 6e 6f 74 20 6d 61 74 63 68 20   does not match 
ac10: 61 6e 79 20 63 6f 6c 75 6d 6e 20 69 6e 20 74 68  any column in th
ac20: 65 20 72 65 73 75 6c 74 20 73 65 74 7d 7d 0a 0a  e result set}}..
ac30: 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20  do_execsql_test 
ac40: 36 2e 31 20 7b 0a 20 20 44 52 4f 50 20 54 41 42  6.1 {.  DROP TAB
ac50: 4c 45 20 49 46 20 45 58 49 53 54 53 20 74 31 3b  LE IF EXISTS t1;
ac60: 0a 20 20 44 52 4f 50 20 54 41 42 4c 45 20 49 46  .  DROP TABLE IF
ac70: 20 45 58 49 53 54 53 20 74 32 3b 0a 20 20 43 52   EXISTS t2;.  CR
ac80: 45 41 54 45 20 54 41 42 4c 45 20 74 31 28 61 20  EATE TABLE t1(a 
ac90: 49 4e 54 45 47 45 52 29 3b 0a 20 20 43 52 45 41  INTEGER);.  CREA
aca0: 54 45 20 54 41 42 4c 45 20 74 32 28 62 20 54 45  TE TABLE t2(b TE
acb0: 58 54 29 3b 0a 20 20 49 4e 53 45 52 54 20 49 4e  XT);.  INSERT IN
acc0: 54 4f 20 74 32 28 62 29 20 56 41 4c 55 45 53 28  TO t2(b) VALUES(
acd0: 27 31 32 33 34 35 27 29 3b 0a 20 20 53 45 4c 45  '12345');.  SELE
ace0: 43 54 20 2a 20 46 52 4f 4d 20 28 53 45 4c 45 43  CT * FROM (SELEC
acf0: 54 20 61 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f  T a FROM t1 UNIO
ad00: 4e 20 53 45 4c 45 43 54 20 62 20 46 52 4f 4d 20  N SELECT b FROM 
ad10: 74 32 29 20 57 48 45 52 45 20 61 3d 61 3b 0a 7d  t2) WHERE a=a;.}
ad20: 20 7b 31 32 33 34 35 7d 0a 0a 0a 66 69 6e 69 73   {12345}...finis
ad30: 68 5f 74 65 73 74 0a                             h_test.