/ Hex Artifact Content
Login

Artifact e25243f8ca503e06f252eb0218976d07cfeceac3:


0000: 23 20 32 30 30 38 20 53 65 70 74 65 6d 62 65 72  # 2008 September
0010: 20 31 36 0a 23 0a 23 20 54 68 65 20 61 75 74 68   16.#.# The auth
0020: 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70  or disclaims cop
0030: 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73  yright to this s
0040: 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20  ource code.  In 
0050: 70 6c 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67  place of.# a leg
0060: 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20  al notice, here 
0070: 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23  is a blessing:.#
0080: 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f  .#    May you do
0090: 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76   good and not ev
00a0: 69 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75  il..#    May you
00b0: 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73   find forgivenes
00c0: 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61  s for yourself a
00d0: 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72  nd forgive other
00e0: 73 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20  s..#    May you 
00f0: 73 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65  share freely, ne
0100: 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20  ver taking more 
0110: 74 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23  than you give..#
0120: 0a 23 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 2a 2a 2a 2a 2a 0a 23 20 54 68 69 73  *********.# This
0170: 20 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73   file implements
0180: 20 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74   regression test
0190: 73 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62  s for SQLite lib
01a0: 72 61 72 79 2e 20 0a 23 0a 23 20 24 49 64 3a 20  rary. .#.# $Id: 
01b0: 73 65 6c 65 63 74 43 2e 74 65 73 74 2c 76 20 31  selectC.test,v 1
01c0: 2e 35 20 32 30 30 39 2f 30 35 2f 31 37 20 31 35  .5 2009/05/17 15
01d0: 3a 32 36 3a 32 31 20 64 72 68 20 45 78 70 20 24  :26:21 drh Exp $
01e0: 0a 0a 73 65 74 20 74 65 73 74 64 69 72 20 5b 66  ..set testdir [f
01f0: 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 61 72 67  ile dirname $arg
0200: 76 30 5d 0a 73 6f 75 72 63 65 20 24 74 65 73 74  v0].source $test
0210: 64 69 72 2f 74 65 73 74 65 72 2e 74 63 6c 0a 73  dir/tester.tcl.s
0220: 65 74 20 74 65 73 74 70 72 65 66 69 78 20 73 65  et testprefix se
0230: 6c 65 63 74 43 0a 0a 23 20 54 69 63 6b 65 74 20  lectC..# Ticket 
0240: 23 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  #.do_test select
0250: 43 2d 31 2e 31 20 7b 0a 20 20 65 78 65 63 73 71  C-1.1 {.  execsq
0260: 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54  l {.    CREATE T
0270: 41 42 4c 45 20 74 31 28 61 2c 20 62 2c 20 63 29  ABLE t1(a, b, c)
0280: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
0290: 4f 20 74 31 20 56 41 4c 55 45 53 28 31 2c 27 61  O t1 VALUES(1,'a
02a0: 61 61 27 2c 27 62 62 62 27 29 3b 0a 20 20 20 20  aa','bbb');.    
02b0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 53  INSERT INTO t1 S
02c0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 3b  ELECT * FROM t1;
02d0: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
02e0: 20 74 31 20 56 41 4c 55 45 53 28 32 2c 27 63 63   t1 VALUES(2,'cc
02f0: 63 27 2c 27 64 64 64 27 29 3b 0a 0a 20 20 20 20  c','ddd');..    
0300: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
0310: 61 20 41 53 20 78 2c 20 62 7c 7c 63 20 41 53 20  a AS x, b||c AS 
0320: 79 0a 20 20 20 20 20 20 46 52 4f 4d 20 74 31 0a  y.      FROM t1.
0330: 20 20 20 20 20 57 48 45 52 45 20 79 20 49 4e 20       WHERE y IN 
0340: 28 27 61 61 61 62 62 62 27 2c 27 78 78 78 27 29  ('aaabbb','xxx')
0350: 3b 0a 20 20 7d 0a 7d 20 7b 31 20 61 61 61 62 62  ;.  }.} {1 aaabb
0360: 62 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  b}.do_test selec
0370: 74 43 2d 31 2e 32 20 7b 0a 20 20 65 78 65 63 73  tC-1.2 {.  execs
0380: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
0390: 44 49 53 54 49 4e 43 54 20 61 20 41 53 20 78 2c  DISTINCT a AS x,
03a0: 20 62 7c 7c 63 20 41 53 20 79 0a 20 20 20 20 20   b||c AS y.     
03b0: 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 20 57 48   FROM t1.     WH
03c0: 45 52 45 20 62 7c 7c 63 20 49 4e 20 28 27 61 61  ERE b||c IN ('aa
03d0: 61 62 62 62 27 2c 27 78 78 78 27 29 3b 0a 20 20  abbb','xxx');.  
03e0: 7d 0a 7d 20 7b 31 20 61 61 61 62 62 62 7d 0a 64  }.} {1 aaabbb}.d
03f0: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 43 2d 31  o_test selectC-1
0400: 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .3 {.  execsql {
0410: 0a 20 20 20 20 53 45 4c 45 43 54 20 44 49 53 54  .    SELECT DIST
0420: 49 4e 43 54 20 61 20 41 53 20 78 2c 20 62 7c 7c  INCT a AS x, b||
0430: 63 20 41 53 20 79 0a 20 20 20 20 20 20 46 52 4f  c AS y.      FRO
0440: 4d 20 74 31 0a 20 20 20 20 20 57 48 45 52 45 20  M t1.     WHERE 
0450: 79 3d 27 61 61 61 62 62 62 27 0a 20 20 7d 0a 7d  y='aaabbb'.  }.}
0460: 20 7b 31 20 61 61 61 62 62 62 7d 0a 64 6f 5f 74   {1 aaabbb}.do_t
0470: 65 73 74 20 73 65 6c 65 63 74 43 2d 31 2e 34 20  est selectC-1.4 
0480: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
0490: 20 20 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43    SELECT DISTINC
04a0: 54 20 61 20 41 53 20 78 2c 20 62 7c 7c 63 20 41  T a AS x, b||c A
04b0: 53 20 79 0a 20 20 20 20 20 20 46 52 4f 4d 20 74  S y.      FROM t
04c0: 31 0a 20 20 20 20 20 57 48 45 52 45 20 62 7c 7c  1.     WHERE b||
04d0: 63 3d 27 61 61 61 62 62 62 27 0a 20 20 7d 0a 7d  c='aaabbb'.  }.}
04e0: 20 7b 31 20 61 61 61 62 62 62 7d 0a 64 6f 5f 74   {1 aaabbb}.do_t
04f0: 65 73 74 20 73 65 6c 65 63 74 43 2d 31 2e 35 20  est selectC-1.5 
0500: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
0510: 20 20 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43    SELECT DISTINC
0520: 54 20 61 20 41 53 20 78 2c 20 62 7c 7c 63 20 41  T a AS x, b||c A
0530: 53 20 79 0a 20 20 20 20 20 20 46 52 4f 4d 20 74  S y.      FROM t
0540: 31 0a 20 20 20 20 20 57 48 45 52 45 20 78 3d 32  1.     WHERE x=2
0550: 0a 20 20 7d 0a 7d 20 7b 32 20 63 63 63 64 64 64  .  }.} {2 cccddd
0560: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
0570: 43 2d 31 2e 36 20 7b 0a 20 20 65 78 65 63 73 71  C-1.6 {.  execsq
0580: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 44  l {.    SELECT D
0590: 49 53 54 49 4e 43 54 20 61 20 41 53 20 78 2c 20  ISTINCT a AS x, 
05a0: 62 7c 7c 63 20 41 53 20 79 0a 20 20 20 20 20 20  b||c AS y.      
05b0: 46 52 4f 4d 20 74 31 0a 20 20 20 20 20 57 48 45  FROM t1.     WHE
05c0: 52 45 20 61 3d 32 0a 20 20 7d 0a 7d 20 7b 32 20  RE a=2.  }.} {2 
05d0: 63 63 63 64 64 64 7d 0a 64 6f 5f 74 65 73 74 20  cccddd}.do_test 
05e0: 73 65 6c 65 63 74 43 2d 31 2e 37 20 7b 0a 20 20  selectC-1.7 {.  
05f0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
0600: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 61 20  LECT DISTINCT a 
0610: 41 53 20 78 2c 20 62 7c 7c 63 20 41 53 20 79 0a  AS x, b||c AS y.
0620: 20 20 20 20 20 20 46 52 4f 4d 20 74 31 0a 20 20        FROM t1.  
0630: 20 20 20 57 48 45 52 45 20 2b 79 3d 27 61 61 61     WHERE +y='aaa
0640: 62 62 62 27 0a 20 20 7d 0a 7d 20 7b 31 20 61 61  bbb'.  }.} {1 aa
0650: 61 62 62 62 7d 0a 64 6f 5f 74 65 73 74 20 73 65  abbb}.do_test se
0660: 6c 65 63 74 43 2d 31 2e 38 20 7b 0a 20 20 65 78  lectC-1.8 {.  ex
0670: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
0680: 43 54 20 61 20 41 53 20 78 2c 20 62 7c 7c 63 20  CT a AS x, b||c 
0690: 41 53 20 79 0a 20 20 20 20 20 20 46 52 4f 4d 20  AS y.      FROM 
06a0: 74 31 0a 20 20 20 20 20 47 52 4f 55 50 20 42 59  t1.     GROUP BY
06b0: 20 78 2c 20 79 0a 20 20 20 20 48 41 56 49 4e 47   x, y.    HAVING
06c0: 20 79 3d 27 61 61 61 62 62 62 27 0a 20 20 7d 0a   y='aaabbb'.  }.
06d0: 7d 20 7b 31 20 61 61 61 62 62 62 7d 0a 64 6f 5f  } {1 aaabbb}.do_
06e0: 74 65 73 74 20 73 65 6c 65 63 74 43 2d 31 2e 39  test selectC-1.9
06f0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
0700: 20 20 20 53 45 4c 45 43 54 20 61 20 41 53 20 78     SELECT a AS x
0710: 2c 20 62 7c 7c 63 20 41 53 20 79 0a 20 20 20 20  , b||c AS y.    
0720: 20 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 20 47    FROM t1.     G
0730: 52 4f 55 50 20 42 59 20 78 2c 20 79 0a 20 20 20  ROUP BY x, y.   
0740: 20 48 41 56 49 4e 47 20 62 7c 7c 63 3d 27 61 61   HAVING b||c='aa
0750: 61 62 62 62 27 0a 20 20 7d 0a 7d 20 7b 31 20 61  abbb'.  }.} {1 a
0760: 61 61 62 62 62 7d 0a 64 6f 5f 74 65 73 74 20 73  aabbb}.do_test s
0770: 65 6c 65 63 74 43 2d 31 2e 31 30 20 7b 0a 20 20  electC-1.10 {.  
0780: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
0790: 4c 45 43 54 20 61 20 41 53 20 78 2c 20 62 7c 7c  LECT a AS x, b||
07a0: 63 20 41 53 20 79 0a 20 20 20 20 20 20 46 52 4f  c AS y.      FRO
07b0: 4d 20 74 31 0a 20 20 20 20 20 57 48 45 52 45 20  M t1.     WHERE 
07c0: 79 3d 27 61 61 61 62 62 62 27 0a 20 20 20 20 20  y='aaabbb'.     
07d0: 47 52 4f 55 50 20 42 59 20 78 2c 20 79 0a 20 20  GROUP BY x, y.  
07e0: 7d 0a 7d 20 7b 31 20 61 61 61 62 62 62 7d 0a 64  }.} {1 aaabbb}.d
07f0: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 43 2d 31  o_test selectC-1
0800: 2e 31 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  .11 {.  execsql 
0810: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 61 20 41  {.    SELECT a A
0820: 53 20 78 2c 20 62 7c 7c 63 20 41 53 20 79 0a 20  S x, b||c AS y. 
0830: 20 20 20 20 20 46 52 4f 4d 20 74 31 0a 20 20 20       FROM t1.   
0840: 20 20 57 48 45 52 45 20 62 7c 7c 63 3d 27 61 61    WHERE b||c='aa
0850: 61 62 62 62 27 0a 20 20 20 20 20 47 52 4f 55 50  abbb'.     GROUP
0860: 20 42 59 20 78 2c 20 79 0a 20 20 7d 0a 7d 20 7b   BY x, y.  }.} {
0870: 31 20 61 61 61 62 62 62 7d 0a 70 72 6f 63 20 6c  1 aaabbb}.proc l
0880: 6f 6e 67 6e 61 6d 65 5f 74 6f 75 70 70 65 72 20  ongname_toupper 
0890: 78 20 7b 72 65 74 75 72 6e 20 5b 73 74 72 69 6e  x {return [strin
08a0: 67 20 74 6f 75 70 70 65 72 20 24 78 5d 7d 0a 64  g toupper $x]}.d
08b0: 62 20 66 75 6e 63 74 69 6f 6e 20 75 70 70 65 72  b function upper
08c0: 63 61 73 65 63 6f 6e 76 65 72 73 69 6f 6e 66 75  caseconversionfu
08d0: 6e 63 74 69 6f 6e 77 69 74 68 61 76 65 72 79 6c  nctionwithaveryl
08e0: 6f 6e 67 6e 61 6d 65 20 6c 6f 6e 67 6e 61 6d 65  ongname longname
08f0: 5f 74 6f 75 70 70 65 72 0a 64 6f 5f 74 65 73 74  _toupper.do_test
0900: 20 73 65 6c 65 63 74 43 2d 31 2e 31 32 2e 31 20   selectC-1.12.1 
0910: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
0920: 20 20 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43    SELECT DISTINC
0930: 54 20 75 70 70 65 72 28 62 29 20 41 53 20 78 0a  T upper(b) AS x.
0940: 20 20 20 20 20 20 46 52 4f 4d 20 74 31 0a 20 20        FROM t1.  
0950: 20 20 20 4f 52 44 45 52 20 42 59 20 78 0a 20 20     ORDER BY x.  
0960: 7d 0a 7d 20 7b 41 41 41 20 43 43 43 7d 0a 64 6f  }.} {AAA CCC}.do
0970: 5f 74 65 73 74 20 73 65 6c 65 63 74 43 2d 31 2e  _test selectC-1.
0980: 31 32 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c  12.2 {.  execsql
0990: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 44 49   {.    SELECT DI
09a0: 53 54 49 4e 43 54 20 75 70 70 65 72 63 61 73 65  STINCT uppercase
09b0: 63 6f 6e 76 65 72 73 69 6f 6e 66 75 6e 63 74 69  conversionfuncti
09c0: 6f 6e 77 69 74 68 61 76 65 72 79 6c 6f 6e 67 6e  onwithaverylongn
09d0: 61 6d 65 28 62 29 20 41 53 20 78 0a 20 20 20 20  ame(b) AS x.    
09e0: 20 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 20 4f    FROM t1.     O
09f0: 52 44 45 52 20 42 59 20 78 0a 20 20 7d 0a 7d 20  RDER BY x.  }.} 
0a00: 7b 41 41 41 20 43 43 43 7d 0a 64 6f 5f 74 65 73  {AAA CCC}.do_tes
0a10: 74 20 73 65 6c 65 63 74 43 2d 31 2e 31 33 2e 31  t selectC-1.13.1
0a20: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
0a30: 20 20 20 53 45 4c 45 43 54 20 75 70 70 65 72 28     SELECT upper(
0a40: 62 29 20 41 53 20 78 0a 20 20 20 20 20 20 46 52  b) AS x.      FR
0a50: 4f 4d 20 74 31 0a 20 20 20 20 20 47 52 4f 55 50  OM t1.     GROUP
0a60: 20 42 59 20 78 0a 20 20 20 20 20 4f 52 44 45 52   BY x.     ORDER
0a70: 20 42 59 20 78 0a 20 20 7d 0a 7d 20 7b 41 41 41   BY x.  }.} {AAA
0a80: 20 43 43 43 7d 0a 64 6f 5f 74 65 73 74 20 73 65   CCC}.do_test se
0a90: 6c 65 63 74 43 2d 31 2e 31 33 2e 32 20 7b 0a 20  lectC-1.13.2 {. 
0aa0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53   execsql {.    S
0ab0: 45 4c 45 43 54 20 75 70 70 65 72 63 61 73 65 63  ELECT uppercasec
0ac0: 6f 6e 76 65 72 73 69 6f 6e 66 75 6e 63 74 69 6f  onversionfunctio
0ad0: 6e 77 69 74 68 61 76 65 72 79 6c 6f 6e 67 6e 61  nwithaverylongna
0ae0: 6d 65 28 62 29 20 41 53 20 78 0a 20 20 20 20 20  me(b) AS x.     
0af0: 20 46 52 4f 4d 20 74 31 0a 20 20 20 20 20 47 52   FROM t1.     GR
0b00: 4f 55 50 20 42 59 20 78 0a 20 20 20 20 20 4f 52  OUP BY x.     OR
0b10: 44 45 52 20 42 59 20 78 0a 20 20 7d 0a 7d 20 7b  DER BY x.  }.} {
0b20: 41 41 41 20 43 43 43 7d 0a 64 6f 5f 74 65 73 74  AAA CCC}.do_test
0b30: 20 73 65 6c 65 63 74 43 2d 31 2e 31 34 2e 31 20   selectC-1.14.1 
0b40: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
0b50: 20 20 53 45 4c 45 43 54 20 75 70 70 65 72 28 62    SELECT upper(b
0b60: 29 20 41 53 20 78 0a 20 20 20 20 20 20 46 52 4f  ) AS x.      FRO
0b70: 4d 20 74 31 0a 20 20 20 20 20 4f 52 44 45 52 20  M t1.     ORDER 
0b80: 42 59 20 78 20 44 45 53 43 0a 20 20 7d 0a 7d 20  BY x DESC.  }.} 
0b90: 7b 43 43 43 20 41 41 41 20 41 41 41 7d 0a 64 6f  {CCC AAA AAA}.do
0ba0: 5f 74 65 73 74 20 73 65 6c 65 63 74 43 2d 31 2e  _test selectC-1.
0bb0: 31 34 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c  14.2 {.  execsql
0bc0: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 75 70   {.    SELECT up
0bd0: 70 65 72 63 61 73 65 63 6f 6e 76 65 72 73 69 6f  percaseconversio
0be0: 6e 66 75 6e 63 74 69 6f 6e 77 69 74 68 61 76 65  nfunctionwithave
0bf0: 72 79 6c 6f 6e 67 6e 61 6d 65 28 62 29 20 41 53  rylongname(b) AS
0c00: 20 78 0a 20 20 20 20 20 20 46 52 4f 4d 20 74 31   x.      FROM t1
0c10: 0a 20 20 20 20 20 4f 52 44 45 52 20 42 59 20 78  .     ORDER BY x
0c20: 20 44 45 53 43 0a 20 20 7d 0a 7d 20 7b 43 43 43   DESC.  }.} {CCC
0c30: 20 41 41 41 20 41 41 41 7d 0a 0a 23 20 54 68 65   AAA AAA}..# The
0c40: 20 66 6f 6c 6c 6f 77 69 6e 67 20 71 75 65 72 79   following query
0c50: 20 75 73 65 64 20 74 6f 20 6c 65 61 6b 20 6d 65   used to leak me
0c60: 6d 6f 72 79 2e 20 20 56 65 72 69 66 79 20 74 68  mory.  Verify th
0c70: 61 74 20 68 61 73 20 62 65 65 6e 20 66 69 78 65  at has been fixe
0c80: 64 2e 0a 23 0a 69 66 63 61 70 61 62 6c 65 20 74  d..#.ifcapable t
0c90: 72 69 67 67 65 72 26 26 63 6f 6d 70 6f 75 6e 64  rigger&&compound
0ca0: 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 73 65 6c   {.  do_test sel
0cb0: 65 63 74 43 2d 32 2e 31 20 7b 0a 20 20 20 20 63  ectC-2.1 {.    c
0cc0: 61 74 63 68 73 71 6c 20 7b 0a 20 20 20 20 20 20  atchsql {.      
0cd0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 32 31  CREATE TABLE t21
0ce0: 61 28 61 2c 62 29 3b 0a 20 20 20 20 20 20 49 4e  a(a,b);.      IN
0cf0: 53 45 52 54 20 49 4e 54 4f 20 74 32 31 61 20 56  SERT INTO t21a V
0d00: 41 4c 55 45 53 28 31 2c 32 29 3b 0a 20 20 20 20  ALUES(1,2);.    
0d10: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
0d20: 32 31 62 28 6e 29 3b 0a 20 20 20 20 20 20 43 52  21b(n);.      CR
0d30: 45 41 54 45 20 54 52 49 47 47 45 52 20 72 32 31  EATE TRIGGER r21
0d40: 20 41 46 54 45 52 20 49 4e 53 45 52 54 20 4f 4e   AFTER INSERT ON
0d50: 20 74 32 31 62 20 42 45 47 49 4e 0a 20 20 20 20   t21b BEGIN.    
0d60: 20 20 20 20 53 45 4c 45 43 54 20 61 20 46 52 4f      SELECT a FRO
0d70: 4d 20 74 32 31 61 20 57 48 45 52 45 20 61 3e 6e  M t21a WHERE a>n
0d80: 65 77 2e 78 20 55 4e 49 4f 4e 20 41 4c 4c 0a 20  ew.x UNION ALL. 
0d90: 20 20 20 20 20 20 20 53 45 4c 45 43 54 20 62 20         SELECT b 
0da0: 46 52 4f 4d 20 74 32 31 61 20 57 48 45 52 45 20  FROM t21a WHERE 
0db0: 62 3e 6e 65 77 2e 78 20 4f 52 44 45 52 20 42 59  b>new.x ORDER BY
0dc0: 20 31 20 4c 49 4d 49 54 20 32 3b 0a 20 20 20 20   1 LIMIT 2;.    
0dd0: 20 20 45 4e 44 3b 0a 20 20 20 20 20 20 49 4e 53    END;.      INS
0de0: 45 52 54 20 49 4e 54 4f 20 74 32 31 62 20 56 41  ERT INTO t21b VA
0df0: 4c 55 45 53 28 36 29 3b 0a 20 20 20 20 7d 0a 20  LUES(6);.    }. 
0e00: 20 7d 20 7b 31 20 7b 6e 6f 20 73 75 63 68 20 63   } {1 {no such c
0e10: 6f 6c 75 6d 6e 3a 20 6e 65 77 2e 78 7d 7d 0a 7d  olumn: new.x}}.}
0e20: 0a 0a 23 20 43 68 65 63 6b 20 74 68 61 74 20 74  ..# Check that t
0e30: 69 63 6b 65 74 20 5b 38 38 33 30 33 34 64 63 62  icket [883034dcb
0e40: 35 5d 20 69 73 20 66 69 78 65 64 2e 0a 23 0a 64  5] is fixed..#.d
0e50: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 43 2d 33  o_test selectC-3
0e60: 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .1 {.  execsql {
0e70: 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c  .    CREATE TABL
0e80: 45 20 70 65 72 73 6f 6e 20 28 0a 20 20 20 20 20  E person (.     
0e90: 20 20 20 6f 72 67 5f 69 64 20 20 20 20 20 20 20     org_id       
0ea0: 20 20 20 54 45 58 54 20 4e 4f 54 20 4e 55 4c 4c     TEXT NOT NULL
0eb0: 2c 0a 20 20 20 20 20 20 20 20 6e 69 63 6b 6e 61  ,.        nickna
0ec0: 6d 65 20 20 20 20 20 20 20 20 54 45 58 54 20 4e  me        TEXT N
0ed0: 4f 54 20 4e 55 4c 4c 2c 0a 20 20 20 20 20 20 20  OT NULL,.       
0ee0: 20 6c 69 63 65 6e 73 65 20 20 20 20 20 20 20 20   license        
0ef0: 20 54 45 58 54 2c 0a 20 20 20 20 20 20 20 20 43   TEXT,.        C
0f00: 4f 4e 53 54 52 41 49 4e 54 20 70 65 72 73 6f 6e  ONSTRAINT person
0f10: 5f 70 6b 20 50 52 49 4d 41 52 59 20 4b 45 59 20  _pk PRIMARY KEY 
0f20: 28 6f 72 67 5f 69 64 2c 20 6e 69 63 6b 6e 61 6d  (org_id, nicknam
0f30: 65 29 2c 0a 20 20 20 20 20 20 20 20 43 4f 4e 53  e),.        CONS
0f40: 54 52 41 49 4e 54 20 70 65 72 73 6f 6e 5f 6c 69  TRAINT person_li
0f50: 63 65 6e 73 65 5f 75 6b 20 55 4e 49 51 55 45 20  cense_uk UNIQUE 
0f60: 28 6c 69 63 65 6e 73 65 29 0a 20 20 20 20 29 3b  (license).    );
0f70: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
0f80: 20 70 65 72 73 6f 6e 20 56 41 4c 55 45 53 28 27   person VALUES('
0f90: 6d 65 79 65 72 73 27 2c 20 27 6a 61 63 6b 27 2c  meyers', 'jack',
0fa0: 20 27 32 47 41 54 31 32 33 27 29 3b 0a 20 20 20   '2GAT123');.   
0fb0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 70 65 72   INSERT INTO per
0fc0: 73 6f 6e 20 56 41 4c 55 45 53 28 27 6d 65 79 65  son VALUES('meye
0fd0: 72 73 27 2c 20 27 68 69 6c 6c 27 2c 20 27 56 33  rs', 'hill', 'V3
0fe0: 34 35 46 4d 50 27 29 3b 0a 20 20 20 20 49 4e 53  45FMP');.    INS
0ff0: 45 52 54 20 49 4e 54 4f 20 70 65 72 73 6f 6e 20  ERT INTO person 
1000: 56 41 4c 55 45 53 28 27 6d 65 79 65 72 73 27 2c  VALUES('meyers',
1010: 20 27 6a 69 6d 27 2c 20 27 32 47 41 54 31 33 38   'jim', '2GAT138
1020: 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  ');.    INSERT I
1030: 4e 54 4f 20 70 65 72 73 6f 6e 20 56 41 4c 55 45  NTO person VALUE
1040: 53 28 27 73 6d 69 74 68 27 2c 20 27 6d 61 67 67  S('smith', 'magg
1050: 79 27 2c 20 27 27 29 3b 0a 20 20 20 20 49 4e 53  y', '');.    INS
1060: 45 52 54 20 49 4e 54 4f 20 70 65 72 73 6f 6e 20  ERT INTO person 
1070: 56 41 4c 55 45 53 28 27 73 6d 69 74 68 27 2c 20  VALUES('smith', 
1080: 27 6a 6f 73 65 27 2c 20 27 4a 4a 5a 31 30 39 27  'jose', 'JJZ109'
1090: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
10a0: 54 4f 20 70 65 72 73 6f 6e 20 56 41 4c 55 45 53  TO person VALUES
10b0: 28 27 73 6d 69 74 68 27 2c 20 27 6a 61 63 6b 27  ('smith', 'jack'
10c0: 2c 20 27 54 48 58 31 33 38 27 29 3b 0a 20 20 20  , 'THX138');.   
10d0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 70 65 72   INSERT INTO per
10e0: 73 6f 6e 20 56 41 4c 55 45 53 28 27 6c 61 6b 65  son VALUES('lake
10f0: 73 69 64 65 27 2c 20 27 64 61 76 65 27 2c 20 27  side', 'dave', '
1100: 39 35 33 4f 4b 47 27 29 3b 0a 20 20 20 20 49 4e  953OKG');.    IN
1110: 53 45 52 54 20 49 4e 54 4f 20 70 65 72 73 6f 6e  SERT INTO person
1120: 20 56 41 4c 55 45 53 28 27 6c 61 6b 65 73 69 64   VALUES('lakesid
1130: 65 27 2c 20 27 61 6d 79 27 2c 20 4e 55 4c 4c 29  e', 'amy', NULL)
1140: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
1150: 4f 20 70 65 72 73 6f 6e 20 56 41 4c 55 45 53 28  O person VALUES(
1160: 27 6c 61 6b 65 2d 61 70 74 73 27 2c 20 27 74 6f  'lake-apts', 'to
1170: 6d 27 2c 20 4e 55 4c 4c 29 3b 0a 20 20 20 20 49  m', NULL);.    I
1180: 4e 53 45 52 54 20 49 4e 54 4f 20 70 65 72 73 6f  NSERT INTO perso
1190: 6e 20 56 41 4c 55 45 53 28 27 61 63 6f 72 6e 27  n VALUES('acorn'
11a0: 2c 20 27 68 69 64 65 6f 27 2c 20 27 43 51 42 34  , 'hideo', 'CQB4
11b0: 32 31 27 29 3b 0a 20 20 20 20 0a 20 20 20 20 53  21');.    .    S
11c0: 45 4c 45 43 54 20 0a 20 20 20 20 20 20 6f 72 67  ELECT .      org
11d0: 5f 69 64 2c 20 0a 20 20 20 20 20 20 63 6f 75 6e  _id, .      coun
11e0: 74 28 28 4e 4f 54 20 28 6f 72 67 5f 69 64 20 49  t((NOT (org_id I
11f0: 53 20 4e 55 4c 4c 29 29 20 41 4e 44 20 28 4e 4f  S NULL)) AND (NO
1200: 54 20 28 6e 69 63 6b 6e 61 6d 65 20 49 53 20 4e  T (nickname IS N
1210: 55 4c 4c 29 29 29 0a 20 20 20 20 46 52 4f 4d 20  ULL))).    FROM 
1220: 70 65 72 73 6f 6e 20 0a 20 20 20 20 57 48 45 52  person .    WHER
1230: 45 20 28 43 41 53 45 20 57 48 45 4e 20 6c 69 63  E (CASE WHEN lic
1240: 65 6e 73 65 20 21 3d 20 27 27 20 54 48 45 4e 20  ense != '' THEN 
1250: 31 20 45 4c 53 45 20 30 20 45 4e 44 29 0a 20 20  1 ELSE 0 END).  
1260: 20 20 47 52 4f 55 50 20 42 59 20 31 3b 0a 20 20    GROUP BY 1;.  
1270: 7d 0a 7d 20 7b 61 63 6f 72 6e 20 31 20 6c 61 6b  }.} {acorn 1 lak
1280: 65 73 69 64 65 20 31 20 6d 65 79 65 72 73 20 33  eside 1 meyers 3
1290: 20 73 6d 69 74 68 20 32 7d 0a 64 6f 5f 74 65 73   smith 2}.do_tes
12a0: 74 20 73 65 6c 65 63 74 43 2d 33 2e 32 20 7b 0a  t selectC-3.2 {.
12b0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
12c0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 32 28  CREATE TABLE t2(
12d0: 61 20 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 62  a PRIMARY KEY, b
12e0: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
12f0: 54 4f 20 74 32 20 56 41 4c 55 45 53 28 27 61 62  TO t2 VALUES('ab
1300: 63 27 2c 20 27 78 78 78 27 29 3b 0a 20 20 20 20  c', 'xxx');.    
1310: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 20 56  INSERT INTO t2 V
1320: 41 4c 55 45 53 28 27 64 65 66 27 2c 20 27 79 79  ALUES('def', 'yy
1330: 79 27 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20  y');.    SELECT 
1340: 61 2c 20 6d 61 78 28 62 20 7c 7c 20 61 29 20 46  a, max(b || a) F
1350: 52 4f 4d 20 74 32 20 57 48 45 52 45 20 28 62 7c  ROM t2 WHERE (b|
1360: 7c 62 7c 7c 62 29 21 3d 27 76 61 6c 75 65 27 20  |b||b)!='value' 
1370: 47 52 4f 55 50 20 42 59 20 61 3b 0a 20 20 7d 0a  GROUP BY a;.  }.
1380: 7d 20 7b 61 62 63 20 78 78 78 61 62 63 20 64 65  } {abc xxxabc de
1390: 66 20 79 79 79 64 65 66 7d 0a 64 6f 5f 74 65 73  f yyydef}.do_tes
13a0: 74 20 73 65 6c 65 63 74 43 2d 33 2e 33 20 7b 0a  t selectC-3.3 {.
13b0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
13c0: 53 45 4c 45 43 54 20 62 2c 20 6d 61 78 28 61 20  SELECT b, max(a 
13d0: 7c 7c 20 62 29 20 46 52 4f 4d 20 74 32 20 57 48  || b) FROM t2 WH
13e0: 45 52 45 20 28 62 7c 7c 62 7c 7c 62 29 21 3d 27  ERE (b||b||b)!='
13f0: 76 61 6c 75 65 27 20 47 52 4f 55 50 20 42 59 20  value' GROUP BY 
1400: 61 3b 0a 20 20 7d 0a 7d 20 7b 78 78 78 20 61 62  a;.  }.} {xxx ab
1410: 63 78 78 78 20 79 79 79 20 64 65 66 79 79 79 7d  cxxx yyy defyyy}
1420: 0a 0a 0a 70 72 6f 63 20 75 64 66 20 7b 7d 20 7b  ...proc udf {} {
1430: 20 69 6e 63 72 20 3a 3a 75 64 66 20 7d 0a 73 65   incr ::udf }.se
1440: 74 20 3a 3a 75 64 66 20 30 0a 64 62 20 66 75 6e  t ::udf 0.db fun
1450: 63 74 69 6f 6e 20 75 64 66 20 75 64 66 0a 0a 64  ction udf udf..d
1460: 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 73  o_execsql_test s
1470: 65 6c 65 63 74 43 2d 34 2e 31 20 7b 0a 20 20 63  electC-4.1 {.  c
1480: 72 65 61 74 65 20 74 61 62 6c 65 20 74 5f 64 69  reate table t_di
1490: 73 74 69 6e 63 74 5f 62 75 67 20 28 61 2c 20 62  stinct_bug (a, b
14a0: 2c 20 63 29 3b 0a 20 20 69 6e 73 65 72 74 20 69  , c);.  insert i
14b0: 6e 74 6f 20 74 5f 64 69 73 74 69 6e 63 74 5f 62  nto t_distinct_b
14c0: 75 67 20 76 61 6c 75 65 73 20 28 27 31 27 2c 20  ug values ('1', 
14d0: 27 31 27 2c 20 27 61 27 29 3b 0a 20 20 69 6e 73  '1', 'a');.  ins
14e0: 65 72 74 20 69 6e 74 6f 20 74 5f 64 69 73 74 69  ert into t_disti
14f0: 6e 63 74 5f 62 75 67 20 76 61 6c 75 65 73 20 28  nct_bug values (
1500: 27 31 27 2c 20 27 32 27 2c 20 27 62 27 29 3b 0a  '1', '2', 'b');.
1510: 20 20 69 6e 73 65 72 74 20 69 6e 74 6f 20 74 5f    insert into t_
1520: 64 69 73 74 69 6e 63 74 5f 62 75 67 20 76 61 6c  distinct_bug val
1530: 75 65 73 20 28 27 31 27 2c 20 27 33 27 2c 20 27  ues ('1', '3', '
1540: 63 27 29 3b 0a 20 20 69 6e 73 65 72 74 20 69 6e  c');.  insert in
1550: 74 6f 20 74 5f 64 69 73 74 69 6e 63 74 5f 62 75  to t_distinct_bu
1560: 67 20 76 61 6c 75 65 73 20 28 27 31 27 2c 20 27  g values ('1', '
1570: 31 27 2c 20 27 64 27 29 3b 0a 20 20 69 6e 73 65  1', 'd');.  inse
1580: 72 74 20 69 6e 74 6f 20 74 5f 64 69 73 74 69 6e  rt into t_distin
1590: 63 74 5f 62 75 67 20 76 61 6c 75 65 73 20 28 27  ct_bug values ('
15a0: 31 27 2c 20 27 32 27 2c 20 27 65 27 29 3b 0a 20  1', '2', 'e');. 
15b0: 20 69 6e 73 65 72 74 20 69 6e 74 6f 20 74 5f 64   insert into t_d
15c0: 69 73 74 69 6e 63 74 5f 62 75 67 20 76 61 6c 75  istinct_bug valu
15d0: 65 73 20 28 27 31 27 2c 20 27 33 27 2c 20 27 66  es ('1', '3', 'f
15e0: 27 29 3b 0a 7d 20 7b 7d 0a 0a 64 6f 5f 65 78 65  ');.} {}..do_exe
15f0: 63 73 71 6c 5f 74 65 73 74 20 73 65 6c 65 63 74  csql_test select
1600: 43 2d 34 2e 32 20 7b 0a 20 20 73 65 6c 65 63 74  C-4.2 {.  select
1610: 20 61 20 66 72 6f 6d 20 28 73 65 6c 65 63 74 20   a from (select 
1620: 64 69 73 74 69 6e 63 74 20 61 2c 20 62 20 66 72  distinct a, b fr
1630: 6f 6d 20 74 5f 64 69 73 74 69 6e 63 74 5f 62 75  om t_distinct_bu
1640: 67 29 0a 7d 20 7b 31 20 31 20 31 7d 0a 0a 64 6f  g).} {1 1 1}..do
1650: 5f 65 78 65 63 73 71 6c 5f 74 65 73 74 20 73 65  _execsql_test se
1660: 6c 65 63 74 43 2d 34 2e 33 20 7b 0a 20 20 73 65  lectC-4.3 {.  se
1670: 6c 65 63 74 20 61 2c 20 75 64 66 28 29 20 66 72  lect a, udf() fr
1680: 6f 6d 20 28 73 65 6c 65 63 74 20 64 69 73 74 69  om (select disti
1690: 6e 63 74 20 61 2c 20 62 20 66 72 6f 6d 20 74 5f  nct a, b from t_
16a0: 64 69 73 74 69 6e 63 74 5f 62 75 67 29 0a 7d 20  distinct_bug).} 
16b0: 7b 31 20 31 20 31 20 32 20 31 20 33 7d 0a 0a 23  {1 1 1 2 1 3}..#
16c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
16d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
16e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
16f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 54 65 73 74  ---------.# Test
1710: 20 74 68 61 74 20 74 68 65 20 70 72 6f 62 6c 65   that the proble
1720: 6d 20 69 6e 20 74 69 63 6b 65 74 20 23 31 39 30  m in ticket #190
1730: 63 32 35 30 37 20 68 61 73 20 62 65 65 6e 20 66  c2507 has been f
1740: 69 78 65 64 2e 0a 23 0a 64 6f 5f 65 78 65 63 73  ixed..#.do_execs
1750: 71 6c 5f 74 65 73 74 20 35 2e 30 20 7b 0a 20 20  ql_test 5.0 {.  
1760: 43 52 45 41 54 45 20 54 41 42 4c 45 20 78 31 28  CREATE TABLE x1(
1770: 61 29 3b 0a 20 20 43 52 45 41 54 45 20 54 41 42  a);.  CREATE TAB
1780: 4c 45 20 78 32 28 62 29 3b 0a 20 20 43 52 45 41  LE x2(b);.  CREA
1790: 54 45 20 54 41 42 4c 45 20 78 33 28 63 29 3b 0a  TE TABLE x3(c);.
17a0: 20 20 43 52 45 41 54 45 20 56 49 45 57 20 76 76    CREATE VIEW vv
17b0: 76 20 41 53 20 53 45 4c 45 43 54 20 62 20 46 52  v AS SELECT b FR
17c0: 4f 4d 20 78 32 20 4f 52 44 45 52 20 42 59 20 31  OM x2 ORDER BY 1
17d0: 3b 0a 0a 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  ;..  INSERT INTO
17e0: 20 78 31 20 56 41 4c 55 45 53 28 27 61 27 29 2c   x1 VALUES('a'),
17f0: 20 28 27 62 27 29 3b 0a 20 20 49 4e 53 45 52 54   ('b');.  INSERT
1800: 20 49 4e 54 4f 20 78 32 20 56 41 4c 55 45 53 28   INTO x2 VALUES(
1810: 32 32 29 2c 20 28 32 33 29 2c 20 28 32 35 29 2c  22), (23), (25),
1820: 20 28 32 34 29 2c 20 28 32 31 29 3b 0a 20 20 49   (24), (21);.  I
1830: 4e 53 45 52 54 20 49 4e 54 4f 20 78 33 20 56 41  NSERT INTO x3 VA
1840: 4c 55 45 53 28 33 30 32 29 2c 20 28 33 30 33 29  LUES(302), (303)
1850: 2c 20 28 33 30 31 29 3b 0a 7d 0a 0a 64 6f 5f 65  , (301);.}..do_e
1860: 78 65 63 73 71 6c 5f 74 65 73 74 20 35 2e 31 20  xecsql_test 5.1 
1870: 7b 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45  {.  CREATE TABLE
1880: 20 78 34 20 41 53 20 53 45 4c 45 43 54 20 62 20   x4 AS SELECT b 
1890: 46 52 4f 4d 20 76 76 76 20 55 4e 49 4f 4e 20 41  FROM vvv UNION A
18a0: 4c 4c 20 53 45 4c 45 43 54 20 63 20 66 72 6f 6d  LL SELECT c from
18b0: 20 78 33 3b 0a 20 20 53 45 4c 45 43 54 20 2a 20   x3;.  SELECT * 
18c0: 46 52 4f 4d 20 78 34 3b 0a 7d 20 7b 32 31 20 32  FROM x4;.} {21 2
18d0: 32 20 32 33 20 32 34 20 32 35 20 33 30 32 20 33  2 23 24 25 302 3
18e0: 30 33 20 33 30 31 7d 0a 0a 64 6f 5f 65 78 65 63  03 301}..do_exec
18f0: 73 71 6c 5f 74 65 73 74 20 35 2e 32 20 7b 0a 20  sql_test 5.2 {. 
1900: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78   SELECT * FROM x
1910: 31 2c 20 78 34 0a 7d 20 7b 0a 20 20 61 20 32 31  1, x4.} {.  a 21
1920: 20 61 20 32 32 20 61 20 32 33 20 61 20 32 34 20   a 22 a 23 a 24 
1930: 61 20 32 35 20 61 20 33 30 32 20 61 20 33 30 33  a 25 a 302 a 303
1940: 20 61 20 33 30 31 0a 20 20 62 20 32 31 20 62 20   a 301.  b 21 b 
1950: 32 32 20 62 20 32 33 20 62 20 32 34 20 62 20 32  22 b 23 b 24 b 2
1960: 35 20 62 20 33 30 32 20 62 20 33 30 33 20 62 20  5 b 302 b 303 b 
1970: 33 30 31 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71  301.}..do_execsq
1980: 6c 5f 74 65 73 74 20 35 2e 33 20 7b 0a 20 20 53  l_test 5.3 {.  S
1990: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 78 31 2c  ELECT * FROM x1,
19a0: 20 28 53 45 4c 45 43 54 20 62 20 46 52 4f 4d 20   (SELECT b FROM 
19b0: 76 76 76 20 55 4e 49 4f 4e 20 41 4c 4c 20 53 45  vvv UNION ALL SE
19c0: 4c 45 43 54 20 63 20 66 72 6f 6d 20 78 33 29 3b  LECT c from x3);
19d0: 0a 7d 20 7b 0a 20 20 61 20 32 31 20 61 20 32 32  .} {.  a 21 a 22
19e0: 20 61 20 32 33 20 61 20 32 34 20 61 20 32 35 20   a 23 a 24 a 25 
19f0: 61 20 33 30 32 20 61 20 33 30 33 20 61 20 33 30  a 302 a 303 a 30
1a00: 31 0a 20 20 62 20 32 31 20 62 20 32 32 20 62 20  1.  b 21 b 22 b 
1a10: 32 33 20 62 20 32 34 20 62 20 32 35 20 62 20 33  23 b 24 b 25 b 3
1a20: 30 32 20 62 20 33 30 33 20 62 20 33 30 31 0a 7d  02 b 303 b 301.}
1a30: 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a        ..finish_test.