/ Hex Artifact Content
Login
SQLite training in Houston TX on 2019-11-05 (details)
Part of the 2019 Tcl Conference

Artifact 8d7e8787fd461f7aff2b276bcfdc7d1d38db21e9:


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: 31 20 32 30 30 38 2f 30 36 2f 32 35 20 30 32 3a  1 2008/06/25 02:
0330: 32 32 3a 33 32 20 64 72 68 20 45 78 70 20 24 0a  22:32 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 0a 64  ir/tester.tcl..d
0380: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 31  o_test selectA-1
0390: 2e 30 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .0 {.  execsql {
03a0: 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c  .    CREATE TABL
03b0: 45 20 74 31 28 61 2c 62 2c 63 20 43 4f 4c 4c 41  E t1(a,b,c COLLA
03c0: 54 45 20 4e 4f 43 41 53 45 29 3b 0a 20 20 20 20  TE NOCASE);.    
03d0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
03e0: 41 4c 55 45 53 28 31 2c 27 61 27 2c 27 61 27 29  ALUES(1,'a','a')
03f0: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
0400: 4f 20 74 31 20 56 41 4c 55 45 53 28 39 2e 39 2c  O t1 VALUES(9.9,
0410: 20 27 62 27 2c 20 27 42 27 29 3b 0a 20 20 20 20   'b', 'B');.    
0420: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
0430: 41 4c 55 45 53 28 4e 55 4c 4c 2c 20 27 43 27 2c  ALUES(NULL, 'C',
0440: 20 27 63 27 29 3b 0a 20 20 20 20 49 4e 53 45 52   'c');.    INSER
0450: 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53  T INTO t1 VALUES
0460: 28 27 68 65 6c 6c 6f 27 2c 20 27 64 27 2c 20 27  ('hello', 'd', '
0470: 44 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20  D');.    INSERT 
0480: 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 78  INTO t1 VALUES(x
0490: 27 36 31 36 32 36 33 27 2c 20 27 65 27 2c 20 27  '616263', 'e', '
04a0: 65 27 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20  e');.    SELECT 
04b0: 2a 20 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a 7d  * FROM t1;.  }.}
04c0: 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42 20   {1 a a 9.9 b B 
04d0: 7b 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64 20 44  {} C c hello d D
04e0: 20 61 62 63 20 65 20 65 7d 0a 64 6f 5f 74 65 73   abc e e}.do_tes
04f0: 74 20 73 65 6c 65 63 74 41 2d 31 2e 31 20 7b 0a  t selectA-1.1 {.
0500: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
0510: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 32 28  CREATE TABLE t2(
0520: 78 2c 79 2c 7a 20 43 4f 4c 4c 41 54 45 20 4e 4f  x,y,z COLLATE NO
0530: 43 41 53 45 29 3b 0a 20 20 20 20 49 4e 53 45 52  CASE);.    INSER
0540: 54 20 49 4e 54 4f 20 74 32 20 56 41 4c 55 45 53  T INTO t2 VALUES
0550: 28 4e 55 4c 4c 2c 27 55 27 2c 27 75 27 29 3b 0a  (NULL,'U','u');.
0560: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
0570: 74 32 20 56 41 4c 55 45 53 28 27 6d 61 64 27 2c  t2 VALUES('mad',
0580: 20 27 5a 27 2c 20 27 7a 27 29 3b 0a 20 20 20 20   'Z', 'z');.    
0590: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 20 56  INSERT INTO t2 V
05a0: 41 4c 55 45 53 28 78 27 36 38 36 31 37 32 36 35  ALUES(x'68617265
05b0: 27 2c 20 27 6d 27 2c 20 27 4d 27 29 3b 0a 20 20  ', 'm', 'M');.  
05c0: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32    INSERT INTO t2
05d0: 20 56 41 4c 55 45 53 28 35 2e 32 65 36 2c 20 27   VALUES(5.2e6, '
05e0: 58 27 2c 20 27 78 27 29 3b 0a 20 20 20 20 49 4e  X', 'x');.    IN
05f0: 53 45 52 54 20 49 4e 54 4f 20 74 32 20 56 41 4c  SERT INTO t2 VAL
0600: 55 45 53 28 2d 32 33 2c 20 27 59 27 2c 20 27 79  UES(-23, 'Y', 'y
0610: 27 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a  ');.    SELECT *
0620: 20 46 52 4f 4d 20 74 32 3b 0a 20 20 7d 0a 7d 20   FROM t2;.  }.} 
0630: 7b 7b 7d 20 55 20 75 20 6d 61 64 20 5a 20 7a 20  {{} U u mad Z z 
0640: 68 61 72 65 20 6d 20 4d 20 35 32 30 30 30 30 30  hare m M 5200000
0650: 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79 7d 0a  .0 X x -23 Y y}.
0660: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
0670: 2d 32 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  -2.1 {.  execsql
0680: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
0690: 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f  b,c FROM t1 UNIO
06a0: 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 78 2c 79  N ALL SELECT x,y
06b0: 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f  ,z FROM t2.    O
06c0: 52 44 45 52 20 42 59 20 61 2c 62 2c 63 0a 20 20  RDER BY a,b,c.  
06d0: 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55  }.} {{} C c {} U
06e0: 20 75 20 2d 32 33 20 59 20 79 20 31 20 61 20 61   u -23 Y y 1 a a
06f0: 20 39 2e 39 20 62 20 42 20 35 32 30 30 30 30 30   9.9 b B 5200000
0700: 2e 30 20 58 20 78 20 68 65 6c 6c 6f 20 64 20 44  .0 X x hello d D
0710: 20 6d 61 64 20 5a 20 7a 20 61 62 63 20 65 20 65   mad Z z abc e e
0720: 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65   hare m M}.do_te
0730: 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 32 20 7b  st selectA-2.2 {
0740: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
0750: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
0760: 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 20  OM t1 UNION ALL 
0770: 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f  SELECT x,y,z FRO
0780: 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42  M t2.    ORDER B
0790: 59 20 61 20 44 45 53 43 2c 62 2c 63 0a 20 20 7d  Y a DESC,b,c.  }
07a0: 0a 7d 20 7b 68 61 72 65 20 6d 20 4d 20 61 62 63  .} {hare m M abc
07b0: 20 65 20 65 20 6d 61 64 20 5a 20 7a 20 68 65 6c   e e mad Z z hel
07c0: 6c 6f 20 64 20 44 20 35 32 30 30 30 30 30 2e 30  lo d D 5200000.0
07d0: 20 58 20 78 20 39 2e 39 20 62 20 42 20 31 20 61   X x 9.9 b B 1 a
07e0: 20 61 20 2d 32 33 20 59 20 79 20 7b 7d 20 43 20   a -23 Y y {} C 
07f0: 63 20 7b 7d 20 55 20 75 7d 0a 64 6f 5f 74 65 73  c {} U u}.do_tes
0800: 74 20 73 65 6c 65 63 74 41 2d 32 2e 33 20 7b 0a  t selectA-2.3 {.
0810: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
0820: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
0830: 4d 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 20 53  M t1 UNION ALL S
0840: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
0850: 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59   t2.    ORDER BY
0860: 20 61 2c 63 2c 62 0a 20 20 7d 0a 7d 20 7b 7b 7d   a,c,b.  }.} {{}
0870: 20 43 20 63 20 7b 7d 20 55 20 75 20 2d 32 33 20   C c {} U u -23 
0880: 59 20 79 20 31 20 61 20 61 20 39 2e 39 20 62 20  Y y 1 a a 9.9 b 
0890: 42 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20  B 5200000.0 X x 
08a0: 68 65 6c 6c 6f 20 64 20 44 20 6d 61 64 20 5a 20  hello d D mad Z 
08b0: 7a 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d  z abc e e hare m
08c0: 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   M}.do_test sele
08d0: 63 74 41 2d 32 2e 34 20 7b 0a 20 20 65 78 65 63  ctA-2.4 {.  exec
08e0: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
08f0: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 55   a,b,c FROM t1 U
0900: 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20  NION ALL SELECT 
0910: 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20  x,y,z FROM t2.  
0920: 20 20 4f 52 44 45 52 20 42 59 20 62 2c 61 2c 63    ORDER BY b,a,c
0930: 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b  .  }.} {{} C c {
0940: 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e 30 20  } U u 5200000.0 
0950: 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61 64 20  X x -23 Y y mad 
0960: 5a 20 7a 20 31 20 61 20 61 20 39 2e 39 20 62 20  Z z 1 a a 9.9 b 
0970: 42 20 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20  B hello d D abc 
0980: 65 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f  e e hare m M}.do
0990: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e  _test selectA-2.
09a0: 35 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  5 {.  execsql {.
09b0: 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63      SELECT a,b,c
09c0: 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 41   FROM t1 UNION A
09d0: 4c 4c 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20  LL SELECT x,y,z 
09e0: 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45  FROM t2.    ORDE
09f0: 52 20 42 59 20 62 20 43 4f 4c 4c 41 54 45 20 4e  R BY b COLLATE N
0a00: 4f 43 41 53 45 2c 61 2c 63 0a 20 20 7d 0a 7d 20  OCASE,a,c.  }.} 
0a10: 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b  {1 a a 9.9 b B {
0a20: 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64 20 44 20  } C c hello d D 
0a30: 61 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d  abc e e hare m M
0a40: 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e   {} U u 5200000.
0a50: 30 20 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61  0 X x -23 Y y ma
0a60: 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 73  d Z z}.do_test s
0a70: 65 6c 65 63 74 41 2d 32 2e 36 20 7b 0a 20 20 65  electA-2.6 {.  e
0a80: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
0a90: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
0aa0: 31 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45  1 UNION ALL SELE
0ab0: 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32  CT x,y,z FROM t2
0ac0: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 62 20  .    ORDER BY b 
0ad0: 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45 20 44  COLLATE NOCASE D
0ae0: 45 53 43 2c 61 2c 63 0a 20 20 7d 0a 7d 20 7b 6d  ESC,a,c.  }.} {m
0af0: 61 64 20 5a 20 7a 20 2d 32 33 20 59 20 79 20 35  ad Z z -23 Y y 5
0b00: 32 30 30 30 30 30 2e 30 20 58 20 78 20 7b 7d 20  200000.0 X x {} 
0b10: 55 20 75 20 68 61 72 65 20 6d 20 4d 20 61 62 63  U u hare m M abc
0b20: 20 65 20 65 20 68 65 6c 6c 6f 20 64 20 44 20 7b   e e hello d D {
0b30: 7d 20 43 20 63 20 39 2e 39 20 62 20 42 20 31 20  } C c 9.9 b B 1 
0b40: 61 20 61 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  a a}.do_test sel
0b50: 65 63 74 41 2d 32 2e 37 20 7b 0a 20 20 65 78 65  ectA-2.7 {.  exe
0b60: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
0b70: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
0b80: 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54  UNION ALL SELECT
0b90: 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20   x,y,z FROM t2. 
0ba0: 20 20 20 4f 52 44 45 52 20 42 59 20 63 2c 62 2c     ORDER BY c,b,
0bb0: 61 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39  a.  }.} {1 a a 9
0bc0: 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 20 68 65  .9 b B {} C c he
0bd0: 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65 20  llo d D abc e e 
0be0: 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20  hare m M {} U u 
0bf0: 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32  5200000.0 X x -2
0c00: 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64  3 Y y mad Z z}.d
0c10: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32  o_test selectA-2
0c20: 2e 38 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .8 {.  execsql {
0c30: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
0c40: 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20  c FROM t1 UNION 
0c50: 41 4c 4c 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a  ALL SELECT x,y,z
0c60: 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44   FROM t2.    ORD
0c70: 45 52 20 42 59 20 63 2c 61 2c 62 0a 20 20 7d 0a  ER BY c,a,b.  }.
0c80: 7d 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42  } {1 a a 9.9 b B
0c90: 20 7b 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64 20   {} C c hello d 
0ca0: 44 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d  D abc e e hare m
0cb0: 20 4d 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30   M {} U u 520000
0cc0: 30 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79 20  0.0 X x -23 Y y 
0cd0: 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74  mad Z z}.do_test
0ce0: 20 73 65 6c 65 63 74 41 2d 32 2e 39 20 7b 0a 20   selectA-2.9 {. 
0cf0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
0d00: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
0d10: 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45   t1 UNION ALL SE
0d20: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
0d30: 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  t2.    ORDER BY 
0d40: 63 20 44 45 53 43 2c 61 2c 62 0a 20 20 7d 0a 7d  c DESC,a,b.  }.}
0d50: 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59 20   {mad Z z -23 Y 
0d60: 79 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20  y 5200000.0 X x 
0d70: 7b 7d 20 55 20 75 20 68 61 72 65 20 6d 20 4d 20  {} U u hare m M 
0d80: 61 62 63 20 65 20 65 20 68 65 6c 6c 6f 20 64 20  abc e e hello d 
0d90: 44 20 7b 7d 20 43 20 63 20 39 2e 39 20 62 20 42  D {} C c 9.9 b B
0da0: 20 31 20 61 20 61 7d 0a 64 6f 5f 74 65 73 74 20   1 a a}.do_test 
0db0: 73 65 6c 65 63 74 41 2d 32 2e 31 30 20 7b 0a 20  selectA-2.10 {. 
0dc0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
0dd0: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
0de0: 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45   t1 UNION ALL SE
0df0: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
0e00: 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  t2.    ORDER BY 
0e10: 63 20 43 4f 4c 4c 41 54 45 20 42 49 4e 41 52 59  c COLLATE BINARY
0e20: 20 44 45 53 43 2c 61 2c 62 0a 20 20 7d 0a 7d 20   DESC,a,b.  }.} 
0e30: 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59 20 79  {mad Z z -23 Y y
0e40: 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 7b   5200000.0 X x {
0e50: 7d 20 55 20 75 20 61 62 63 20 65 20 65 20 7b 7d  } U u abc e e {}
0e60: 20 43 20 63 20 31 20 61 20 61 20 68 61 72 65 20   C c 1 a a hare 
0e70: 6d 20 4d 20 68 65 6c 6c 6f 20 64 20 44 20 39 2e  m M hello d D 9.
0e80: 39 20 62 20 42 7d 0a 64 6f 5f 74 65 73 74 20 73  9 b B}.do_test s
0e90: 65 6c 65 63 74 41 2d 32 2e 31 31 20 7b 0a 20 20  electA-2.11 {.  
0ea0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
0eb0: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
0ec0: 74 32 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c  t2 UNION ALL SEL
0ed0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
0ee0: 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 61  1.    ORDER BY a
0ef0: 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43  ,b,c.  }.} {{} C
0f00: 20 63 20 7b 7d 20 55 20 75 20 2d 32 33 20 59 20   c {} U u -23 Y 
0f10: 79 20 31 20 61 20 61 20 39 2e 39 20 62 20 42 20  y 1 a a 9.9 b B 
0f20: 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 68 65  5200000.0 X x he
0f30: 6c 6c 6f 20 64 20 44 20 6d 61 64 20 5a 20 7a 20  llo d D mad Z z 
0f40: 61 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d  abc e e hare m M
0f50: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
0f60: 41 2d 32 2e 31 32 20 7b 0a 20 20 65 78 65 63 73  A-2.12 {.  execs
0f70: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
0f80: 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e  x,y,z FROM t2 UN
0f90: 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 61  ION ALL SELECT a
0fa0: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20  ,b,c FROM t1.   
0fb0: 20 4f 52 44 45 52 20 42 59 20 61 20 44 45 53 43   ORDER BY a DESC
0fc0: 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 68 61 72 65  ,b,c.  }.} {hare
0fd0: 20 6d 20 4d 20 61 62 63 20 65 20 65 20 6d 61 64   m M abc e e mad
0fe0: 20 5a 20 7a 20 68 65 6c 6c 6f 20 64 20 44 20 35   Z z hello d D 5
0ff0: 32 30 30 30 30 30 2e 30 20 58 20 78 20 39 2e 39  200000.0 X x 9.9
1000: 20 62 20 42 20 31 20 61 20 61 20 2d 32 33 20 59   b B 1 a a -23 Y
1010: 20 79 20 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75   y {} C c {} U u
1020: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
1030: 41 2d 32 2e 31 33 20 7b 0a 20 20 65 78 65 63 73  A-2.13 {.  execs
1040: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
1050: 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e  x,y,z FROM t2 UN
1060: 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 61  ION ALL SELECT a
1070: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20  ,b,c FROM t1.   
1080: 20 4f 52 44 45 52 20 42 59 20 61 2c 63 2c 62 0a   ORDER BY a,c,b.
1090: 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d    }.} {{} C c {}
10a0: 20 55 20 75 20 2d 32 33 20 59 20 79 20 31 20 61   U u -23 Y y 1 a
10b0: 20 61 20 39 2e 39 20 62 20 42 20 35 32 30 30 30   a 9.9 b B 52000
10c0: 30 30 2e 30 20 58 20 78 20 68 65 6c 6c 6f 20 64  00.0 X x hello d
10d0: 20 44 20 6d 61 64 20 5a 20 7a 20 61 62 63 20 65   D mad Z z abc e
10e0: 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f   e hare m M}.do_
10f0: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 31  test selectA-2.1
1100: 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  4 {.  execsql {.
1110: 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a      SELECT x,y,z
1120: 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 41   FROM t2 UNION A
1130: 4c 4c 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  LL SELECT a,b,c 
1140: 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45  FROM t1.    ORDE
1150: 52 20 42 59 20 62 2c 61 2c 63 0a 20 20 7d 0a 7d  R BY b,a,c.  }.}
1160: 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 20   {{} C c {} U u 
1170: 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32  5200000.0 X x -2
1180: 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 20 31 20  3 Y y mad Z z 1 
1190: 61 20 61 20 39 2e 39 20 62 20 42 20 68 65 6c 6c  a a 9.9 b B hell
11a0: 6f 20 64 20 44 20 61 62 63 20 65 20 65 20 68 61  o d D abc e e ha
11b0: 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20  re m M}.do_test 
11c0: 73 65 6c 65 63 74 41 2d 32 2e 31 35 20 7b 0a 20  selectA-2.15 {. 
11d0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
11e0: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
11f0: 20 74 32 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45   t2 UNION ALL SE
1200: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
1210: 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  t1.    ORDER BY 
1220: 62 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45  b COLLATE NOCASE
1230: 2c 61 2c 63 0a 20 20 7d 0a 7d 20 7b 31 20 61 20  ,a,c.  }.} {1 a 
1240: 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63  a 9.9 b B {} C c
1250: 20 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65   hello d D abc e
1260: 20 65 20 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55   e hare m M {} U
1270: 20 75 20 35 32 30 30 30 30 30 2e 30 20 58 20 78   u 5200000.0 X x
1280: 20 2d 32 33 20 59 20 79 20 6d 61 64 20 5a 20 7a   -23 Y y mad Z z
1290: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
12a0: 41 2d 32 2e 31 36 20 7b 0a 20 20 65 78 65 63 73  A-2.16 {.  execs
12b0: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
12c0: 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e  x,y,z FROM t2 UN
12d0: 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 61  ION ALL SELECT a
12e0: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20  ,b,c FROM t1.   
12f0: 20 4f 52 44 45 52 20 42 59 20 62 20 43 4f 4c 4c   ORDER BY b COLL
1300: 41 54 45 20 4e 4f 43 41 53 45 20 44 45 53 43 2c  ATE NOCASE DESC,
1310: 61 2c 63 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a  a,c.  }.} {mad Z
1320: 20 7a 20 2d 32 33 20 59 20 79 20 35 32 30 30 30   z -23 Y y 52000
1330: 30 30 2e 30 20 58 20 78 20 7b 7d 20 55 20 75 20  00.0 X x {} U u 
1340: 68 61 72 65 20 6d 20 4d 20 61 62 63 20 65 20 65  hare m M abc e e
1350: 20 68 65 6c 6c 6f 20 64 20 44 20 7b 7d 20 43 20   hello d D {} C 
1360: 63 20 39 2e 39 20 62 20 42 20 31 20 61 20 61 7d  c 9.9 b B 1 a a}
1370: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
1380: 2d 32 2e 31 37 20 7b 0a 20 20 65 78 65 63 73 71  -2.17 {.  execsq
1390: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78  l {.    SELECT x
13a0: 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49  ,y,z FROM t2 UNI
13b0: 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 61 2c  ON ALL SELECT a,
13c0: 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20  b,c FROM t1.    
13d0: 4f 52 44 45 52 20 42 59 20 63 2c 62 2c 61 0a 20  ORDER BY c,b,a. 
13e0: 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39 20   }.} {1 a a 9.9 
13f0: 62 20 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c 6f  b B {} C c hello
1400: 20 64 20 44 20 61 62 63 20 65 20 65 20 68 61 72   d D abc e e har
1410: 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32 30  e m M {} U u 520
1420: 30 30 30 30 2e 30 20 58 20 78 20 2d 32 33 20 59  0000.0 X x -23 Y
1430: 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74   y mad Z z}.do_t
1440: 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 31 38  est selectA-2.18
1450: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
1460: 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20     SELECT x,y,z 
1470: 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 41 4c  FROM t2 UNION AL
1480: 4c 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46  L SELECT a,b,c F
1490: 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52  ROM t1.    ORDER
14a0: 20 42 59 20 63 2c 61 2c 62 0a 20 20 7d 0a 7d 20   BY c,a,b.  }.} 
14b0: 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b  {1 a a 9.9 b B {
14c0: 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64 20 44 20  } C c hello d D 
14d0: 61 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d  abc e e hare m M
14e0: 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e   {} U u 5200000.
14f0: 30 20 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61  0 X x -23 Y y ma
1500: 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 73  d Z z}.do_test s
1510: 65 6c 65 63 74 41 2d 32 2e 31 39 20 7b 0a 20 20  electA-2.19 {.  
1520: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
1530: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
1540: 74 32 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c  t2 UNION ALL SEL
1550: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
1560: 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63  1.    ORDER BY c
1570: 20 44 45 53 43 2c 61 2c 62 0a 20 20 7d 0a 7d 20   DESC,a,b.  }.} 
1580: 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59 20 79  {mad Z z -23 Y y
1590: 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 7b   5200000.0 X x {
15a0: 7d 20 55 20 75 20 68 61 72 65 20 6d 20 4d 20 61  } U u hare m M a
15b0: 62 63 20 65 20 65 20 68 65 6c 6c 6f 20 64 20 44  bc e e hello d D
15c0: 20 7b 7d 20 43 20 63 20 39 2e 39 20 62 20 42 20   {} C c 9.9 b B 
15d0: 31 20 61 20 61 7d 0a 64 6f 5f 74 65 73 74 20 73  1 a a}.do_test s
15e0: 65 6c 65 63 74 41 2d 32 2e 32 30 20 7b 0a 20 20  electA-2.20 {.  
15f0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
1600: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
1610: 74 32 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c  t2 UNION ALL SEL
1620: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
1630: 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63  1.    ORDER BY c
1640: 20 43 4f 4c 4c 41 54 45 20 42 49 4e 41 52 59 20   COLLATE BINARY 
1650: 44 45 53 43 2c 61 2c 62 0a 20 20 7d 0a 7d 20 7b  DESC,a,b.  }.} {
1660: 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59 20 79 20  mad Z z -23 Y y 
1670: 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 7b 7d  5200000.0 X x {}
1680: 20 55 20 75 20 61 62 63 20 65 20 65 20 7b 7d 20   U u abc e e {} 
1690: 43 20 63 20 31 20 61 20 61 20 68 61 72 65 20 6d  C c 1 a a hare m
16a0: 20 4d 20 68 65 6c 6c 6f 20 64 20 44 20 39 2e 39   M hello d D 9.9
16b0: 20 62 20 42 7d 0a 64 6f 5f 74 65 73 74 20 73 65   b B}.do_test se
16c0: 6c 65 63 74 41 2d 32 2e 32 31 20 7b 0a 20 20 65  lectA-2.21 {.  e
16d0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
16e0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
16f0: 31 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 78  1 UNION SELECT x
1700: 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20  ,y,z FROM t2.   
1710: 20 4f 52 44 45 52 20 42 59 20 61 2c 62 2c 63 0a   ORDER BY a,b,c.
1720: 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d    }.} {{} C c {}
1730: 20 55 20 75 20 2d 32 33 20 59 20 79 20 31 20 61   U u -23 Y y 1 a
1740: 20 61 20 39 2e 39 20 62 20 42 20 35 32 30 30 30   a 9.9 b B 52000
1750: 30 30 2e 30 20 58 20 78 20 68 65 6c 6c 6f 20 64  00.0 X x hello d
1760: 20 44 20 6d 61 64 20 5a 20 7a 20 61 62 63 20 65   D mad Z z abc e
1770: 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f   e hare m M}.do_
1780: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 32  test selectA-2.2
1790: 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  2 {.  execsql {.
17a0: 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63      SELECT a,b,c
17b0: 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 53   FROM t1 UNION S
17c0: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
17d0: 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59   t2.    ORDER BY
17e0: 20 61 20 44 45 53 43 2c 62 2c 63 0a 20 20 7d 0a   a DESC,b,c.  }.
17f0: 7d 20 7b 68 61 72 65 20 6d 20 4d 20 61 62 63 20  } {hare m M abc 
1800: 65 20 65 20 6d 61 64 20 5a 20 7a 20 68 65 6c 6c  e e mad Z z hell
1810: 6f 20 64 20 44 20 35 32 30 30 30 30 30 2e 30 20  o d D 5200000.0 
1820: 58 20 78 20 39 2e 39 20 62 20 42 20 31 20 61 20  X x 9.9 b B 1 a 
1830: 61 20 2d 32 33 20 59 20 79 20 7b 7d 20 43 20 63  a -23 Y y {} C c
1840: 20 7b 7d 20 55 20 75 7d 0a 64 6f 5f 74 65 73 74   {} U u}.do_test
1850: 20 73 65 6c 65 63 74 41 2d 32 2e 32 33 20 7b 0a   selectA-2.23 {.
1860: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
1870: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
1880: 4d 20 74 31 20 55 4e 49 4f 4e 20 53 45 4c 45 43  M t1 UNION SELEC
1890: 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a  T x,y,z FROM t2.
18a0: 20 20 20 20 4f 52 44 45 52 20 42 59 20 61 2c 63      ORDER BY a,c
18b0: 2c 62 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63  ,b.  }.} {{} C c
18c0: 20 7b 7d 20 55 20 75 20 2d 32 33 20 59 20 79 20   {} U u -23 Y y 
18d0: 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 35 32  1 a a 9.9 b B 52
18e0: 30 30 30 30 30 2e 30 20 58 20 78 20 68 65 6c 6c  00000.0 X x hell
18f0: 6f 20 64 20 44 20 6d 61 64 20 5a 20 7a 20 61 62  o d D mad Z z ab
1900: 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a  c e e hare m M}.
1910: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
1920: 32 2e 32 34 20 7b 0a 20 20 65 78 65 63 73 71 6c  2.24 {.  execsql
1930: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
1940: 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f  b,c FROM t1 UNIO
1950: 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46  N SELECT x,y,z F
1960: 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52  ROM t2.    ORDER
1970: 20 42 59 20 62 2c 61 2c 63 0a 20 20 7d 0a 7d 20   BY b,a,c.  }.} 
1980: 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 20 35  {{} C c {} U u 5
1990: 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32 33  200000.0 X x -23
19a0: 20 59 20 79 20 6d 61 64 20 5a 20 7a 20 31 20 61   Y y mad Z z 1 a
19b0: 20 61 20 39 2e 39 20 62 20 42 20 68 65 6c 6c 6f   a 9.9 b B hello
19c0: 20 64 20 44 20 61 62 63 20 65 20 65 20 68 61 72   d D abc e e har
19d0: 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73  e m M}.do_test s
19e0: 65 6c 65 63 74 41 2d 32 2e 32 35 20 7b 0a 20 20  electA-2.25 {.  
19f0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
1a00: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
1a10: 74 31 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20  t1 UNION SELECT 
1a20: 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20  x,y,z FROM t2.  
1a30: 20 20 4f 52 44 45 52 20 42 59 20 62 20 43 4f 4c    ORDER BY b COL
1a40: 4c 41 54 45 20 4e 4f 43 41 53 45 2c 61 2c 63 0a  LATE NOCASE,a,c.
1a50: 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39    }.} {1 a a 9.9
1a60: 20 62 20 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c   b B {} C c hell
1a70: 6f 20 64 20 44 20 61 62 63 20 65 20 65 20 68 61  o d D abc e e ha
1a80: 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32  re m M {} U u 52
1a90: 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32 33 20  00000.0 X x -23 
1aa0: 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f  Y y mad Z z}.do_
1ab0: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 32  test selectA-2.2
1ac0: 36 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  6 {.  execsql {.
1ad0: 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63      SELECT a,b,c
1ae0: 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 53   FROM t1 UNION S
1af0: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
1b00: 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59   t2.    ORDER BY
1b10: 20 62 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53   b COLLATE NOCAS
1b20: 45 20 44 45 53 43 2c 61 2c 63 0a 20 20 7d 0a 7d  E DESC,a,c.  }.}
1b30: 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59 20   {mad Z z -23 Y 
1b40: 79 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20  y 5200000.0 X x 
1b50: 7b 7d 20 55 20 75 20 68 61 72 65 20 6d 20 4d 20  {} U u hare m M 
1b60: 61 62 63 20 65 20 65 20 68 65 6c 6c 6f 20 64 20  abc e e hello d 
1b70: 44 20 7b 7d 20 43 20 63 20 39 2e 39 20 62 20 42  D {} C c 9.9 b B
1b80: 20 31 20 61 20 61 7d 0a 64 6f 5f 74 65 73 74 20   1 a a}.do_test 
1b90: 73 65 6c 65 63 74 41 2d 32 2e 32 37 20 7b 0a 20  selectA-2.27 {. 
1ba0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
1bb0: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
1bc0: 20 74 31 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54   t1 UNION SELECT
1bd0: 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20   x,y,z FROM t2. 
1be0: 20 20 20 4f 52 44 45 52 20 42 59 20 63 2c 62 2c     ORDER BY c,b,
1bf0: 61 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39  a.  }.} {1 a a 9
1c00: 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 20 68 65  .9 b B {} C c he
1c10: 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65 20  llo d D abc e e 
1c20: 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20  hare m M {} U u 
1c30: 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32  5200000.0 X x -2
1c40: 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64  3 Y y mad Z z}.d
1c50: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32  o_test selectA-2
1c60: 2e 32 38 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .28 {.  execsql 
1c70: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62  {.    SELECT a,b
1c80: 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e  ,c FROM t1 UNION
1c90: 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52   SELECT x,y,z FR
1ca0: 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20  OM t2.    ORDER 
1cb0: 42 59 20 63 2c 61 2c 62 0a 20 20 7d 0a 7d 20 7b  BY c,a,b.  }.} {
1cc0: 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b 7d  1 a a 9.9 b B {}
1cd0: 20 43 20 63 20 68 65 6c 6c 6f 20 64 20 44 20 61   C c hello d D a
1ce0: 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d 20  bc e e hare m M 
1cf0: 7b 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e 30  {} U u 5200000.0
1d00: 20 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61 64   X x -23 Y y mad
1d10: 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 73 65   Z z}.do_test se
1d20: 6c 65 63 74 41 2d 32 2e 32 39 20 7b 0a 20 20 65  lectA-2.29 {.  e
1d30: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
1d40: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
1d50: 31 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 78  1 UNION SELECT x
1d60: 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20  ,y,z FROM t2.   
1d70: 20 4f 52 44 45 52 20 42 59 20 63 20 44 45 53 43   ORDER BY c DESC
1d80: 2c 61 2c 62 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20  ,a,b.  }.} {mad 
1d90: 5a 20 7a 20 2d 32 33 20 59 20 79 20 35 32 30 30  Z z -23 Y y 5200
1da0: 30 30 30 2e 30 20 58 20 78 20 7b 7d 20 55 20 75  000.0 X x {} U u
1db0: 20 68 61 72 65 20 6d 20 4d 20 61 62 63 20 65 20   hare m M abc e 
1dc0: 65 20 68 65 6c 6c 6f 20 64 20 44 20 7b 7d 20 43  e hello d D {} C
1dd0: 20 63 20 39 2e 39 20 62 20 42 20 31 20 61 20 61   c 9.9 b B 1 a a
1de0: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
1df0: 41 2d 32 2e 33 30 20 7b 0a 20 20 65 78 65 63 73  A-2.30 {.  execs
1e00: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
1e10: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e  a,b,c FROM t1 UN
1e20: 49 4f 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a  ION SELECT x,y,z
1e30: 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44   FROM t2.    ORD
1e40: 45 52 20 42 59 20 63 20 43 4f 4c 4c 41 54 45 20  ER BY c COLLATE 
1e50: 42 49 4e 41 52 59 20 44 45 53 43 2c 61 2c 62 0a  BINARY DESC,a,b.
1e60: 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d    }.} {mad Z z -
1e70: 32 33 20 59 20 79 20 35 32 30 30 30 30 30 2e 30  23 Y y 5200000.0
1e80: 20 58 20 78 20 7b 7d 20 55 20 75 20 61 62 63 20   X x {} U u abc 
1e90: 65 20 65 20 7b 7d 20 43 20 63 20 31 20 61 20 61  e e {} C c 1 a a
1ea0: 20 68 61 72 65 20 6d 20 4d 20 68 65 6c 6c 6f 20   hare m M hello 
1eb0: 64 20 44 20 39 2e 39 20 62 20 42 7d 0a 64 6f 5f  d D 9.9 b B}.do_
1ec0: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 33  test selectA-2.3
1ed0: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  1 {.  execsql {.
1ee0: 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a      SELECT x,y,z
1ef0: 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 53   FROM t2 UNION S
1f00: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
1f10: 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59   t1.    ORDER BY
1f20: 20 61 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 7b 7d   a,b,c.  }.} {{}
1f30: 20 43 20 63 20 7b 7d 20 55 20 75 20 2d 32 33 20   C c {} U u -23 
1f40: 59 20 79 20 31 20 61 20 61 20 39 2e 39 20 62 20  Y y 1 a a 9.9 b 
1f50: 42 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20  B 5200000.0 X x 
1f60: 68 65 6c 6c 6f 20 64 20 44 20 6d 61 64 20 5a 20  hello d D mad Z 
1f70: 7a 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d  z abc e e hare m
1f80: 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   M}.do_test sele
1f90: 63 74 41 2d 32 2e 33 32 20 7b 0a 20 20 65 78 65  ctA-2.32 {.  exe
1fa0: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
1fb0: 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20  T x,y,z FROM t2 
1fc0: 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62  UNION SELECT a,b
1fd0: 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f  ,c FROM t1.    O
1fe0: 52 44 45 52 20 42 59 20 61 20 44 45 53 43 2c 62  RDER BY a DESC,b
1ff0: 2c 63 0a 20 20 7d 0a 7d 20 7b 68 61 72 65 20 6d  ,c.  }.} {hare m
2000: 20 4d 20 61 62 63 20 65 20 65 20 6d 61 64 20 5a   M abc e e mad Z
2010: 20 7a 20 68 65 6c 6c 6f 20 64 20 44 20 35 32 30   z hello d D 520
2020: 30 30 30 30 2e 30 20 58 20 78 20 39 2e 39 20 62  0000.0 X x 9.9 b
2030: 20 42 20 31 20 61 20 61 20 2d 32 33 20 59 20 79   B 1 a a -23 Y y
2040: 20 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 7d 0a   {} C c {} U u}.
2050: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
2060: 32 2e 33 33 20 7b 0a 20 20 65 78 65 63 73 71 6c  2.33 {.  execsql
2070: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c   {.    SELECT x,
2080: 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f  y,z FROM t2 UNIO
2090: 4e 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46  N SELECT a,b,c F
20a0: 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52  ROM t1.    ORDER
20b0: 20 42 59 20 61 2c 63 2c 62 0a 20 20 7d 0a 7d 20   BY a,c,b.  }.} 
20c0: 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 20 2d  {{} C c {} U u -
20d0: 32 33 20 59 20 79 20 31 20 61 20 61 20 39 2e 39  23 Y y 1 a a 9.9
20e0: 20 62 20 42 20 35 32 30 30 30 30 30 2e 30 20 58   b B 5200000.0 X
20f0: 20 78 20 68 65 6c 6c 6f 20 64 20 44 20 6d 61 64   x hello d D mad
2100: 20 5a 20 7a 20 61 62 63 20 65 20 65 20 68 61 72   Z z abc e e har
2110: 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73  e m M}.do_test s
2120: 65 6c 65 63 74 41 2d 32 2e 33 34 20 7b 0a 20 20  electA-2.34 {.  
2130: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
2140: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
2150: 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20  t2 UNION SELECT 
2160: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20  a,b,c FROM t1.  
2170: 20 20 4f 52 44 45 52 20 42 59 20 62 2c 61 2c 63    ORDER BY b,a,c
2180: 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b  .  }.} {{} C c {
2190: 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e 30 20  } U u 5200000.0 
21a0: 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61 64 20  X x -23 Y y mad 
21b0: 5a 20 7a 20 31 20 61 20 61 20 39 2e 39 20 62 20  Z z 1 a a 9.9 b 
21c0: 42 20 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20  B hello d D abc 
21d0: 65 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f  e e hare m M}.do
21e0: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e  _test selectA-2.
21f0: 33 35 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  35 {.  execsql {
2200: 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c  .    SELECT x,y,
2210: 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20  z FROM t2 UNION 
2220: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
2230: 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42  M t1.    ORDER B
2240: 59 20 62 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41  Y b COLLATE NOCA
2250: 53 45 2c 61 2c 63 0a 20 20 7d 0a 7d 20 7b 31 20  SE,a,c.  }.} {1 
2260: 61 20 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43  a a 9.9 b B {} C
2270: 20 63 20 68 65 6c 6c 6f 20 64 20 44 20 61 62 63   c hello d D abc
2280: 20 65 20 65 20 68 61 72 65 20 6d 20 4d 20 7b 7d   e e hare m M {}
2290: 20 55 20 75 20 35 32 30 30 30 30 30 2e 30 20 58   U u 5200000.0 X
22a0: 20 78 20 2d 32 33 20 59 20 79 20 6d 61 64 20 5a   x -23 Y y mad Z
22b0: 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   z}.do_test sele
22c0: 63 74 41 2d 32 2e 33 36 20 7b 0a 20 20 65 78 65  ctA-2.36 {.  exe
22d0: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
22e0: 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20  T x,y,z FROM t2 
22f0: 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62  UNION SELECT a,b
2300: 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f  ,c FROM t1.    O
2310: 52 44 45 52 20 42 59 20 62 20 43 4f 4c 4c 41 54  RDER BY b COLLAT
2320: 45 20 4e 4f 43 41 53 45 20 44 45 53 43 2c 61 2c  E NOCASE DESC,a,
2330: 63 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a  c.  }.} {mad Z z
2340: 20 2d 32 33 20 59 20 79 20 35 32 30 30 30 30 30   -23 Y y 5200000
2350: 2e 30 20 58 20 78 20 7b 7d 20 55 20 75 20 68 61  .0 X x {} U u ha
2360: 72 65 20 6d 20 4d 20 61 62 63 20 65 20 65 20 68  re m M abc e e h
2370: 65 6c 6c 6f 20 64 20 44 20 7b 7d 20 43 20 63 20  ello d D {} C c 
2380: 39 2e 39 20 62 20 42 20 31 20 61 20 61 7d 0a 64  9.9 b B 1 a a}.d
2390: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32  o_test selectA-2
23a0: 2e 33 37 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .37 {.  execsql 
23b0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79  {.    SELECT x,y
23c0: 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e  ,z FROM t2 UNION
23d0: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
23e0: 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20  OM t1.    ORDER 
23f0: 42 59 20 63 2c 62 2c 61 0a 20 20 7d 0a 7d 20 7b  BY c,b,a.  }.} {
2400: 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b 7d  1 a a 9.9 b B {}
2410: 20 43 20 63 20 68 65 6c 6c 6f 20 64 20 44 20 61   C c hello d D a
2420: 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d 20  bc e e hare m M 
2430: 7b 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e 30  {} U u 5200000.0
2440: 20 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61 64   X x -23 Y y mad
2450: 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 73 65   Z z}.do_test se
2460: 6c 65 63 74 41 2d 32 2e 33 38 20 7b 0a 20 20 65  lectA-2.38 {.  e
2470: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
2480: 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74  ECT x,y,z FROM t
2490: 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61  2 UNION SELECT a
24a0: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20  ,b,c FROM t1.   
24b0: 20 4f 52 44 45 52 20 42 59 20 63 2c 61 2c 62 0a   ORDER BY c,a,b.
24c0: 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39    }.} {1 a a 9.9
24d0: 20 62 20 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c   b B {} C c hell
24e0: 6f 20 64 20 44 20 61 62 63 20 65 20 65 20 68 61  o d D abc e e ha
24f0: 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32  re m M {} U u 52
2500: 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32 33 20  00000.0 X x -23 
2510: 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f  Y y mad Z z}.do_
2520: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 33  test selectA-2.3
2530: 39 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  9 {.  execsql {.
2540: 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a      SELECT x,y,z
2550: 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 53   FROM t2 UNION S
2560: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
2570: 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59   t1.    ORDER BY
2580: 20 63 20 44 45 53 43 2c 61 2c 62 0a 20 20 7d 0a   c DESC,a,b.  }.
2590: 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59  } {mad Z z -23 Y
25a0: 20 79 20 35 32 30 30 30 30 30 2e 30 20 58 20 78   y 5200000.0 X x
25b0: 20 7b 7d 20 55 20 75 20 68 61 72 65 20 6d 20 4d   {} U u hare m M
25c0: 20 61 62 63 20 65 20 65 20 68 65 6c 6c 6f 20 64   abc e e hello d
25d0: 20 44 20 7b 7d 20 43 20 63 20 39 2e 39 20 62 20   D {} C c 9.9 b 
25e0: 42 20 31 20 61 20 61 7d 0a 64 6f 5f 74 65 73 74  B 1 a a}.do_test
25f0: 20 73 65 6c 65 63 74 41 2d 32 2e 34 30 20 7b 0a   selectA-2.40 {.
2600: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
2610: 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f  SELECT x,y,z FRO
2620: 4d 20 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43  M t2 UNION SELEC
2630: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a  T a,b,c FROM t1.
2640: 20 20 20 20 4f 52 44 45 52 20 42 59 20 63 20 43      ORDER BY c C
2650: 4f 4c 4c 41 54 45 20 42 49 4e 41 52 59 20 44 45  OLLATE BINARY DE
2660: 53 43 2c 61 2c 62 0a 20 20 7d 0a 7d 20 7b 6d 61  SC,a,b.  }.} {ma
2670: 64 20 5a 20 7a 20 2d 32 33 20 59 20 79 20 35 32  d Z z -23 Y y 52
2680: 30 30 30 30 30 2e 30 20 58 20 78 20 7b 7d 20 55  00000.0 X x {} U
2690: 20 75 20 61 62 63 20 65 20 65 20 7b 7d 20 43 20   u abc e e {} C 
26a0: 63 20 31 20 61 20 61 20 68 61 72 65 20 6d 20 4d  c 1 a a hare m M
26b0: 20 68 65 6c 6c 6f 20 64 20 44 20 39 2e 39 20 62   hello d D 9.9 b
26c0: 20 42 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   B}.do_test sele
26d0: 63 74 41 2d 32 2e 34 31 20 7b 0a 20 20 65 78 65  ctA-2.41 {.  exe
26e0: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
26f0: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
2700: 45 58 43 45 50 54 20 53 45 4c 45 43 54 20 61 2c  EXCEPT SELECT a,
2710: 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52  b,c FROM t1 WHER
2720: 45 20 62 3e 3d 27 64 27 0a 20 20 20 20 4f 52 44  E b>='d'.    ORD
2730: 45 52 20 42 59 20 61 2c 62 2c 63 0a 20 20 7d 0a  ER BY a,b,c.  }.
2740: 7d 20 7b 7b 7d 20 43 20 63 20 31 20 61 20 61 20  } {{} C c 1 a a 
2750: 39 2e 39 20 62 20 42 7d 0a 64 6f 5f 74 65 73 74  9.9 b B}.do_test
2760: 20 73 65 6c 65 63 74 41 2d 32 2e 34 32 20 7b 0a   selectA-2.42 {.
2770: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
2780: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
2790: 4d 20 74 31 20 49 4e 54 45 52 53 45 43 54 20 53  M t1 INTERSECT S
27a0: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
27b0: 20 74 31 20 57 48 45 52 45 20 62 3e 3d 27 64 27   t1 WHERE b>='d'
27c0: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 61 2c  .    ORDER BY a,
27d0: 62 2c 63 0a 20 20 7d 0a 7d 20 7b 68 65 6c 6c 6f  b,c.  }.} {hello
27e0: 20 64 20 44 20 61 62 63 20 65 20 65 7d 0a 64 6f   d D abc e e}.do
27f0: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e  _test selectA-2.
2800: 34 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  43 {.  execsql {
2810: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
2820: 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  c FROM t1 WHERE 
2830: 62 3e 3d 27 64 27 20 49 4e 54 45 52 53 45 43 54  b>='d' INTERSECT
2840: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
2850: 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20  OM t1.    ORDER 
2860: 42 59 20 61 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b  BY a,b,c.  }.} {
2870: 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20  hello d D abc e 
2880: 65 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  e}.do_test selec
2890: 74 41 2d 32 2e 34 34 20 7b 0a 20 20 65 78 65 63  tA-2.44 {.  exec
28a0: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
28b0: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 45   a,b,c FROM t1 E
28c0: 58 43 45 50 54 20 53 45 4c 45 43 54 20 61 2c 62  XCEPT SELECT a,b
28d0: 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45  ,c FROM t1 WHERE
28e0: 20 62 3c 27 64 27 0a 20 20 20 20 4f 52 44 45 52   b<'d'.    ORDER
28f0: 20 42 59 20 61 2c 62 2c 63 0a 20 20 7d 0a 7d 20   BY a,b,c.  }.} 
2900: 7b 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65  {hello d D abc e
2910: 20 65 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   e}.do_test sele
2920: 63 74 41 2d 32 2e 34 35 20 7b 0a 20 20 65 78 65  ctA-2.45 {.  exe
2930: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
2940: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
2950: 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43 54  INTERSECT SELECT
2960: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57   a,b,c FROM t1 W
2970: 48 45 52 45 20 62 3c 27 64 27 0a 20 20 20 20 4f  HERE b<'d'.    O
2980: 52 44 45 52 20 42 59 20 61 2c 62 2c 63 0a 20 20  RDER BY a,b,c.  
2990: 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 31 20 61 20  }.} {{} C c 1 a 
29a0: 61 20 39 2e 39 20 62 20 42 7d 0a 64 6f 5f 74 65  a 9.9 b B}.do_te
29b0: 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 34 36 20  st selectA-2.46 
29c0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
29d0: 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46    SELECT a,b,c F
29e0: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3c 27  ROM t1 WHERE b<'
29f0: 64 27 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c  d' INTERSECT SEL
2a00: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
2a10: 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 61  1.    ORDER BY a
2a20: 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43  ,b,c.  }.} {{} C
2a30: 20 63 20 31 20 61 20 61 20 39 2e 39 20 62 20 42   c 1 a a 9.9 b B
2a40: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
2a50: 41 2d 32 2e 34 37 20 7b 0a 20 20 65 78 65 63 73  A-2.47 {.  execs
2a60: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
2a70: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 45 58  a,b,c FROM t1 EX
2a80: 43 45 50 54 20 53 45 4c 45 43 54 20 61 2c 62 2c  CEPT SELECT a,b,
2a90: 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  c FROM t1 WHERE 
2aa0: 62 3e 3d 27 64 27 0a 20 20 20 20 4f 52 44 45 52  b>='d'.    ORDER
2ab0: 20 42 59 20 61 20 44 45 53 43 0a 20 20 7d 0a 7d   BY a DESC.  }.}
2ac0: 20 7b 39 2e 39 20 62 20 42 20 31 20 61 20 61 20   {9.9 b B 1 a a 
2ad0: 7b 7d 20 43 20 63 7d 0a 64 6f 5f 74 65 73 74 20  {} C c}.do_test 
2ae0: 73 65 6c 65 63 74 41 2d 32 2e 34 38 20 7b 0a 20  selectA-2.48 {. 
2af0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
2b00: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
2b10: 20 74 31 20 49 4e 54 45 52 53 45 43 54 20 53 45   t1 INTERSECT SE
2b20: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
2b30: 74 31 20 57 48 45 52 45 20 62 3e 3d 27 64 27 0a  t1 WHERE b>='d'.
2b40: 20 20 20 20 4f 52 44 45 52 20 42 59 20 61 20 44      ORDER BY a D
2b50: 45 53 43 0a 20 20 7d 0a 7d 20 7b 61 62 63 20 65  ESC.  }.} {abc e
2b60: 20 65 20 68 65 6c 6c 6f 20 64 20 44 7d 0a 64 6f   e hello d D}.do
2b70: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e  _test selectA-2.
2b80: 34 39 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  49 {.  execsql {
2b90: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
2ba0: 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  c FROM t1 WHERE 
2bb0: 62 3e 3d 27 64 27 20 49 4e 54 45 52 53 45 43 54  b>='d' INTERSECT
2bc0: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
2bd0: 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20  OM t1.    ORDER 
2be0: 42 59 20 61 20 44 45 53 43 0a 20 20 7d 0a 7d 20  BY a DESC.  }.} 
2bf0: 7b 61 62 63 20 65 20 65 20 68 65 6c 6c 6f 20 64  {abc e e hello d
2c00: 20 44 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   D}.do_test sele
2c10: 63 74 41 2d 32 2e 35 30 20 7b 0a 20 20 65 78 65  ctA-2.50 {.  exe
2c20: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
2c30: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
2c40: 45 58 43 45 50 54 20 53 45 4c 45 43 54 20 61 2c  EXCEPT SELECT a,
2c50: 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52  b,c FROM t1 WHER
2c60: 45 20 62 3c 27 64 27 0a 20 20 20 20 4f 52 44 45  E b<'d'.    ORDE
2c70: 52 20 42 59 20 61 20 44 45 53 43 0a 20 20 7d 0a  R BY a DESC.  }.
2c80: 7d 20 7b 61 62 63 20 65 20 65 20 68 65 6c 6c 6f  } {abc e e hello
2c90: 20 64 20 44 7d 0a 64 6f 5f 74 65 73 74 20 73 65   d D}.do_test se
2ca0: 6c 65 63 74 41 2d 32 2e 35 31 20 7b 0a 20 20 65  lectA-2.51 {.  e
2cb0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
2cc0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
2cd0: 31 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45  1 INTERSECT SELE
2ce0: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
2cf0: 20 57 48 45 52 45 20 62 3c 27 64 27 0a 20 20 20   WHERE b<'d'.   
2d00: 20 4f 52 44 45 52 20 42 59 20 61 20 44 45 53 43   ORDER BY a DESC
2d10: 0a 20 20 7d 0a 7d 20 7b 39 2e 39 20 62 20 42 20  .  }.} {9.9 b B 
2d20: 31 20 61 20 61 20 7b 7d 20 43 20 63 7d 0a 64 6f  1 a a {} C c}.do
2d30: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e  _test selectA-2.
2d40: 35 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  52 {.  execsql {
2d50: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
2d60: 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  c FROM t1 WHERE 
2d70: 62 3c 27 64 27 20 49 4e 54 45 52 53 45 43 54 20  b<'d' INTERSECT 
2d80: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
2d90: 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42  M t1.    ORDER B
2da0: 59 20 61 20 44 45 53 43 0a 20 20 7d 0a 7d 20 7b  Y a DESC.  }.} {
2db0: 39 2e 39 20 62 20 42 20 31 20 61 20 61 20 7b 7d  9.9 b B 1 a a {}
2dc0: 20 43 20 63 7d 0a 64 6f 5f 74 65 73 74 20 73 65   C c}.do_test se
2dd0: 6c 65 63 74 41 2d 32 2e 35 33 20 7b 0a 20 20 65  lectA-2.53 {.  e
2de0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
2df0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
2e00: 31 20 45 58 43 45 50 54 20 53 45 4c 45 43 54 20  1 EXCEPT SELECT 
2e10: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48  a,b,c FROM t1 WH
2e20: 45 52 45 20 62 3e 3d 27 64 27 0a 20 20 20 20 4f  ERE b>='d'.    O
2e30: 52 44 45 52 20 42 59 20 62 2c 20 61 20 44 45 53  RDER BY b, a DES
2e40: 43 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20  C.  }.} {{} C c 
2e50: 31 20 61 20 61 20 39 2e 39 20 62 20 42 7d 0a 64  1 a a 9.9 b B}.d
2e60: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32  o_test selectA-2
2e70: 2e 35 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .54 {.  execsql 
2e80: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62  {.    SELECT a,b
2e90: 2c 63 20 46 52 4f 4d 20 74 31 20 49 4e 54 45 52  ,c FROM t1 INTER
2ea0: 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c  SECT SELECT a,b,
2eb0: 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  c FROM t1 WHERE 
2ec0: 62 3e 3d 27 64 27 0a 20 20 20 20 4f 52 44 45 52  b>='d'.    ORDER
2ed0: 20 42 59 20 62 0a 20 20 7d 0a 7d 20 7b 68 65 6c   BY b.  }.} {hel
2ee0: 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65 7d 0a  lo d D abc e e}.
2ef0: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
2f00: 32 2e 35 35 20 7b 0a 20 20 65 78 65 63 73 71 6c  2.55 {.  execsql
2f10: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
2f20: 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52  b,c FROM t1 WHER
2f30: 45 20 62 3e 3d 27 64 27 20 49 4e 54 45 52 53 45  E b>='d' INTERSE
2f40: 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  CT SELECT a,b,c 
2f50: 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45  FROM t1.    ORDE
2f60: 52 20 42 59 20 62 20 44 45 53 43 2c 20 63 0a 20  R BY b DESC, c. 
2f70: 20 7d 0a 7d 20 7b 61 62 63 20 65 20 65 20 68 65   }.} {abc e e he
2f80: 6c 6c 6f 20 64 20 44 7d 0a 64 6f 5f 74 65 73 74  llo d D}.do_test
2f90: 20 73 65 6c 65 63 74 41 2d 32 2e 35 36 20 7b 0a   selectA-2.56 {.
2fa0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
2fb0: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
2fc0: 4d 20 74 31 20 45 58 43 45 50 54 20 53 45 4c 45  M t1 EXCEPT SELE
2fd0: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
2fe0: 20 57 48 45 52 45 20 62 3c 27 64 27 0a 20 20 20   WHERE b<'d'.   
2ff0: 20 4f 52 44 45 52 20 42 59 20 62 2c 20 63 20 44   ORDER BY b, c D
3000: 45 53 43 2c 20 61 0a 20 20 7d 0a 7d 20 7b 68 65  ESC, a.  }.} {he
3010: 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65 7d  llo d D abc e e}
3020: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
3030: 2d 32 2e 35 37 20 7b 0a 20 20 65 78 65 63 73 71  -2.57 {.  execsq
3040: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61  l {.    SELECT a
3050: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 49 4e 54  ,b,c FROM t1 INT
3060: 45 52 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c  ERSECT SELECT a,
3070: 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52  b,c FROM t1 WHER
3080: 45 20 62 3c 27 64 27 0a 20 20 20 20 4f 52 44 45  E b<'d'.    ORDE
3090: 52 20 42 59 20 62 20 43 4f 4c 4c 41 54 45 20 4e  R BY b COLLATE N
30a0: 4f 43 41 53 45 0a 20 20 7d 0a 7d 20 7b 31 20 61  OCASE.  }.} {1 a
30b0: 20 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20   a 9.9 b B {} C 
30c0: 63 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  c}.do_test selec
30d0: 74 41 2d 32 2e 35 38 20 7b 0a 20 20 65 78 65 63  tA-2.58 {.  exec
30e0: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
30f0: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57   a,b,c FROM t1 W
3100: 48 45 52 45 20 62 3c 27 64 27 20 49 4e 54 45 52  HERE b<'d' INTER
3110: 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c  SECT SELECT a,b,
3120: 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52  c FROM t1.    OR
3130: 44 45 52 20 42 59 20 62 0a 20 20 7d 0a 7d 20 7b  DER BY b.  }.} {
3140: 7b 7d 20 43 20 63 20 31 20 61 20 61 20 39 2e 39  {} C c 1 a a 9.9
3150: 20 62 20 42 7d 0a 64 6f 5f 74 65 73 74 20 73 65   b B}.do_test se
3160: 6c 65 63 74 41 2d 32 2e 35 39 20 7b 0a 20 20 65  lectA-2.59 {.  e
3170: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
3180: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
3190: 31 20 45 58 43 45 50 54 20 53 45 4c 45 43 54 20  1 EXCEPT SELECT 
31a0: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48  a,b,c FROM t1 WH
31b0: 45 52 45 20 62 3e 3d 27 64 27 0a 20 20 20 20 4f  ERE b>='d'.    O
31c0: 52 44 45 52 20 42 59 20 63 2c 20 61 20 44 45 53  RDER BY c, a DES
31d0: 43 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39  C.  }.} {1 a a 9
31e0: 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 7d 0a 64  .9 b B {} C c}.d
31f0: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32  o_test selectA-2
3200: 2e 36 30 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .60 {.  execsql 
3210: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62  {.    SELECT a,b
3220: 2c 63 20 46 52 4f 4d 20 74 31 20 49 4e 54 45 52  ,c FROM t1 INTER
3230: 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c  SECT SELECT a,b,
3240: 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  c FROM t1 WHERE 
3250: 62 3e 3d 27 64 27 0a 20 20 20 20 4f 52 44 45 52  b>='d'.    ORDER
3260: 20 42 59 20 63 0a 20 20 7d 0a 7d 20 7b 68 65 6c   BY c.  }.} {hel
3270: 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65 7d 0a  lo d D abc e e}.
3280: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
3290: 32 2e 36 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  2.61 {.  execsql
32a0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
32b0: 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52  b,c FROM t1 WHER
32c0: 45 20 62 3e 3d 27 64 27 20 49 4e 54 45 52 53 45  E b>='d' INTERSE
32d0: 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  CT SELECT a,b,c 
32e0: 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45  FROM t1.    ORDE
32f0: 52 20 42 59 20 63 20 43 4f 4c 4c 41 54 45 20 42  R BY c COLLATE B
3300: 49 4e 41 52 59 2c 20 62 20 44 45 53 43 2c 20 63  INARY, b DESC, c
3310: 2c 20 61 2c 20 62 2c 20 63 2c 20 61 2c 20 62 2c  , a, b, c, a, b,
3320: 20 63 0a 20 20 7d 0a 7d 20 7b 68 65 6c 6c 6f 20   c.  }.} {hello 
3330: 64 20 44 20 61 62 63 20 65 20 65 7d 0a 64 6f 5f  d D abc e e}.do_
3340: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 32 2e 36  test selectA-2.6
3350: 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  2 {.  execsql {.
3360: 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63      SELECT a,b,c
3370: 20 46 52 4f 4d 20 74 31 20 45 58 43 45 50 54 20   FROM t1 EXCEPT 
3380: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
3390: 4d 20 74 31 20 57 48 45 52 45 20 62 3c 27 64 27  M t1 WHERE b<'d'
33a0: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63 20  .    ORDER BY c 
33b0: 44 45 53 43 2c 20 61 0a 20 20 7d 0a 7d 20 7b 61  DESC, a.  }.} {a
33c0: 62 63 20 65 20 65 20 68 65 6c 6c 6f 20 64 20 44  bc e e hello d D
33d0: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
33e0: 41 2d 32 2e 36 33 20 7b 0a 20 20 65 78 65 63 73  A-2.63 {.  execs
33f0: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
3400: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 49 4e  a,b,c FROM t1 IN
3410: 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20 61  TERSECT SELECT a
3420: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45  ,b,c FROM t1 WHE
3430: 52 45 20 62 3c 27 64 27 0a 20 20 20 20 4f 52 44  RE b<'d'.    ORD
3440: 45 52 20 42 59 20 63 20 43 4f 4c 4c 41 54 45 20  ER BY c COLLATE 
3450: 4e 4f 43 41 53 45 0a 20 20 7d 0a 7d 20 7b 31 20  NOCASE.  }.} {1 
3460: 61 20 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43  a a 9.9 b B {} C
3470: 20 63 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   c}.do_test sele
3480: 63 74 41 2d 32 2e 36 34 20 7b 0a 20 20 65 78 65  ctA-2.64 {.  exe
3490: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
34a0: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
34b0: 57 48 45 52 45 20 62 3c 27 64 27 20 49 4e 54 45  WHERE b<'d' INTE
34c0: 52 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62  RSECT SELECT a,b
34d0: 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f  ,c FROM t1.    O
34e0: 52 44 45 52 20 42 59 20 63 0a 20 20 7d 0a 7d 20  RDER BY c.  }.} 
34f0: 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b  {1 a a 9.9 b B {
3500: 7d 20 43 20 63 7d 0a 0a 64 6f 5f 74 65 73 74 20  } C c}..do_test 
3510: 73 65 6c 65 63 74 41 2d 33 2e 30 20 7b 0a 20 20  selectA-3.0 {.  
3520: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52  execsql {.    CR
3530: 45 41 54 45 20 55 4e 49 51 55 45 20 49 4e 44 45  EATE UNIQUE INDE
3540: 58 20 74 31 61 20 4f 4e 20 74 31 28 61 29 3b 0a  X t1a ON t1(a);.
3550: 20 20 20 20 43 52 45 41 54 45 20 55 4e 49 51 55      CREATE UNIQU
3560: 45 20 49 4e 44 45 58 20 74 31 62 20 4f 4e 20 74  E INDEX t1b ON t
3570: 31 28 62 29 3b 0a 20 20 20 20 43 52 45 41 54 45  1(b);.    CREATE
3580: 20 55 4e 49 51 55 45 20 49 4e 44 45 58 20 74 31   UNIQUE INDEX t1
3590: 63 20 4f 4e 20 74 31 28 63 29 3b 0a 20 20 20 20  c ON t1(c);.    
35a0: 43 52 45 41 54 45 20 55 4e 49 51 55 45 20 49 4e  CREATE UNIQUE IN
35b0: 44 45 58 20 74 32 78 20 4f 4e 20 74 32 28 78 29  DEX t2x ON t2(x)
35c0: 3b 0a 20 20 20 20 43 52 45 41 54 45 20 55 4e 49  ;.    CREATE UNI
35d0: 51 55 45 20 49 4e 44 45 58 20 74 32 79 20 4f 4e  QUE INDEX t2y ON
35e0: 20 74 32 28 79 29 3b 0a 20 20 20 20 43 52 45 41   t2(y);.    CREA
35f0: 54 45 20 55 4e 49 51 55 45 20 49 4e 44 45 58 20  TE UNIQUE INDEX 
3600: 74 32 7a 20 4f 4e 20 74 32 28 7a 29 3b 0a 20 20  t2z ON t2(z);.  
3610: 20 20 53 45 4c 45 43 54 20 6e 61 6d 65 20 46 52    SELECT name FR
3620: 4f 4d 20 73 71 6c 69 74 65 5f 6d 61 73 74 65 72  OM sqlite_master
3630: 20 57 48 45 52 45 20 74 79 70 65 3d 27 69 6e 64   WHERE type='ind
3640: 65 78 27 0a 20 20 7d 0a 7d 20 7b 74 31 61 20 74  ex'.  }.} {t1a t
3650: 31 62 20 74 31 63 20 74 32 78 20 74 32 79 20 74  1b t1c t2x t2y t
3660: 32 7a 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65  2z}.do_test sele
3670: 63 74 41 2d 33 2e 31 20 7b 0a 20 20 65 78 65 63  ctA-3.1 {.  exec
3680: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
3690: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 55   a,b,c FROM t1 U
36a0: 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20  NION ALL SELECT 
36b0: 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20  x,y,z FROM t2.  
36c0: 20 20 4f 52 44 45 52 20 42 59 20 61 2c 62 2c 63    ORDER BY a,b,c
36d0: 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b  .  }.} {{} C c {
36e0: 7d 20 55 20 75 20 2d 32 33 20 59 20 79 20 31 20  } U u -23 Y y 1 
36f0: 61 20 61 20 39 2e 39 20 62 20 42 20 35 32 30 30  a a 9.9 b B 5200
3700: 30 30 30 2e 30 20 58 20 78 20 68 65 6c 6c 6f 20  000.0 X x hello 
3710: 64 20 44 20 6d 61 64 20 5a 20 7a 20 61 62 63 20  d D mad Z z abc 
3720: 65 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f  e e hare m M}.do
3730: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e  _test selectA-3.
3740: 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  2 {.  execsql {.
3750: 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63      SELECT a,b,c
3760: 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 41   FROM t1 UNION A
3770: 4c 4c 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20  LL SELECT x,y,z 
3780: 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45  FROM t2.    ORDE
3790: 52 20 42 59 20 61 20 44 45 53 43 2c 62 2c 63 0a  R BY a DESC,b,c.
37a0: 20 20 7d 0a 7d 20 7b 68 61 72 65 20 6d 20 4d 20    }.} {hare m M 
37b0: 61 62 63 20 65 20 65 20 6d 61 64 20 5a 20 7a 20  abc e e mad Z z 
37c0: 68 65 6c 6c 6f 20 64 20 44 20 35 32 30 30 30 30  hello d D 520000
37d0: 30 2e 30 20 58 20 78 20 39 2e 39 20 62 20 42 20  0.0 X x 9.9 b B 
37e0: 31 20 61 20 61 20 2d 32 33 20 59 20 79 20 7b 7d  1 a a -23 Y y {}
37f0: 20 43 20 63 20 7b 7d 20 55 20 75 7d 0a 64 6f 5f   C c {} U u}.do_
3800: 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 33  test selectA-3.3
3810: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
3820: 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20     SELECT a,b,c 
3830: 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 41 4c  FROM t1 UNION AL
3840: 4c 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46  L SELECT x,y,z F
3850: 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52  ROM t2.    ORDER
3860: 20 42 59 20 61 2c 63 2c 62 0a 20 20 7d 0a 7d 20   BY a,c,b.  }.} 
3870: 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 20 2d  {{} C c {} U u -
3880: 32 33 20 59 20 79 20 31 20 61 20 61 20 39 2e 39  23 Y y 1 a a 9.9
3890: 20 62 20 42 20 35 32 30 30 30 30 30 2e 30 20 58   b B 5200000.0 X
38a0: 20 78 20 68 65 6c 6c 6f 20 64 20 44 20 6d 61 64   x hello d D mad
38b0: 20 5a 20 7a 20 61 62 63 20 65 20 65 20 68 61 72   Z z abc e e har
38c0: 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73  e m M}.do_test s
38d0: 65 6c 65 63 74 41 2d 33 2e 34 20 7b 0a 20 20 65  electA-3.4 {.  e
38e0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
38f0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
3900: 31 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45  1 UNION ALL SELE
3910: 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32  CT x,y,z FROM t2
3920: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 62 2c  .    ORDER BY b,
3930: 61 2c 63 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20  a,c.  }.} {{} C 
3940: 63 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30 30  c {} U u 5200000
3950: 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79 20 6d  .0 X x -23 Y y m
3960: 61 64 20 5a 20 7a 20 31 20 61 20 61 20 39 2e 39  ad Z z 1 a a 9.9
3970: 20 62 20 42 20 68 65 6c 6c 6f 20 64 20 44 20 61   b B hello d D a
3980: 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d 7d  bc e e hare m M}
3990: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
39a0: 2d 33 2e 35 20 7b 0a 20 20 65 78 65 63 73 71 6c  -3.5 {.  execsql
39b0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
39c0: 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f  b,c FROM t1 UNIO
39d0: 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 78 2c 79  N ALL SELECT x,y
39e0: 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f  ,z FROM t2.    O
39f0: 52 44 45 52 20 42 59 20 62 20 43 4f 4c 4c 41 54  RDER BY b COLLAT
3a00: 45 20 4e 4f 43 41 53 45 2c 61 2c 63 0a 20 20 7d  E NOCASE,a,c.  }
3a10: 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20  .} {1 a a 9.9 b 
3a20: 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64  B {} C c hello d
3a30: 20 44 20 61 62 63 20 65 20 65 20 68 61 72 65 20   D abc e e hare 
3a40: 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32 30 30 30  m M {} U u 52000
3a50: 30 30 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79  00.0 X x -23 Y y
3a60: 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73   mad Z z}.do_tes
3a70: 74 20 73 65 6c 65 63 74 41 2d 33 2e 36 20 7b 0a  t selectA-3.6 {.
3a80: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
3a90: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
3aa0: 4d 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 20 53  M t1 UNION ALL S
3ab0: 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d  ELECT x,y,z FROM
3ac0: 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59   t2.    ORDER BY
3ad0: 20 62 20 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53   b COLLATE NOCAS
3ae0: 45 20 44 45 53 43 2c 61 2c 63 0a 20 20 7d 0a 7d  E DESC,a,c.  }.}
3af0: 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59 20   {mad Z z -23 Y 
3b00: 79 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20  y 5200000.0 X x 
3b10: 7b 7d 20 55 20 75 20 68 61 72 65 20 6d 20 4d 20  {} U u hare m M 
3b20: 61 62 63 20 65 20 65 20 68 65 6c 6c 6f 20 64 20  abc e e hello d 
3b30: 44 20 7b 7d 20 43 20 63 20 39 2e 39 20 62 20 42  D {} C c 9.9 b B
3b40: 20 31 20 61 20 61 7d 0a 64 6f 5f 74 65 73 74 20   1 a a}.do_test 
3b50: 73 65 6c 65 63 74 41 2d 33 2e 37 20 7b 0a 20 20  selectA-3.7 {.  
3b60: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
3b70: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
3b80: 74 31 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c  t1 UNION ALL SEL
3b90: 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74  ECT x,y,z FROM t
3ba0: 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63  2.    ORDER BY c
3bb0: 2c 62 2c 61 0a 20 20 7d 0a 7d 20 7b 31 20 61 20  ,b,a.  }.} {1 a 
3bc0: 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63  a 9.9 b B {} C c
3bd0: 20 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65   hello d D abc e
3be0: 20 65 20 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55   e hare m M {} U
3bf0: 20 75 20 35 32 30 30 30 30 30 2e 30 20 58 20 78   u 5200000.0 X x
3c00: 20 2d 32 33 20 59 20 79 20 6d 61 64 20 5a 20 7a   -23 Y y mad Z z
3c10: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
3c20: 41 2d 33 2e 38 20 7b 0a 20 20 65 78 65 63 73 71  A-3.8 {.  execsq
3c30: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61  l {.    SELECT a
3c40: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e 49  ,b,c FROM t1 UNI
3c50: 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 78 2c  ON ALL SELECT x,
3c60: 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20  y,z FROM t2.    
3c70: 4f 52 44 45 52 20 42 59 20 63 2c 61 2c 62 0a 20  ORDER BY c,a,b. 
3c80: 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39 20   }.} {1 a a 9.9 
3c90: 62 20 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c 6f  b B {} C c hello
3ca0: 20 64 20 44 20 61 62 63 20 65 20 65 20 68 61 72   d D abc e e har
3cb0: 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32 30  e m M {} U u 520
3cc0: 30 30 30 30 2e 30 20 58 20 78 20 2d 32 33 20 59  0000.0 X x -23 Y
3cd0: 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74   y mad Z z}.do_t
3ce0: 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 39 20  est selectA-3.9 
3cf0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
3d00: 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46    SELECT a,b,c F
3d10: 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c  ROM t1 UNION ALL
3d20: 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52   SELECT x,y,z FR
3d30: 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20  OM t2.    ORDER 
3d40: 42 59 20 63 20 44 45 53 43 2c 61 2c 62 0a 20 20  BY c DESC,a,b.  
3d50: 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33  }.} {mad Z z -23
3d60: 20 59 20 79 20 35 32 30 30 30 30 30 2e 30 20 58   Y y 5200000.0 X
3d70: 20 78 20 7b 7d 20 55 20 75 20 68 61 72 65 20 6d   x {} U u hare m
3d80: 20 4d 20 61 62 63 20 65 20 65 20 68 65 6c 6c 6f   M abc e e hello
3d90: 20 64 20 44 20 7b 7d 20 43 20 63 20 39 2e 39 20   d D {} C c 9.9 
3da0: 62 20 42 20 31 20 61 20 61 7d 0a 64 6f 5f 74 65  b B 1 a a}.do_te
3db0: 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 31 30 20  st selectA-3.10 
3dc0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
3dd0: 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46    SELECT a,b,c F
3de0: 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 41 4c 4c  ROM t1 UNION ALL
3df0: 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52   SELECT x,y,z FR
3e00: 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52 20  OM t2.    ORDER 
3e10: 42 59 20 63 20 43 4f 4c 4c 41 54 45 20 42 49 4e  BY c COLLATE BIN
3e20: 41 52 59 20 44 45 53 43 2c 61 2c 62 0a 20 20 7d  ARY DESC,a,b.  }
3e30: 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20  .} {mad Z z -23 
3e40: 59 20 79 20 35 32 30 30 30 30 30 2e 30 20 58 20  Y y 5200000.0 X 
3e50: 78 20 7b 7d 20 55 20 75 20 61 62 63 20 65 20 65  x {} U u abc e e
3e60: 20 7b 7d 20 43 20 63 20 31 20 61 20 61 20 68 61   {} C c 1 a a ha
3e70: 72 65 20 6d 20 4d 20 68 65 6c 6c 6f 20 64 20 44  re m M hello d D
3e80: 20 39 2e 39 20 62 20 42 7d 0a 64 6f 5f 74 65 73   9.9 b B}.do_tes
3e90: 74 20 73 65 6c 65 63 74 41 2d 33 2e 31 31 20 7b  t selectA-3.11 {
3ea0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
3eb0: 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52   SELECT x,y,z FR
3ec0: 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 41 4c 4c 20  OM t2 UNION ALL 
3ed0: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
3ee0: 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42  M t1.    ORDER B
3ef0: 59 20 61 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 7b  Y a,b,c.  }.} {{
3f00: 7d 20 43 20 63 20 7b 7d 20 55 20 75 20 2d 32 33  } C c {} U u -23
3f10: 20 59 20 79 20 31 20 61 20 61 20 39 2e 39 20 62   Y y 1 a a 9.9 b
3f20: 20 42 20 35 32 30 30 30 30 30 2e 30 20 58 20 78   B 5200000.0 X x
3f30: 20 68 65 6c 6c 6f 20 64 20 44 20 6d 61 64 20 5a   hello d D mad Z
3f40: 20 7a 20 61 62 63 20 65 20 65 20 68 61 72 65 20   z abc e e hare 
3f50: 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  m M}.do_test sel
3f60: 65 63 74 41 2d 33 2e 31 32 20 7b 0a 20 20 65 78  ectA-3.12 {.  ex
3f70: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
3f80: 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32  CT x,y,z FROM t2
3f90: 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43   UNION ALL SELEC
3fa0: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a  T a,b,c FROM t1.
3fb0: 20 20 20 20 4f 52 44 45 52 20 42 59 20 61 20 44      ORDER BY a D
3fc0: 45 53 43 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 68  ESC,b,c.  }.} {h
3fd0: 61 72 65 20 6d 20 4d 20 61 62 63 20 65 20 65 20  are m M abc e e 
3fe0: 6d 61 64 20 5a 20 7a 20 68 65 6c 6c 6f 20 64 20  mad Z z hello d 
3ff0: 44 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20  D 5200000.0 X x 
4000: 39 2e 39 20 62 20 42 20 31 20 61 20 61 20 2d 32  9.9 b B 1 a a -2
4010: 33 20 59 20 79 20 7b 7d 20 43 20 63 20 7b 7d 20  3 Y y {} C c {} 
4020: 55 20 75 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  U u}.do_test sel
4030: 65 63 74 41 2d 33 2e 31 33 20 7b 0a 20 20 65 78  ectA-3.13 {.  ex
4040: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
4050: 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32  CT x,y,z FROM t2
4060: 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43   UNION ALL SELEC
4070: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a  T a,b,c FROM t1.
4080: 20 20 20 20 4f 52 44 45 52 20 42 59 20 61 2c 63      ORDER BY a,c
4090: 2c 62 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63  ,b.  }.} {{} C c
40a0: 20 7b 7d 20 55 20 75 20 2d 32 33 20 59 20 79 20   {} U u -23 Y y 
40b0: 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 35 32  1 a a 9.9 b B 52
40c0: 30 30 30 30 30 2e 30 20 58 20 78 20 68 65 6c 6c  00000.0 X x hell
40d0: 6f 20 64 20 44 20 6d 61 64 20 5a 20 7a 20 61 62  o d D mad Z z ab
40e0: 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a  c e e hare m M}.
40f0: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
4100: 33 2e 31 34 20 7b 0a 20 20 65 78 65 63 73 71 6c  3.14 {.  execsql
4110: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c   {.    SELECT x,
4120: 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f  y,z FROM t2 UNIO
4130: 4e 20 41 4c 4c 20 53 45 4c 45 43 54 20 61 2c 62  N ALL SELECT a,b
4140: 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f  ,c FROM t1.    O
4150: 52 44 45 52 20 42 59 20 62 2c 61 2c 63 0a 20 20  RDER BY b,a,c.  
4160: 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55  }.} {{} C c {} U
4170: 20 75 20 35 32 30 30 30 30 30 2e 30 20 58 20 78   u 5200000.0 X x
4180: 20 2d 32 33 20 59 20 79 20 6d 61 64 20 5a 20 7a   -23 Y y mad Z z
4190: 20 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 68   1 a a 9.9 b B h
41a0: 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65  ello d D abc e e
41b0: 20 68 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65   hare m M}.do_te
41c0: 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 31 35 20  st selectA-3.15 
41d0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
41e0: 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46    SELECT x,y,z F
41f0: 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 41 4c 4c  ROM t2 UNION ALL
4200: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
4210: 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20  OM t1.    ORDER 
4220: 42 59 20 62 20 43 4f 4c 4c 41 54 45 20 4e 4f 43  BY b COLLATE NOC
4230: 41 53 45 2c 61 2c 63 0a 20 20 7d 0a 7d 20 7b 31  ASE,a,c.  }.} {1
4240: 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b 7d 20   a a 9.9 b B {} 
4250: 43 20 63 20 68 65 6c 6c 6f 20 64 20 44 20 61 62  C c hello d D ab
4260: 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d 20 7b  c e e hare m M {
4270: 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e 30 20  } U u 5200000.0 
4280: 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61 64 20  X x -23 Y y mad 
4290: 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  Z z}.do_test sel
42a0: 65 63 74 41 2d 33 2e 31 36 20 7b 0a 20 20 65 78  ectA-3.16 {.  ex
42b0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
42c0: 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32  CT x,y,z FROM t2
42d0: 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43   UNION ALL SELEC
42e0: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a  T a,b,c FROM t1.
42f0: 20 20 20 20 4f 52 44 45 52 20 42 59 20 62 20 43      ORDER BY b C
4300: 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45 20 44 45  OLLATE NOCASE DE
4310: 53 43 2c 61 2c 63 0a 20 20 7d 0a 7d 20 7b 6d 61  SC,a,c.  }.} {ma
4320: 64 20 5a 20 7a 20 2d 32 33 20 59 20 79 20 35 32  d Z z -23 Y y 52
4330: 30 30 30 30 30 2e 30 20 58 20 78 20 7b 7d 20 55  00000.0 X x {} U
4340: 20 75 20 68 61 72 65 20 6d 20 4d 20 61 62 63 20   u hare m M abc 
4350: 65 20 65 20 68 65 6c 6c 6f 20 64 20 44 20 7b 7d  e e hello d D {}
4360: 20 43 20 63 20 39 2e 39 20 62 20 42 20 31 20 61   C c 9.9 b B 1 a
4370: 20 61 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   a}.do_test sele
4380: 63 74 41 2d 33 2e 31 37 20 7b 0a 20 20 65 78 65  ctA-3.17 {.  exe
4390: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
43a0: 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20  T x,y,z FROM t2 
43b0: 55 4e 49 4f 4e 20 41 4c 4c 20 53 45 4c 45 43 54  UNION ALL SELECT
43c0: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20   a,b,c FROM t1. 
43d0: 20 20 20 4f 52 44 45 52 20 42 59 20 63 2c 62 2c     ORDER BY c,b,
43e0: 61 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20 39  a.  }.} {1 a a 9
43f0: 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 20 68 65  .9 b B {} C c he
4400: 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65 20  llo d D abc e e 
4410: 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75 20  hare m M {} U u 
4420: 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d 32  5200000.0 X x -2
4430: 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a 64  3 Y y mad Z z}.d
4440: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33  o_test selectA-3
4450: 2e 31 38 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .18 {.  execsql 
4460: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c 79  {.    SELECT x,y
4470: 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e  ,z FROM t2 UNION
4480: 20 41 4c 4c 20 53 45 4c 45 43 54 20 61 2c 62 2c   ALL SELECT a,b,
4490: 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52  c FROM t1.    OR
44a0: 44 45 52 20 42 59 20 63 2c 61 2c 62 0a 20 20 7d  DER BY c,a,b.  }
44b0: 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20  .} {1 a a 9.9 b 
44c0: 42 20 7b 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64  B {} C c hello d
44d0: 20 44 20 61 62 63 20 65 20 65 20 68 61 72 65 20   D abc e e hare 
44e0: 6d 20 4d 20 7b 7d 20 55 20 75 20 35 32 30 30 30  m M {} U u 52000
44f0: 30 30 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79  00.0 X x -23 Y y
4500: 20 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73   mad Z z}.do_tes
4510: 74 20 73 65 6c 65 63 74 41 2d 33 2e 31 39 20 7b  t selectA-3.19 {
4520: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
4530: 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52   SELECT x,y,z FR
4540: 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 41 4c 4c 20  OM t2 UNION ALL 
4550: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
4560: 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42  M t1.    ORDER B
4570: 59 20 63 20 44 45 53 43 2c 61 2c 62 0a 20 20 7d  Y c DESC,a,b.  }
4580: 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20  .} {mad Z z -23 
4590: 59 20 79 20 35 32 30 30 30 30 30 2e 30 20 58 20  Y y 5200000.0 X 
45a0: 78 20 7b 7d 20 55 20 75 20 68 61 72 65 20 6d 20  x {} U u hare m 
45b0: 4d 20 61 62 63 20 65 20 65 20 68 65 6c 6c 6f 20  M abc e e hello 
45c0: 64 20 44 20 7b 7d 20 43 20 63 20 39 2e 39 20 62  d D {} C c 9.9 b
45d0: 20 42 20 31 20 61 20 61 7d 0a 64 6f 5f 74 65 73   B 1 a a}.do_tes
45e0: 74 20 73 65 6c 65 63 74 41 2d 33 2e 32 30 20 7b  t selectA-3.20 {
45f0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
4600: 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52   SELECT x,y,z FR
4610: 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 41 4c 4c 20  OM t2 UNION ALL 
4620: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
4630: 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42  M t1.    ORDER B
4640: 59 20 63 20 43 4f 4c 4c 41 54 45 20 42 49 4e 41  Y c COLLATE BINA
4650: 52 59 20 44 45 53 43 2c 61 2c 62 0a 20 20 7d 0a  RY DESC,a,b.  }.
4660: 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59  } {mad Z z -23 Y
4670: 20 79 20 35 32 30 30 30 30 30 2e 30 20 58 20 78   y 5200000.0 X x
4680: 20 7b 7d 20 55 20 75 20 61 62 63 20 65 20 65 20   {} U u abc e e 
4690: 7b 7d 20 43 20 63 20 31 20 61 20 61 20 68 61 72  {} C c 1 a a har
46a0: 65 20 6d 20 4d 20 68 65 6c 6c 6f 20 64 20 44 20  e m M hello d D 
46b0: 39 2e 39 20 62 20 42 7d 0a 64 6f 5f 74 65 73 74  9.9 b B}.do_test
46c0: 20 73 65 6c 65 63 74 41 2d 33 2e 32 31 20 7b 0a   selectA-3.21 {.
46d0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
46e0: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
46f0: 4d 20 74 31 20 55 4e 49 4f 4e 20 53 45 4c 45 43  M t1 UNION SELEC
4700: 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a  T x,y,z FROM t2.
4710: 20 20 20 20 4f 52 44 45 52 20 42 59 20 61 2c 62      ORDER BY a,b
4720: 2c 63 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63  ,c.  }.} {{} C c
4730: 20 7b 7d 20 55 20 75 20 2d 32 33 20 59 20 79 20   {} U u -23 Y y 
4740: 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 35 32  1 a a 9.9 b B 52
4750: 30 30 30 30 30 2e 30 20 58 20 78 20 68 65 6c 6c  00000.0 X x hell
4760: 6f 20 64 20 44 20 6d 61 64 20 5a 20 7a 20 61 62  o d D mad Z z ab
4770: 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d 7d 0a  c e e hare m M}.
4780: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
4790: 33 2e 32 32 20 7b 0a 20 20 65 78 65 63 73 71 6c  3.22 {.  execsql
47a0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
47b0: 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f  b,c FROM t1 UNIO
47c0: 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46  N SELECT x,y,z F
47d0: 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52  ROM t2.    ORDER
47e0: 20 42 59 20 61 20 44 45 53 43 2c 62 2c 63 0a 20   BY a DESC,b,c. 
47f0: 20 7d 0a 7d 20 7b 68 61 72 65 20 6d 20 4d 20 61   }.} {hare m M a
4800: 62 63 20 65 20 65 20 6d 61 64 20 5a 20 7a 20 68  bc e e mad Z z h
4810: 65 6c 6c 6f 20 64 20 44 20 35 32 30 30 30 30 30  ello d D 5200000
4820: 2e 30 20 58 20 78 20 39 2e 39 20 62 20 42 20 31  .0 X x 9.9 b B 1
4830: 20 61 20 61 20 2d 32 33 20 59 20 79 20 7b 7d 20   a a -23 Y y {} 
4840: 43 20 63 20 7b 7d 20 55 20 75 7d 0a 64 6f 5f 74  C c {} U u}.do_t
4850: 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 32 33  est selectA-3.23
4860: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
4870: 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20     SELECT a,b,c 
4880: 46 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 53 45  FROM t1 UNION SE
4890: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
48a0: 74 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  t2.    ORDER BY 
48b0: 61 2c 63 2c 62 0a 20 20 7d 0a 7d 20 7b 7b 7d 20  a,c,b.  }.} {{} 
48c0: 43 20 63 20 7b 7d 20 55 20 75 20 2d 32 33 20 59  C c {} U u -23 Y
48d0: 20 79 20 31 20 61 20 61 20 39 2e 39 20 62 20 42   y 1 a a 9.9 b B
48e0: 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 68   5200000.0 X x h
48f0: 65 6c 6c 6f 20 64 20 44 20 6d 61 64 20 5a 20 7a  ello d D mad Z z
4900: 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d 20   abc e e hare m 
4910: 4d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  M}.do_test selec
4920: 74 41 2d 33 2e 32 34 20 7b 0a 20 20 65 78 65 63  tA-3.24 {.  exec
4930: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
4940: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 55   a,b,c FROM t1 U
4950: 4e 49 4f 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c  NION SELECT x,y,
4960: 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52  z FROM t2.    OR
4970: 44 45 52 20 42 59 20 62 2c 61 2c 63 0a 20 20 7d  DER BY b,a,c.  }
4980: 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20  .} {{} C c {} U 
4990: 75 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20  u 5200000.0 X x 
49a0: 2d 32 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 20  -23 Y y mad Z z 
49b0: 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 68 65  1 a a 9.9 b B he
49c0: 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65 20  llo d D abc e e 
49d0: 68 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73  hare m M}.do_tes
49e0: 74 20 73 65 6c 65 63 74 41 2d 33 2e 32 35 20 7b  t selectA-3.25 {
49f0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
4a00: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
4a10: 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 53 45 4c 45  OM t1 UNION SELE
4a20: 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32  CT x,y,z FROM t2
4a30: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 62 20  .    ORDER BY b 
4a40: 43 4f 4c 4c 41 54 45 20 4e 4f 43 41 53 45 2c 61  COLLATE NOCASE,a
4a50: 2c 63 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20  ,c.  }.} {1 a a 
4a60: 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 20 68  9.9 b B {} C c h
4a70: 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65  ello d D abc e e
4a80: 20 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75   hare m M {} U u
4a90: 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d   5200000.0 X x -
4aa0: 32 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a  23 Y y mad Z z}.
4ab0: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
4ac0: 33 2e 32 36 20 7b 0a 20 20 65 78 65 63 73 71 6c  3.26 {.  execsql
4ad0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
4ae0: 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e 49 4f  b,c FROM t1 UNIO
4af0: 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46  N SELECT x,y,z F
4b00: 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44 45 52  ROM t2.    ORDER
4b10: 20 42 59 20 62 20 43 4f 4c 4c 41 54 45 20 4e 4f   BY b COLLATE NO
4b20: 43 41 53 45 20 44 45 53 43 2c 61 2c 63 0a 20 20  CASE DESC,a,c.  
4b30: 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32 33  }.} {mad Z z -23
4b40: 20 59 20 79 20 35 32 30 30 30 30 30 2e 30 20 58   Y y 5200000.0 X
4b50: 20 78 20 7b 7d 20 55 20 75 20 68 61 72 65 20 6d   x {} U u hare m
4b60: 20 4d 20 61 62 63 20 65 20 65 20 68 65 6c 6c 6f   M abc e e hello
4b70: 20 64 20 44 20 7b 7d 20 43 20 63 20 39 2e 39 20   d D {} C c 9.9 
4b80: 62 20 42 20 31 20 61 20 61 7d 0a 64 6f 5f 74 65  b B 1 a a}.do_te
4b90: 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 32 37 20  st selectA-3.27 
4ba0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
4bb0: 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46    SELECT a,b,c F
4bc0: 52 4f 4d 20 74 31 20 55 4e 49 4f 4e 20 53 45 4c  ROM t1 UNION SEL
4bd0: 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74  ECT x,y,z FROM t
4be0: 32 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 63  2.    ORDER BY c
4bf0: 2c 62 2c 61 0a 20 20 7d 0a 7d 20 7b 31 20 61 20  ,b,a.  }.} {1 a 
4c00: 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63  a 9.9 b B {} C c
4c10: 20 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65   hello d D abc e
4c20: 20 65 20 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55   e hare m M {} U
4c30: 20 75 20 35 32 30 30 30 30 30 2e 30 20 58 20 78   u 5200000.0 X x
4c40: 20 2d 32 33 20 59 20 79 20 6d 61 64 20 5a 20 7a   -23 Y y mad Z z
4c50: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
4c60: 41 2d 33 2e 32 38 20 7b 0a 20 20 65 78 65 63 73  A-3.28 {.  execs
4c70: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
4c80: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 55 4e  a,b,c FROM t1 UN
4c90: 49 4f 4e 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a  ION SELECT x,y,z
4ca0: 20 46 52 4f 4d 20 74 32 0a 20 20 20 20 4f 52 44   FROM t2.    ORD
4cb0: 45 52 20 42 59 20 63 2c 61 2c 62 0a 20 20 7d 0a  ER BY c,a,b.  }.
4cc0: 7d 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42  } {1 a a 9.9 b B
4cd0: 20 7b 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64 20   {} C c hello d 
4ce0: 44 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d  D abc e e hare m
4cf0: 20 4d 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30   M {} U u 520000
4d00: 30 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79 20  0.0 X x -23 Y y 
4d10: 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74  mad Z z}.do_test
4d20: 20 73 65 6c 65 63 74 41 2d 33 2e 32 39 20 7b 0a   selectA-3.29 {.
4d30: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
4d40: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
4d50: 4d 20 74 31 20 55 4e 49 4f 4e 20 53 45 4c 45 43  M t1 UNION SELEC
4d60: 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 0a  T x,y,z FROM t2.
4d70: 20 20 20 20 4f 52 44 45 52 20 42 59 20 63 20 44      ORDER BY c D
4d80: 45 53 43 2c 61 2c 62 0a 20 20 7d 0a 7d 20 7b 6d  ESC,a,b.  }.} {m
4d90: 61 64 20 5a 20 7a 20 2d 32 33 20 59 20 79 20 35  ad Z z -23 Y y 5
4da0: 32 30 30 30 30 30 2e 30 20 58 20 78 20 7b 7d 20  200000.0 X x {} 
4db0: 55 20 75 20 68 61 72 65 20 6d 20 4d 20 61 62 63  U u hare m M abc
4dc0: 20 65 20 65 20 68 65 6c 6c 6f 20 64 20 44 20 7b   e e hello d D {
4dd0: 7d 20 43 20 63 20 39 2e 39 20 62 20 42 20 31 20  } C c 9.9 b B 1 
4de0: 61 20 61 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  a a}.do_test sel
4df0: 65 63 74 41 2d 33 2e 33 30 20 7b 0a 20 20 65 78  ectA-3.30 {.  ex
4e00: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
4e10: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
4e20: 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 78 2c   UNION SELECT x,
4e30: 79 2c 7a 20 46 52 4f 4d 20 74 32 0a 20 20 20 20  y,z FROM t2.    
4e40: 4f 52 44 45 52 20 42 59 20 63 20 43 4f 4c 4c 41  ORDER BY c COLLA
4e50: 54 45 20 42 49 4e 41 52 59 20 44 45 53 43 2c 61  TE BINARY DESC,a
4e60: 2c 62 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20  ,b.  }.} {mad Z 
4e70: 7a 20 2d 32 33 20 59 20 79 20 35 32 30 30 30 30  z -23 Y y 520000
4e80: 30 2e 30 20 58 20 78 20 7b 7d 20 55 20 75 20 61  0.0 X x {} U u a
4e90: 62 63 20 65 20 65 20 7b 7d 20 43 20 63 20 31 20  bc e e {} C c 1 
4ea0: 61 20 61 20 68 61 72 65 20 6d 20 4d 20 68 65 6c  a a hare m M hel
4eb0: 6c 6f 20 64 20 44 20 39 2e 39 20 62 20 42 7d 0a  lo d D 9.9 b B}.
4ec0: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
4ed0: 33 2e 33 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  3.31 {.  execsql
4ee0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c   {.    SELECT x,
4ef0: 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f  y,z FROM t2 UNIO
4f00: 4e 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46  N SELECT a,b,c F
4f10: 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52  ROM t1.    ORDER
4f20: 20 42 59 20 61 2c 62 2c 63 0a 20 20 7d 0a 7d 20   BY a,b,c.  }.} 
4f30: 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20 75 20 2d  {{} C c {} U u -
4f40: 32 33 20 59 20 79 20 31 20 61 20 61 20 39 2e 39  23 Y y 1 a a 9.9
4f50: 20 62 20 42 20 35 32 30 30 30 30 30 2e 30 20 58   b B 5200000.0 X
4f60: 20 78 20 68 65 6c 6c 6f 20 64 20 44 20 6d 61 64   x hello d D mad
4f70: 20 5a 20 7a 20 61 62 63 20 65 20 65 20 68 61 72   Z z abc e e har
4f80: 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73 74 20 73  e m M}.do_test s
4f90: 65 6c 65 63 74 41 2d 33 2e 33 32 20 7b 0a 20 20  electA-3.32 {.  
4fa0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
4fb0: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
4fc0: 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20  t2 UNION SELECT 
4fd0: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20  a,b,c FROM t1.  
4fe0: 20 20 4f 52 44 45 52 20 42 59 20 61 20 44 45 53    ORDER BY a DES
4ff0: 43 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 68 61 72  C,b,c.  }.} {har
5000: 65 20 6d 20 4d 20 61 62 63 20 65 20 65 20 6d 61  e m M abc e e ma
5010: 64 20 5a 20 7a 20 68 65 6c 6c 6f 20 64 20 44 20  d Z z hello d D 
5020: 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 39 2e  5200000.0 X x 9.
5030: 39 20 62 20 42 20 31 20 61 20 61 20 2d 32 33 20  9 b B 1 a a -23 
5040: 59 20 79 20 7b 7d 20 43 20 63 20 7b 7d 20 55 20  Y y {} C c {} U 
5050: 75 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  u}.do_test selec
5060: 74 41 2d 33 2e 33 33 20 7b 0a 20 20 65 78 65 63  tA-3.33 {.  exec
5070: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
5080: 20 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55   x,y,z FROM t2 U
5090: 4e 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62 2c  NION SELECT a,b,
50a0: 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52  c FROM t1.    OR
50b0: 44 45 52 20 42 59 20 61 2c 63 2c 62 0a 20 20 7d  DER BY a,c,b.  }
50c0: 0a 7d 20 7b 7b 7d 20 43 20 63 20 7b 7d 20 55 20  .} {{} C c {} U 
50d0: 75 20 2d 32 33 20 59 20 79 20 31 20 61 20 61 20  u -23 Y y 1 a a 
50e0: 39 2e 39 20 62 20 42 20 35 32 30 30 30 30 30 2e  9.9 b B 5200000.
50f0: 30 20 58 20 78 20 68 65 6c 6c 6f 20 64 20 44 20  0 X x hello d D 
5100: 6d 61 64 20 5a 20 7a 20 61 62 63 20 65 20 65 20  mad Z z abc e e 
5110: 68 61 72 65 20 6d 20 4d 7d 0a 64 6f 5f 74 65 73  hare m M}.do_tes
5120: 74 20 73 65 6c 65 63 74 41 2d 33 2e 33 34 20 7b  t selectA-3.34 {
5130: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
5140: 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52   SELECT x,y,z FR
5150: 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45  OM t2 UNION SELE
5160: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
5170: 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20 62 2c  .    ORDER BY b,
5180: 61 2c 63 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20  a,c.  }.} {{} C 
5190: 63 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30 30  c {} U u 5200000
51a0: 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79 20 6d  .0 X x -23 Y y m
51b0: 61 64 20 5a 20 7a 20 31 20 61 20 61 20 39 2e 39  ad Z z 1 a a 9.9
51c0: 20 62 20 42 20 68 65 6c 6c 6f 20 64 20 44 20 61   b B hello d D a
51d0: 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d 7d  bc e e hare m M}
51e0: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
51f0: 2d 33 2e 33 35 20 7b 0a 20 20 65 78 65 63 73 71  -3.35 {.  execsq
5200: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78  l {.    SELECT x
5210: 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49  ,y,z FROM t2 UNI
5220: 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  ON SELECT a,b,c 
5230: 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45  FROM t1.    ORDE
5240: 52 20 42 59 20 62 20 43 4f 4c 4c 41 54 45 20 4e  R BY b COLLATE N
5250: 4f 43 41 53 45 2c 61 2c 63 0a 20 20 7d 0a 7d 20  OCASE,a,c.  }.} 
5260: 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b  {1 a a 9.9 b B {
5270: 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64 20 44 20  } C c hello d D 
5280: 61 62 63 20 65 20 65 20 68 61 72 65 20 6d 20 4d  abc e e hare m M
5290: 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30 30 2e   {} U u 5200000.
52a0: 30 20 58 20 78 20 2d 32 33 20 59 20 79 20 6d 61  0 X x -23 Y y ma
52b0: 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74 20 73  d Z z}.do_test s
52c0: 65 6c 65 63 74 41 2d 33 2e 33 36 20 7b 0a 20 20  electA-3.36 {.  
52d0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
52e0: 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f 4d 20  LECT x,y,z FROM 
52f0: 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20  t2 UNION SELECT 
5300: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20  a,b,c FROM t1.  
5310: 20 20 4f 52 44 45 52 20 42 59 20 62 20 43 4f 4c    ORDER BY b COL
5320: 4c 41 54 45 20 4e 4f 43 41 53 45 20 44 45 53 43  LATE NOCASE DESC
5330: 2c 61 2c 63 0a 20 20 7d 0a 7d 20 7b 6d 61 64 20  ,a,c.  }.} {mad 
5340: 5a 20 7a 20 2d 32 33 20 59 20 79 20 35 32 30 30  Z z -23 Y y 5200
5350: 30 30 30 2e 30 20 58 20 78 20 7b 7d 20 55 20 75  000.0 X x {} U u
5360: 20 68 61 72 65 20 6d 20 4d 20 61 62 63 20 65 20   hare m M abc e 
5370: 65 20 68 65 6c 6c 6f 20 64 20 44 20 7b 7d 20 43  e hello d D {} C
5380: 20 63 20 39 2e 39 20 62 20 42 20 31 20 61 20 61   c 9.9 b B 1 a a
5390: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
53a0: 41 2d 33 2e 33 37 20 7b 0a 20 20 65 78 65 63 73  A-3.37 {.  execs
53b0: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
53c0: 78 2c 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e  x,y,z FROM t2 UN
53d0: 49 4f 4e 20 53 45 4c 45 43 54 20 61 2c 62 2c 63  ION SELECT a,b,c
53e0: 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44   FROM t1.    ORD
53f0: 45 52 20 42 59 20 63 2c 62 2c 61 0a 20 20 7d 0a  ER BY c,b,a.  }.
5400: 7d 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42  } {1 a a 9.9 b B
5410: 20 7b 7d 20 43 20 63 20 68 65 6c 6c 6f 20 64 20   {} C c hello d 
5420: 44 20 61 62 63 20 65 20 65 20 68 61 72 65 20 6d  D abc e e hare m
5430: 20 4d 20 7b 7d 20 55 20 75 20 35 32 30 30 30 30   M {} U u 520000
5440: 30 2e 30 20 58 20 78 20 2d 32 33 20 59 20 79 20  0.0 X x -23 Y y 
5450: 6d 61 64 20 5a 20 7a 7d 0a 64 6f 5f 74 65 73 74  mad Z z}.do_test
5460: 20 73 65 6c 65 63 74 41 2d 33 2e 33 38 20 7b 0a   selectA-3.38 {.
5470: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
5480: 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20 46 52 4f  SELECT x,y,z FRO
5490: 4d 20 74 32 20 55 4e 49 4f 4e 20 53 45 4c 45 43  M t2 UNION SELEC
54a0: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a  T a,b,c FROM t1.
54b0: 20 20 20 20 4f 52 44 45 52 20 42 59 20 63 2c 61      ORDER BY c,a
54c0: 2c 62 0a 20 20 7d 0a 7d 20 7b 31 20 61 20 61 20  ,b.  }.} {1 a a 
54d0: 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63 20 68  9.9 b B {} C c h
54e0: 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65  ello d D abc e e
54f0: 20 68 61 72 65 20 6d 20 4d 20 7b 7d 20 55 20 75   hare m M {} U u
5500: 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 2d   5200000.0 X x -
5510: 32 33 20 59 20 79 20 6d 61 64 20 5a 20 7a 7d 0a  23 Y y mad Z z}.
5520: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
5530: 33 2e 33 39 20 7b 0a 20 20 65 78 65 63 73 71 6c  3.39 {.  execsql
5540: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 78 2c   {.    SELECT x,
5550: 79 2c 7a 20 46 52 4f 4d 20 74 32 20 55 4e 49 4f  y,z FROM t2 UNIO
5560: 4e 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46  N SELECT a,b,c F
5570: 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52  ROM t1.    ORDER
5580: 20 42 59 20 63 20 44 45 53 43 2c 61 2c 62 0a 20   BY c DESC,a,b. 
5590: 20 7d 0a 7d 20 7b 6d 61 64 20 5a 20 7a 20 2d 32   }.} {mad Z z -2
55a0: 33 20 59 20 79 20 35 32 30 30 30 30 30 2e 30 20  3 Y y 5200000.0 
55b0: 58 20 78 20 7b 7d 20 55 20 75 20 68 61 72 65 20  X x {} U u hare 
55c0: 6d 20 4d 20 61 62 63 20 65 20 65 20 68 65 6c 6c  m M abc e e hell
55d0: 6f 20 64 20 44 20 7b 7d 20 43 20 63 20 39 2e 39  o d D {} C c 9.9
55e0: 20 62 20 42 20 31 20 61 20 61 7d 0a 64 6f 5f 74   b B 1 a a}.do_t
55f0: 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 34 30  est selectA-3.40
5600: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
5610: 20 20 20 53 45 4c 45 43 54 20 78 2c 79 2c 7a 20     SELECT x,y,z 
5620: 46 52 4f 4d 20 74 32 20 55 4e 49 4f 4e 20 53 45  FROM t2 UNION SE
5630: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
5640: 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  t1.    ORDER BY 
5650: 63 20 43 4f 4c 4c 41 54 45 20 42 49 4e 41 52 59  c COLLATE BINARY
5660: 20 44 45 53 43 2c 61 2c 62 0a 20 20 7d 0a 7d 20   DESC,a,b.  }.} 
5670: 7b 6d 61 64 20 5a 20 7a 20 2d 32 33 20 59 20 79  {mad Z z -23 Y y
5680: 20 35 32 30 30 30 30 30 2e 30 20 58 20 78 20 7b   5200000.0 X x {
5690: 7d 20 55 20 75 20 61 62 63 20 65 20 65 20 7b 7d  } U u abc e e {}
56a0: 20 43 20 63 20 31 20 61 20 61 20 68 61 72 65 20   C c 1 a a hare 
56b0: 6d 20 4d 20 68 65 6c 6c 6f 20 64 20 44 20 39 2e  m M hello d D 9.
56c0: 39 20 62 20 42 7d 0a 64 6f 5f 74 65 73 74 20 73  9 b B}.do_test s
56d0: 65 6c 65 63 74 41 2d 33 2e 34 31 20 7b 0a 20 20  electA-3.41 {.  
56e0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
56f0: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
5700: 74 31 20 45 58 43 45 50 54 20 53 45 4c 45 43 54  t1 EXCEPT SELECT
5710: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57   a,b,c FROM t1 W
5720: 48 45 52 45 20 62 3e 3d 27 64 27 0a 20 20 20 20  HERE b>='d'.    
5730: 4f 52 44 45 52 20 42 59 20 61 2c 62 2c 63 0a 20  ORDER BY a,b,c. 
5740: 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 31 20 61   }.} {{} C c 1 a
5750: 20 61 20 39 2e 39 20 62 20 42 7d 0a 64 6f 5f 74   a 9.9 b B}.do_t
5760: 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 34 32  est selectA-3.42
5770: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
5780: 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20     SELECT a,b,c 
5790: 46 52 4f 4d 20 74 31 20 49 4e 54 45 52 53 45 43  FROM t1 INTERSEC
57a0: 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46  T SELECT a,b,c F
57b0: 52 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3e 3d  ROM t1 WHERE b>=
57c0: 27 64 27 0a 20 20 20 20 4f 52 44 45 52 20 42 59  'd'.    ORDER BY
57d0: 20 61 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 68 65   a,b,c.  }.} {he
57e0: 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65 7d  llo d D abc e e}
57f0: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
5800: 2d 33 2e 34 33 20 7b 0a 20 20 65 78 65 63 73 71  -3.43 {.  execsq
5810: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61  l {.    SELECT a
5820: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45  ,b,c FROM t1 WHE
5830: 52 45 20 62 3e 3d 27 64 27 20 49 4e 54 45 52 53  RE b>='d' INTERS
5840: 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63  ECT SELECT a,b,c
5850: 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44   FROM t1.    ORD
5860: 45 52 20 42 59 20 61 2c 62 2c 63 0a 20 20 7d 0a  ER BY a,b,c.  }.
5870: 7d 20 7b 68 65 6c 6c 6f 20 64 20 44 20 61 62 63  } {hello d D abc
5880: 20 65 20 65 7d 0a 64 6f 5f 74 65 73 74 20 73 65   e e}.do_test se
5890: 6c 65 63 74 41 2d 33 2e 34 34 20 7b 0a 20 20 65  lectA-3.44 {.  e
58a0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
58b0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
58c0: 31 20 45 58 43 45 50 54 20 53 45 4c 45 43 54 20  1 EXCEPT SELECT 
58d0: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48  a,b,c FROM t1 WH
58e0: 45 52 45 20 62 3c 27 64 27 0a 20 20 20 20 4f 52  ERE b<'d'.    OR
58f0: 44 45 52 20 42 59 20 61 2c 62 2c 63 0a 20 20 7d  DER BY a,b,c.  }
5900: 0a 7d 20 7b 68 65 6c 6c 6f 20 64 20 44 20 61 62  .} {hello d D ab
5910: 63 20 65 20 65 7d 0a 64 6f 5f 74 65 73 74 20 73  c e e}.do_test s
5920: 65 6c 65 63 74 41 2d 33 2e 34 35 20 7b 0a 20 20  electA-3.45 {.  
5930: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
5940: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
5950: 74 31 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c  t1 INTERSECT SEL
5960: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
5970: 31 20 57 48 45 52 45 20 62 3c 27 64 27 0a 20 20  1 WHERE b<'d'.  
5980: 20 20 4f 52 44 45 52 20 42 59 20 61 2c 62 2c 63    ORDER BY a,b,c
5990: 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43 20 63 20 31  .  }.} {{} C c 1
59a0: 20 61 20 61 20 39 2e 39 20 62 20 42 7d 0a 64 6f   a a 9.9 b B}.do
59b0: 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e  _test selectA-3.
59c0: 34 36 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  46 {.  execsql {
59d0: 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c  .    SELECT a,b,
59e0: 63 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  c FROM t1 WHERE 
59f0: 62 3c 27 64 27 20 49 4e 54 45 52 53 45 43 54 20  b<'d' INTERSECT 
5a00: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
5a10: 4d 20 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42  M t1.    ORDER B
5a20: 59 20 61 2c 62 2c 63 0a 20 20 7d 0a 7d 20 7b 7b  Y a,b,c.  }.} {{
5a30: 7d 20 43 20 63 20 31 20 61 20 61 20 39 2e 39 20  } C c 1 a a 9.9 
5a40: 62 20 42 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  b B}.do_test sel
5a50: 65 63 74 41 2d 33 2e 34 37 20 7b 0a 20 20 65 78  ectA-3.47 {.  ex
5a60: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
5a70: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
5a80: 20 45 58 43 45 50 54 20 53 45 4c 45 43 54 20 61   EXCEPT SELECT a
5a90: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45  ,b,c FROM t1 WHE
5aa0: 52 45 20 62 3e 3d 27 64 27 0a 20 20 20 20 4f 52  RE b>='d'.    OR
5ab0: 44 45 52 20 42 59 20 61 20 44 45 53 43 0a 20 20  DER BY a DESC.  
5ac0: 7d 0a 7d 20 7b 39 2e 39 20 62 20 42 20 31 20 61  }.} {9.9 b B 1 a
5ad0: 20 61 20 7b 7d 20 43 20 63 7d 0a 64 6f 5f 74 65   a {} C c}.do_te
5ae0: 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 34 38 20  st selectA-3.48 
5af0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
5b00: 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46    SELECT a,b,c F
5b10: 52 4f 4d 20 74 31 20 49 4e 54 45 52 53 45 43 54  ROM t1 INTERSECT
5b20: 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52   SELECT a,b,c FR
5b30: 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3e 3d 27  OM t1 WHERE b>='
5b40: 64 27 0a 20 20 20 20 4f 52 44 45 52 20 42 59 20  d'.    ORDER BY 
5b50: 61 20 44 45 53 43 0a 20 20 7d 0a 7d 20 7b 61 62  a DESC.  }.} {ab
5b60: 63 20 65 20 65 20 68 65 6c 6c 6f 20 64 20 44 7d  c e e hello d D}
5b70: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
5b80: 2d 33 2e 34 39 20 7b 0a 20 20 65 78 65 63 73 71  -3.49 {.  execsq
5b90: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61  l {.    SELECT a
5ba0: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45  ,b,c FROM t1 WHE
5bb0: 52 45 20 62 3e 3d 27 64 27 20 49 4e 54 45 52 53  RE b>='d' INTERS
5bc0: 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63  ECT SELECT a,b,c
5bd0: 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44   FROM t1.    ORD
5be0: 45 52 20 42 59 20 61 20 44 45 53 43 0a 20 20 7d  ER BY a DESC.  }
5bf0: 0a 7d 20 7b 61 62 63 20 65 20 65 20 68 65 6c 6c  .} {abc e e hell
5c00: 6f 20 64 20 44 7d 0a 64 6f 5f 74 65 73 74 20 73  o d D}.do_test s
5c10: 65 6c 65 63 74 41 2d 33 2e 35 30 20 7b 0a 20 20  electA-3.50 {.  
5c20: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
5c30: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
5c40: 74 31 20 45 58 43 45 50 54 20 53 45 4c 45 43 54  t1 EXCEPT SELECT
5c50: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57   a,b,c FROM t1 W
5c60: 48 45 52 45 20 62 3c 27 64 27 0a 20 20 20 20 4f  HERE b<'d'.    O
5c70: 52 44 45 52 20 42 59 20 61 20 44 45 53 43 0a 20  RDER BY a DESC. 
5c80: 20 7d 0a 7d 20 7b 61 62 63 20 65 20 65 20 68 65   }.} {abc e e he
5c90: 6c 6c 6f 20 64 20 44 7d 0a 64 6f 5f 74 65 73 74  llo d D}.do_test
5ca0: 20 73 65 6c 65 63 74 41 2d 33 2e 35 31 20 7b 0a   selectA-3.51 {.
5cb0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
5cc0: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
5cd0: 4d 20 74 31 20 49 4e 54 45 52 53 45 43 54 20 53  M t1 INTERSECT S
5ce0: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
5cf0: 20 74 31 20 57 48 45 52 45 20 62 3c 27 64 27 0a   t1 WHERE b<'d'.
5d00: 20 20 20 20 4f 52 44 45 52 20 42 59 20 61 20 44      ORDER BY a D
5d10: 45 53 43 0a 20 20 7d 0a 7d 20 7b 39 2e 39 20 62  ESC.  }.} {9.9 b
5d20: 20 42 20 31 20 61 20 61 20 7b 7d 20 43 20 63 7d   B 1 a a {} C c}
5d30: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41  .do_test selectA
5d40: 2d 33 2e 35 32 20 7b 0a 20 20 65 78 65 63 73 71  -3.52 {.  execsq
5d50: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61  l {.    SELECT a
5d60: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45  ,b,c FROM t1 WHE
5d70: 52 45 20 62 3c 27 64 27 20 49 4e 54 45 52 53 45  RE b<'d' INTERSE
5d80: 43 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  CT SELECT a,b,c 
5d90: 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f 52 44 45  FROM t1.    ORDE
5da0: 52 20 42 59 20 61 20 44 45 53 43 0a 20 20 7d 0a  R BY a DESC.  }.
5db0: 7d 20 7b 39 2e 39 20 62 20 42 20 31 20 61 20 61  } {9.9 b B 1 a a
5dc0: 20 7b 7d 20 43 20 63 7d 0a 64 6f 5f 74 65 73 74   {} C c}.do_test
5dd0: 20 73 65 6c 65 63 74 41 2d 33 2e 35 33 20 7b 0a   selectA-3.53 {.
5de0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
5df0: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
5e00: 4d 20 74 31 20 45 58 43 45 50 54 20 53 45 4c 45  M t1 EXCEPT SELE
5e10: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
5e20: 20 57 48 45 52 45 20 62 3e 3d 27 64 27 0a 20 20   WHERE b>='d'.  
5e30: 20 20 4f 52 44 45 52 20 42 59 20 62 2c 20 61 20    ORDER BY b, a 
5e40: 44 45 53 43 0a 20 20 7d 0a 7d 20 7b 7b 7d 20 43  DESC.  }.} {{} C
5e50: 20 63 20 31 20 61 20 61 20 39 2e 39 20 62 20 42   c 1 a a 9.9 b B
5e60: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
5e70: 41 2d 33 2e 35 34 20 7b 0a 20 20 65 78 65 63 73  A-3.54 {.  execs
5e80: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
5e90: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 49 4e  a,b,c FROM t1 IN
5ea0: 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20 61  TERSECT SELECT a
5eb0: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45  ,b,c FROM t1 WHE
5ec0: 52 45 20 62 3e 3d 27 64 27 0a 20 20 20 20 4f 52  RE b>='d'.    OR
5ed0: 44 45 52 20 42 59 20 62 0a 20 20 7d 0a 7d 20 7b  DER BY b.  }.} {
5ee0: 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20  hello d D abc e 
5ef0: 65 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  e}.do_test selec
5f00: 74 41 2d 33 2e 35 35 20 7b 0a 20 20 65 78 65 63  tA-3.55 {.  exec
5f10: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
5f20: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57   a,b,c FROM t1 W
5f30: 48 45 52 45 20 62 3e 3d 27 64 27 20 49 4e 54 45  HERE b>='d' INTE
5f40: 52 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62  RSECT SELECT a,b
5f50: 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f  ,c FROM t1.    O
5f60: 52 44 45 52 20 42 59 20 62 20 44 45 53 43 2c 20  RDER BY b DESC, 
5f70: 63 0a 20 20 7d 0a 7d 20 7b 61 62 63 20 65 20 65  c.  }.} {abc e e
5f80: 20 68 65 6c 6c 6f 20 64 20 44 7d 0a 64 6f 5f 74   hello d D}.do_t
5f90: 65 73 74 20 73 65 6c 65 63 74 41 2d 33 2e 35 36  est selectA-3.56
5fa0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
5fb0: 20 20 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20     SELECT a,b,c 
5fc0: 46 52 4f 4d 20 74 31 20 45 58 43 45 50 54 20 53  FROM t1 EXCEPT S
5fd0: 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d  ELECT a,b,c FROM
5fe0: 20 74 31 20 57 48 45 52 45 20 62 3c 27 64 27 0a   t1 WHERE b<'d'.
5ff0: 20 20 20 20 4f 52 44 45 52 20 42 59 20 62 2c 20      ORDER BY b, 
6000: 63 20 44 45 53 43 2c 20 61 0a 20 20 7d 0a 7d 20  c DESC, a.  }.} 
6010: 7b 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65  {hello d D abc e
6020: 20 65 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   e}.do_test sele
6030: 63 74 41 2d 33 2e 35 37 20 7b 0a 20 20 65 78 65  ctA-3.57 {.  exe
6040: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
6050: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
6060: 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43 54  INTERSECT SELECT
6070: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57   a,b,c FROM t1 W
6080: 48 45 52 45 20 62 3c 27 64 27 0a 20 20 20 20 4f  HERE b<'d'.    O
6090: 52 44 45 52 20 42 59 20 62 20 43 4f 4c 4c 41 54  RDER BY b COLLAT
60a0: 45 20 4e 4f 43 41 53 45 0a 20 20 7d 0a 7d 20 7b  E NOCASE.  }.} {
60b0: 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b 7d  1 a a 9.9 b B {}
60c0: 20 43 20 63 7d 0a 64 6f 5f 74 65 73 74 20 73 65   C c}.do_test se
60d0: 6c 65 63 74 41 2d 33 2e 35 38 20 7b 0a 20 20 65  lectA-3.58 {.  e
60e0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
60f0: 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74  ECT a,b,c FROM t
6100: 31 20 57 48 45 52 45 20 62 3c 27 64 27 20 49 4e  1 WHERE b<'d' IN
6110: 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20 61  TERSECT SELECT a
6120: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20  ,b,c FROM t1.   
6130: 20 4f 52 44 45 52 20 42 59 20 62 0a 20 20 7d 0a   ORDER BY b.  }.
6140: 7d 20 7b 7b 7d 20 43 20 63 20 31 20 61 20 61 20  } {{} C c 1 a a 
6150: 39 2e 39 20 62 20 42 7d 0a 64 6f 5f 74 65 73 74  9.9 b B}.do_test
6160: 20 73 65 6c 65 63 74 41 2d 33 2e 35 39 20 7b 0a   selectA-3.59 {.
6170: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
6180: 53 45 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f  SELECT a,b,c FRO
6190: 4d 20 74 31 20 45 58 43 45 50 54 20 53 45 4c 45  M t1 EXCEPT SELE
61a0: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
61b0: 20 57 48 45 52 45 20 62 3e 3d 27 64 27 0a 20 20   WHERE b>='d'.  
61c0: 20 20 4f 52 44 45 52 20 42 59 20 63 2c 20 61 20    ORDER BY c, a 
61d0: 44 45 53 43 0a 20 20 7d 0a 7d 20 7b 31 20 61 20  DESC.  }.} {1 a 
61e0: 61 20 39 2e 39 20 62 20 42 20 7b 7d 20 43 20 63  a 9.9 b B {} C c
61f0: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
6200: 41 2d 33 2e 36 30 20 7b 0a 20 20 65 78 65 63 73  A-3.60 {.  execs
6210: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
6220: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 49 4e  a,b,c FROM t1 IN
6230: 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20 61  TERSECT SELECT a
6240: 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57 48 45  ,b,c FROM t1 WHE
6250: 52 45 20 62 3e 3d 27 64 27 0a 20 20 20 20 4f 52  RE b>='d'.    OR
6260: 44 45 52 20 42 59 20 63 0a 20 20 7d 0a 7d 20 7b  DER BY c.  }.} {
6270: 68 65 6c 6c 6f 20 64 20 44 20 61 62 63 20 65 20  hello d D abc e 
6280: 65 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  e}.do_test selec
6290: 74 41 2d 33 2e 36 31 20 7b 0a 20 20 65 78 65 63  tA-3.61 {.  exec
62a0: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
62b0: 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20 57   a,b,c FROM t1 W
62c0: 48 45 52 45 20 62 3e 3d 27 64 27 20 49 4e 54 45  HERE b>='d' INTE
62d0: 52 53 45 43 54 20 53 45 4c 45 43 54 20 61 2c 62  RSECT SELECT a,b
62e0: 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 4f  ,c FROM t1.    O
62f0: 52 44 45 52 20 42 59 20 63 20 43 4f 4c 4c 41 54  RDER BY c COLLAT
6300: 45 20 42 49 4e 41 52 59 2c 20 62 20 44 45 53 43  E BINARY, b DESC
6310: 2c 20 63 2c 20 61 2c 20 62 2c 20 63 2c 20 61 2c  , c, a, b, c, a,
6320: 20 62 2c 20 63 0a 20 20 7d 0a 7d 20 7b 68 65 6c   b, c.  }.} {hel
6330: 6c 6f 20 64 20 44 20 61 62 63 20 65 20 65 7d 0a  lo d D abc e e}.
6340: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 41 2d  do_test selectA-
6350: 33 2e 36 32 20 7b 0a 20 20 65 78 65 63 73 71 6c  3.62 {.  execsql
6360: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 2c   {.    SELECT a,
6370: 62 2c 63 20 46 52 4f 4d 20 74 31 20 45 58 43 45  b,c FROM t1 EXCE
6380: 50 54 20 53 45 4c 45 43 54 20 61 2c 62 2c 63 20  PT SELECT a,b,c 
6390: 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 62 3c  FROM t1 WHERE b<
63a0: 27 64 27 0a 20 20 20 20 4f 52 44 45 52 20 42 59  'd'.    ORDER BY
63b0: 20 63 20 44 45 53 43 2c 20 61 0a 20 20 7d 0a 7d   c DESC, a.  }.}
63c0: 20 7b 61 62 63 20 65 20 65 20 68 65 6c 6c 6f 20   {abc e e hello 
63d0: 64 20 44 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  d D}.do_test sel
63e0: 65 63 74 41 2d 33 2e 36 33 20 7b 0a 20 20 65 78  ectA-3.63 {.  ex
63f0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
6400: 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31  CT a,b,c FROM t1
6410: 20 49 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43   INTERSECT SELEC
6420: 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 20  T a,b,c FROM t1 
6430: 57 48 45 52 45 20 62 3c 27 64 27 0a 20 20 20 20  WHERE b<'d'.    
6440: 4f 52 44 45 52 20 42 59 20 63 20 43 4f 4c 4c 41  ORDER BY c COLLA
6450: 54 45 20 4e 4f 43 41 53 45 0a 20 20 7d 0a 7d 20  TE NOCASE.  }.} 
6460: 7b 31 20 61 20 61 20 39 2e 39 20 62 20 42 20 7b  {1 a a 9.9 b B {
6470: 7d 20 43 20 63 7d 0a 64 6f 5f 74 65 73 74 20 73  } C c}.do_test s
6480: 65 6c 65 63 74 41 2d 33 2e 36 34 20 7b 0a 20 20  electA-3.64 {.  
6490: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
64a0: 4c 45 43 54 20 61 2c 62 2c 63 20 46 52 4f 4d 20  LECT a,b,c FROM 
64b0: 74 31 20 57 48 45 52 45 20 62 3c 27 64 27 20 49  t1 WHERE b<'d' I
64c0: 4e 54 45 52 53 45 43 54 20 53 45 4c 45 43 54 20  NTERSECT SELECT 
64d0: 61 2c 62 2c 63 20 46 52 4f 4d 20 74 31 0a 20 20  a,b,c FROM t1.  
64e0: 20 20 4f 52 44 45 52 20 42 59 20 63 0a 20 20 7d    ORDER BY c.  }
64f0: 0a 7d 20 7b 31 20 61 20 61 20 39 2e 39 20 62 20  .} {1 a a 9.9 b 
6500: 42 20 7b 7d 20 43 20 63 7d 0a 0a 0a 66 69 6e 69  B {} C c}...fini
6510: 73 68 5f 74 65 73 74 0a                          sh_test.