/ Hex Artifact Content
Login

Artifact ad700a2a1c325a23a7206ad4d189e33917de526f:


0000: 23 20 32 30 30 31 20 53 65 70 74 65 6d 62 65 72  # 2001 September
0010: 20 31 35 0a 23 0a 23 20 54 68 65 20 61 75 74 68   15.#.# 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 20 54 68 65 0a 23 20 66 6f 63  rary.  The.# foc
01b0: 75 73 20 6f 66 20 74 68 69 73 20 66 69 6c 65 20  us of this file 
01c0: 69 73 20 74 65 73 74 69 6e 67 20 74 68 65 20 53  is testing the S
01d0: 45 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 2e  ELECT statement.
01e0: 0a 23 0a 23 20 24 49 64 3a 20 73 65 6c 65 63 74  .#.# $Id: select
01f0: 31 2e 74 65 73 74 2c 76 20 31 2e 34 32 20 32 30  1.test,v 1.42 20
0200: 30 35 2f 30 31 2f 32 31 20 30 34 3a 32 35 3a 34  05/01/21 04:25:4
0210: 37 20 64 61 6e 69 65 6c 6b 31 39 37 37 20 45 78  7 danielk1977 Ex
0220: 70 20 24 0a 0a 73 65 74 20 74 65 73 74 64 69 72  p $..set testdir
0230: 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24   [file dirname $
0240: 61 72 67 76 30 5d 0a 73 6f 75 72 63 65 20 24 74  argv0].source $t
0250: 65 73 74 64 69 72 2f 74 65 73 74 65 72 2e 74 63  estdir/tester.tc
0260: 6c 0a 0a 23 20 54 72 79 20 74 6f 20 73 65 6c 65  l..# Try to sele
0270: 63 74 20 6f 6e 20 61 20 6e 6f 6e 2d 65 78 69 73  ct on a non-exis
0280: 74 61 6e 74 20 74 61 62 6c 65 2e 0a 23 0a 64 6f  tant table..#.do
0290: 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 31 2e  _test select1-1.
02a0: 31 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74  1 {.  set v [cat
02b0: 63 68 20 7b 65 78 65 63 73 71 6c 20 7b 53 45 4c  ch {execsql {SEL
02c0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 65 73 74 31  ECT * FROM test1
02d0: 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e  }} msg].  lappen
02e0: 64 20 76 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 6e  d v $msg.} {1 {n
02f0: 6f 20 73 75 63 68 20 74 61 62 6c 65 3a 20 74 65  o such table: te
0300: 73 74 31 7d 7d 0a 0a 65 78 65 63 73 71 6c 20 7b  st1}}..execsql {
0310: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 65 73  CREATE TABLE tes
0320: 74 31 28 66 31 20 69 6e 74 2c 20 66 32 20 69 6e  t1(f1 int, f2 in
0330: 74 29 7d 0a 0a 64 6f 5f 74 65 73 74 20 73 65 6c  t)}..do_test sel
0340: 65 63 74 31 2d 31 2e 32 20 7b 0a 20 20 73 65 74  ect1-1.2 {.  set
0350: 20 76 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73   v [catch {execs
0360: 71 6c 20 7b 53 45 4c 45 43 54 20 2a 20 46 52 4f  ql {SELECT * FRO
0370: 4d 20 74 65 73 74 31 2c 20 74 65 73 74 32 7d 7d  M test1, test2}}
0380: 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20   msg].  lappend 
0390: 76 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 6e 6f 20  v $msg.} {1 {no 
03a0: 73 75 63 68 20 74 61 62 6c 65 3a 20 74 65 73 74  such table: test
03b0: 32 7d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65  2}}.do_test sele
03c0: 63 74 31 2d 31 2e 33 20 7b 0a 20 20 73 65 74 20  ct1-1.3 {.  set 
03d0: 76 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73 71  v [catch {execsq
03e0: 6c 20 7b 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  l {SELECT * FROM
03f0: 20 74 65 73 74 32 2c 20 74 65 73 74 31 7d 7d 20   test2, test1}} 
0400: 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76  msg].  lappend v
0410: 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 6e 6f 20 73   $msg.} {1 {no s
0420: 75 63 68 20 74 61 62 6c 65 3a 20 74 65 73 74 32  uch table: test2
0430: 7d 7d 0a 0a 65 78 65 63 73 71 6c 20 7b 49 4e 53  }}..execsql {INS
0440: 45 52 54 20 49 4e 54 4f 20 74 65 73 74 31 28 66  ERT INTO test1(f
0450: 31 2c 66 32 29 20 56 41 4c 55 45 53 28 31 31 2c  1,f2) VALUES(11,
0460: 32 32 29 7d 0a 0a 0a 23 20 4d 61 6b 65 20 73 75  22)}...# Make su
0470: 72 65 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 61  re the columns a
0480: 72 65 20 65 78 74 72 61 63 74 65 64 20 63 6f 72  re extracted cor
0490: 72 65 63 74 6c 79 2e 0a 23 0a 64 6f 5f 74 65 73  rectly..#.do_tes
04a0: 74 20 73 65 6c 65 63 74 31 2d 31 2e 34 20 7b 0a  t select1-1.4 {.
04b0: 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43    execsql {SELEC
04c0: 54 20 66 31 20 46 52 4f 4d 20 74 65 73 74 31 7d  T f1 FROM test1}
04d0: 0a 7d 20 7b 31 31 7d 0a 64 6f 5f 74 65 73 74 20  .} {11}.do_test 
04e0: 73 65 6c 65 63 74 31 2d 31 2e 35 20 7b 0a 20 20  select1-1.5 {.  
04f0: 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20  execsql {SELECT 
0500: 66 32 20 46 52 4f 4d 20 74 65 73 74 31 7d 0a 7d  f2 FROM test1}.}
0510: 20 7b 32 32 7d 0a 64 6f 5f 74 65 73 74 20 73 65   {22}.do_test se
0520: 6c 65 63 74 31 2d 31 2e 36 20 7b 0a 20 20 65 78  lect1-1.6 {.  ex
0530: 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 66 32  ecsql {SELECT f2
0540: 2c 20 66 31 20 46 52 4f 4d 20 74 65 73 74 31 7d  , f1 FROM test1}
0550: 0a 7d 20 7b 32 32 20 31 31 7d 0a 64 6f 5f 74 65  .} {22 11}.do_te
0560: 73 74 20 73 65 6c 65 63 74 31 2d 31 2e 37 20 7b  st select1-1.7 {
0570: 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45  .  execsql {SELE
0580: 43 54 20 66 31 2c 20 66 32 20 46 52 4f 4d 20 74  CT f1, f2 FROM t
0590: 65 73 74 31 7d 0a 7d 20 7b 31 31 20 32 32 7d 0a  est1}.} {11 22}.
05a0: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d  do_test select1-
05b0: 31 2e 38 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  1.8 {.  execsql 
05c0: 7b 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  {SELECT * FROM t
05d0: 65 73 74 31 7d 0a 7d 20 7b 31 31 20 32 32 7d 0a  est1}.} {11 22}.
05e0: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d  do_test select1-
05f0: 31 2e 38 2e 31 20 7b 0a 20 20 65 78 65 63 73 71  1.8.1 {.  execsq
0600: 6c 20 7b 53 45 4c 45 43 54 20 2a 2c 20 2a 20 46  l {SELECT *, * F
0610: 52 4f 4d 20 74 65 73 74 31 7d 0a 7d 20 7b 31 31  ROM test1}.} {11
0620: 20 32 32 20 31 31 20 32 32 7d 0a 64 6f 5f 74 65   22 11 22}.do_te
0630: 73 74 20 73 65 6c 65 63 74 31 2d 31 2e 38 2e 32  st select1-1.8.2
0640: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45   {.  execsql {SE
0650: 4c 45 43 54 20 2a 2c 20 6d 69 6e 28 66 31 2c 66  LECT *, min(f1,f
0660: 32 29 2c 20 6d 61 78 28 66 31 2c 66 32 29 20 46  2), max(f1,f2) F
0670: 52 4f 4d 20 74 65 73 74 31 7d 0a 7d 20 7b 31 31  ROM test1}.} {11
0680: 20 32 32 20 31 31 20 32 32 7d 0a 64 6f 5f 74 65   22 11 22}.do_te
0690: 73 74 20 73 65 6c 65 63 74 31 2d 31 2e 38 2e 33  st select1-1.8.3
06a0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45   {.  execsql {SE
06b0: 4c 45 43 54 20 27 6f 6e 65 27 2c 20 2a 2c 20 27  LECT 'one', *, '
06c0: 74 77 6f 27 2c 20 2a 20 46 52 4f 4d 20 74 65 73  two', * FROM tes
06d0: 74 31 7d 0a 7d 20 7b 6f 6e 65 20 31 31 20 32 32  t1}.} {one 11 22
06e0: 20 74 77 6f 20 31 31 20 32 32 7d 0a 0a 65 78 65   two 11 22}..exe
06f0: 63 73 71 6c 20 7b 43 52 45 41 54 45 20 54 41 42  csql {CREATE TAB
0700: 4c 45 20 74 65 73 74 32 28 72 31 20 72 65 61 6c  LE test2(r1 real
0710: 2c 20 72 32 20 72 65 61 6c 29 7d 0a 65 78 65 63  , r2 real)}.exec
0720: 73 71 6c 20 7b 49 4e 53 45 52 54 20 49 4e 54 4f  sql {INSERT INTO
0730: 20 74 65 73 74 32 28 72 31 2c 72 32 29 20 56 41   test2(r1,r2) VA
0740: 4c 55 45 53 28 31 2e 31 2c 32 2e 32 29 7d 0a 0a  LUES(1.1,2.2)}..
0750: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d  do_test select1-
0760: 31 2e 39 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  1.9 {.  execsql 
0770: 7b 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  {SELECT * FROM t
0780: 65 73 74 31 2c 20 74 65 73 74 32 7d 0a 7d 20 7b  est1, test2}.} {
0790: 31 31 20 32 32 20 31 2e 31 20 32 2e 32 7d 0a 64  11 22 1.1 2.2}.d
07a0: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 31  o_test select1-1
07b0: 2e 39 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  .9.1 {.  execsql
07c0: 20 7b 53 45 4c 45 43 54 20 2a 2c 20 27 68 69 27   {SELECT *, 'hi'
07d0: 20 46 52 4f 4d 20 74 65 73 74 31 2c 20 74 65 73   FROM test1, tes
07e0: 74 32 7d 0a 7d 20 7b 31 31 20 32 32 20 31 2e 31  t2}.} {11 22 1.1
07f0: 20 32 2e 32 20 68 69 7d 0a 64 6f 5f 74 65 73 74   2.2 hi}.do_test
0800: 20 73 65 6c 65 63 74 31 2d 31 2e 39 2e 32 20 7b   select1-1.9.2 {
0810: 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45  .  execsql {SELE
0820: 43 54 20 27 6f 6e 65 27 2c 20 2a 2c 20 27 74 77  CT 'one', *, 'tw
0830: 6f 27 2c 20 2a 20 46 52 4f 4d 20 74 65 73 74 31  o', * FROM test1
0840: 2c 20 74 65 73 74 32 7d 0a 7d 20 7b 6f 6e 65 20  , test2}.} {one 
0850: 31 31 20 32 32 20 31 2e 31 20 32 2e 32 20 74 77  11 22 1.1 2.2 tw
0860: 6f 20 31 31 20 32 32 20 31 2e 31 20 32 2e 32 7d  o 11 22 1.1 2.2}
0870: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31  .do_test select1
0880: 2d 31 2e 31 30 20 7b 0a 20 20 65 78 65 63 73 71  -1.10 {.  execsq
0890: 6c 20 7b 53 45 4c 45 43 54 20 74 65 73 74 31 2e  l {SELECT test1.
08a0: 66 31 2c 20 74 65 73 74 32 2e 72 31 20 46 52 4f  f1, test2.r1 FRO
08b0: 4d 20 74 65 73 74 31 2c 20 74 65 73 74 32 7d 0a  M test1, test2}.
08c0: 7d 20 7b 31 31 20 31 2e 31 7d 0a 64 6f 5f 74 65  } {11 1.1}.do_te
08d0: 73 74 20 73 65 6c 65 63 74 31 2d 31 2e 31 31 20  st select1-1.11 
08e0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c  {.  execsql {SEL
08f0: 45 43 54 20 74 65 73 74 31 2e 66 31 2c 20 74 65  ECT test1.f1, te
0900: 73 74 32 2e 72 31 20 46 52 4f 4d 20 74 65 73 74  st2.r1 FROM test
0910: 32 2c 20 74 65 73 74 31 7d 0a 7d 20 7b 31 31 20  2, test1}.} {11 
0920: 31 2e 31 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  1.1}.do_test sel
0930: 65 63 74 31 2d 31 2e 31 31 2e 31 20 7b 0a 20 20  ect1-1.11.1 {.  
0940: 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20  execsql {SELECT 
0950: 2a 20 46 52 4f 4d 20 74 65 73 74 32 2c 20 74 65  * FROM test2, te
0960: 73 74 31 7d 0a 7d 20 7b 31 2e 31 20 32 2e 32 20  st1}.} {1.1 2.2 
0970: 31 31 20 32 32 7d 0a 64 6f 5f 74 65 73 74 20 73  11 22}.do_test s
0980: 65 6c 65 63 74 31 2d 31 2e 31 31 2e 32 20 7b 0a  elect1-1.11.2 {.
0990: 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43    execsql {SELEC
09a0: 54 20 2a 20 46 52 4f 4d 20 74 65 73 74 31 20 41  T * FROM test1 A
09b0: 53 20 61 2c 20 74 65 73 74 31 20 41 53 20 62 7d  S a, test1 AS b}
09c0: 0a 7d 20 7b 31 31 20 32 32 20 31 31 20 32 32 7d  .} {11 22 11 22}
09d0: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31  .do_test select1
09e0: 2d 31 2e 31 32 20 7b 0a 20 20 65 78 65 63 73 71  -1.12 {.  execsq
09f0: 6c 20 7b 53 45 4c 45 43 54 20 6d 61 78 28 74 65  l {SELECT max(te
0a00: 73 74 31 2e 66 31 2c 74 65 73 74 32 2e 72 31 29  st1.f1,test2.r1)
0a10: 2c 20 6d 69 6e 28 74 65 73 74 31 2e 66 32 2c 74  , min(test1.f2,t
0a20: 65 73 74 32 2e 72 32 29 0a 20 20 20 20 20 20 20  est2.r2).       
0a30: 20 20 20 20 46 52 4f 4d 20 74 65 73 74 32 2c 20      FROM test2, 
0a40: 74 65 73 74 31 7d 0a 7d 20 7b 31 31 20 32 2e 32  test1}.} {11 2.2
0a50: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
0a60: 31 2d 31 2e 31 33 20 7b 0a 20 20 65 78 65 63 73  1-1.13 {.  execs
0a70: 71 6c 20 7b 53 45 4c 45 43 54 20 6d 69 6e 28 74  ql {SELECT min(t
0a80: 65 73 74 31 2e 66 31 2c 74 65 73 74 32 2e 72 31  est1.f1,test2.r1
0a90: 29 2c 20 6d 61 78 28 74 65 73 74 31 2e 66 32 2c  ), max(test1.f2,
0aa0: 74 65 73 74 32 2e 72 32 29 0a 20 20 20 20 20 20  test2.r2).      
0ab0: 20 20 20 20 20 46 52 4f 4d 20 74 65 73 74 31 2c       FROM test1,
0ac0: 20 74 65 73 74 32 7d 0a 7d 20 7b 31 2e 31 20 32   test2}.} {1.1 2
0ad0: 32 7d 0a 0a 73 65 74 20 6c 6f 6e 67 20 7b 54 68  2}..set long {Th
0ae0: 69 73 20 69 73 20 61 20 73 74 72 69 6e 67 20 74  is is a string t
0af0: 68 61 74 20 69 73 20 74 6f 6f 20 62 69 67 20 74  hat is too big t
0b00: 6f 20 66 69 74 20 69 6e 73 69 64 65 20 61 20 4e  o fit inside a N
0b10: 42 46 53 20 62 75 66 66 65 72 7d 0a 64 6f 5f 74  BFS buffer}.do_t
0b20: 65 73 74 20 73 65 6c 65 63 74 31 2d 32 2e 30 20  est select1-2.0 
0b30: 7b 0a 20 20 65 78 65 63 73 71 6c 20 22 0a 20 20  {.  execsql ".  
0b40: 20 20 44 52 4f 50 20 54 41 42 4c 45 20 74 65 73    DROP TABLE tes
0b50: 74 32 3b 0a 20 20 20 20 44 45 4c 45 54 45 20 46  t2;.    DELETE F
0b60: 52 4f 4d 20 74 65 73 74 31 3b 0a 20 20 20 20 49  ROM test1;.    I
0b70: 4e 53 45 52 54 20 49 4e 54 4f 20 74 65 73 74 31  NSERT INTO test1
0b80: 20 56 41 4c 55 45 53 28 31 31 2c 32 32 29 3b 0a   VALUES(11,22);.
0b90: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
0ba0: 74 65 73 74 31 20 56 41 4c 55 45 53 28 33 33 2c  test1 VALUES(33,
0bb0: 34 34 29 3b 0a 20 20 20 20 43 52 45 41 54 45 20  44);.    CREATE 
0bc0: 54 41 42 4c 45 20 74 33 28 61 2c 62 29 3b 0a 20  TABLE t3(a,b);. 
0bd0: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
0be0: 33 20 56 41 4c 55 45 53 28 27 61 62 63 27 2c 4e  3 VALUES('abc',N
0bf0: 55 4c 4c 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  ULL);.    INSERT
0c00: 20 49 4e 54 4f 20 74 33 20 56 41 4c 55 45 53 28   INTO t3 VALUES(
0c10: 4e 55 4c 4c 2c 27 78 79 7a 27 29 3b 0a 20 20 20  NULL,'xyz');.   
0c20: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20   INSERT INTO t3 
0c30: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 65  SELECT * FROM te
0c40: 73 74 31 3b 0a 20 20 20 20 43 52 45 41 54 45 20  st1;.    CREATE 
0c50: 54 41 42 4c 45 20 74 34 28 61 2c 62 29 3b 0a 20  TABLE t4(a,b);. 
0c60: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
0c70: 34 20 56 41 4c 55 45 53 28 4e 55 4c 4c 2c 27 24  4 VALUES(NULL,'$
0c80: 6c 6f 6e 67 27 29 3b 0a 20 20 20 20 53 45 4c 45  long');.    SELE
0c90: 43 54 20 2a 20 46 52 4f 4d 20 74 33 3b 0a 20 20  CT * FROM t3;.  
0ca0: 22 0a 7d 20 7b 61 62 63 20 7b 7d 20 7b 7d 20 78  ".} {abc {} {} x
0cb0: 79 7a 20 31 31 20 32 32 20 33 33 20 34 34 7d 0a  yz 11 22 33 44}.
0cc0: 0a 23 20 45 72 72 6f 72 20 6d 65 73 73 67 65 73  .# Error messges
0cd0: 20 66 72 6f 6d 20 73 71 6c 69 74 65 45 78 70 72   from sqliteExpr
0ce0: 43 68 65 63 6b 0a 23 0a 64 6f 5f 74 65 73 74 20  Check.#.do_test 
0cf0: 73 65 6c 65 63 74 31 2d 32 2e 31 20 7b 0a 20 20  select1-2.1 {.  
0d00: 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78  set v [catch {ex
0d10: 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 63 6f  ecsql {SELECT co
0d20: 75 6e 74 28 66 31 2c 66 32 29 20 46 52 4f 4d 20  unt(f1,f2) FROM 
0d30: 74 65 73 74 31 7d 7d 20 6d 73 67 5d 0a 20 20 6c  test1}} msg].  l
0d40: 61 70 70 65 6e 64 20 76 20 24 6d 73 67 0a 7d 20  append v $msg.} 
0d50: 7b 31 20 7b 77 72 6f 6e 67 20 6e 75 6d 62 65 72  {1 {wrong number
0d60: 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 74 6f   of arguments to
0d70: 20 66 75 6e 63 74 69 6f 6e 20 63 6f 75 6e 74 28   function count(
0d80: 29 7d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65  )}}.do_test sele
0d90: 63 74 31 2d 32 2e 32 20 7b 0a 20 20 73 65 74 20  ct1-2.2 {.  set 
0da0: 76 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73 71  v [catch {execsq
0db0: 6c 20 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28  l {SELECT count(
0dc0: 66 31 29 20 46 52 4f 4d 20 74 65 73 74 31 7d 7d  f1) FROM test1}}
0dd0: 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20   msg].  lappend 
0de0: 76 20 24 6d 73 67 0a 7d 20 7b 30 20 32 7d 0a 64  v $msg.} {0 2}.d
0df0: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 32  o_test select1-2
0e00: 2e 33 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61  .3 {.  set v [ca
0e10: 74 63 68 20 7b 65 78 65 63 73 71 6c 20 7b 53 45  tch {execsql {SE
0e20: 4c 45 43 54 20 43 6f 75 6e 74 28 29 20 46 52 4f  LECT Count() FRO
0e30: 4d 20 74 65 73 74 31 7d 7d 20 6d 73 67 5d 0a 20  M test1}} msg]. 
0e40: 20 6c 61 70 70 65 6e 64 20 76 20 24 6d 73 67 0a   lappend v $msg.
0e50: 7d 20 7b 30 20 32 7d 0a 64 6f 5f 74 65 73 74 20  } {0 2}.do_test 
0e60: 73 65 6c 65 63 74 31 2d 32 2e 34 20 7b 0a 20 20  select1-2.4 {.  
0e70: 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78  set v [catch {ex
0e80: 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 43 4f  ecsql {SELECT CO
0e90: 55 4e 54 28 2a 29 20 46 52 4f 4d 20 74 65 73 74  UNT(*) FROM test
0ea0: 31 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65  1}} msg].  lappe
0eb0: 6e 64 20 76 20 24 6d 73 67 0a 7d 20 7b 30 20 32  nd v $msg.} {0 2
0ec0: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
0ed0: 31 2d 32 2e 35 20 7b 0a 20 20 73 65 74 20 76 20  1-2.5 {.  set v 
0ee0: 5b 63 61 74 63 68 20 7b 65 78 65 63 73 71 6c 20  [catch {execsql 
0ef0: 7b 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 2a 29  {SELECT COUNT(*)
0f00: 2b 31 20 46 52 4f 4d 20 74 65 73 74 31 7d 7d 20  +1 FROM test1}} 
0f10: 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76  msg].  lappend v
0f20: 20 24 6d 73 67 0a 7d 20 7b 30 20 33 7d 0a 64 6f   $msg.} {0 3}.do
0f30: 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 32 2e  _test select1-2.
0f40: 35 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  5.1 {.  execsql 
0f50: 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29  {SELECT count(*)
0f60: 2c 63 6f 75 6e 74 28 61 29 2c 63 6f 75 6e 74 28  ,count(a),count(
0f70: 62 29 20 46 52 4f 4d 20 74 33 7d 0a 7d 20 7b 34  b) FROM t3}.} {4
0f80: 20 33 20 33 7d 0a 64 6f 5f 74 65 73 74 20 73 65   3 3}.do_test se
0f90: 6c 65 63 74 31 2d 32 2e 35 2e 32 20 7b 0a 20 20  lect1-2.5.2 {.  
0fa0: 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20  execsql {SELECT 
0fb0: 63 6f 75 6e 74 28 2a 29 2c 63 6f 75 6e 74 28 61  count(*),count(a
0fc0: 29 2c 63 6f 75 6e 74 28 62 29 20 46 52 4f 4d 20  ),count(b) FROM 
0fd0: 74 34 7d 0a 7d 20 7b 31 20 30 20 31 7d 0a 64 6f  t4}.} {1 0 1}.do
0fe0: 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 32 2e  _test select1-2.
0ff0: 35 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  5.3 {.  execsql 
1000: 7b 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29  {SELECT count(*)
1010: 2c 63 6f 75 6e 74 28 61 29 2c 63 6f 75 6e 74 28  ,count(a),count(
1020: 62 29 20 46 52 4f 4d 20 74 34 20 57 48 45 52 45  b) FROM t4 WHERE
1030: 20 62 3d 35 7d 0a 7d 20 7b 30 20 30 20 30 7d 0a   b=5}.} {0 0 0}.
1040: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d  do_test select1-
1050: 32 2e 36 20 7b 0a 20 20 73 65 74 20 76 20 5b 63  2.6 {.  set v [c
1060: 61 74 63 68 20 7b 65 78 65 63 73 71 6c 20 7b 53  atch {execsql {S
1070: 45 4c 45 43 54 20 6d 69 6e 28 2a 29 20 46 52 4f  ELECT min(*) FRO
1080: 4d 20 74 65 73 74 31 7d 7d 20 6d 73 67 5d 0a 20  M test1}} msg]. 
1090: 20 6c 61 70 70 65 6e 64 20 76 20 24 6d 73 67 0a   lappend v $msg.
10a0: 7d 20 7b 31 20 7b 77 72 6f 6e 67 20 6e 75 6d 62  } {1 {wrong numb
10b0: 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20  er of arguments 
10c0: 74 6f 20 66 75 6e 63 74 69 6f 6e 20 6d 69 6e 28  to function min(
10d0: 29 7d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65  )}}.do_test sele
10e0: 63 74 31 2d 32 2e 37 20 7b 0a 20 20 73 65 74 20  ct1-2.7 {.  set 
10f0: 76 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73 71  v [catch {execsq
1100: 6c 20 7b 53 45 4c 45 43 54 20 4d 69 6e 28 66 31  l {SELECT Min(f1
1110: 29 20 46 52 4f 4d 20 74 65 73 74 31 7d 7d 20 6d  ) FROM test1}} m
1120: 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76 20  sg].  lappend v 
1130: 24 6d 73 67 0a 7d 20 7b 30 20 31 31 7d 0a 64 6f  $msg.} {0 11}.do
1140: 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 32 2e  _test select1-2.
1150: 38 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74  8 {.  set v [cat
1160: 63 68 20 7b 65 78 65 63 73 71 6c 20 7b 53 45 4c  ch {execsql {SEL
1170: 45 43 54 20 4d 49 4e 28 66 31 2c 66 32 29 20 46  ECT MIN(f1,f2) F
1180: 52 4f 4d 20 74 65 73 74 31 7d 7d 20 6d 73 67 5d  ROM test1}} msg]
1190: 0a 20 20 6c 61 70 70 65 6e 64 20 76 20 5b 6c 73  .  lappend v [ls
11a0: 6f 72 74 20 24 6d 73 67 5d 0a 7d 20 7b 30 20 7b  ort $msg].} {0 {
11b0: 31 31 20 33 33 7d 7d 0a 64 6f 5f 74 65 73 74 20  11 33}}.do_test 
11c0: 73 65 6c 65 63 74 31 2d 32 2e 38 2e 31 20 7b 0a  select1-2.8.1 {.
11d0: 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43    execsql {SELEC
11e0: 54 20 63 6f 61 6c 65 73 63 65 28 6d 69 6e 28 61  T coalesce(min(a
11f0: 29 2c 27 78 79 7a 7a 79 27 29 20 46 52 4f 4d 20  ),'xyzzy') FROM 
1200: 74 33 7d 0a 7d 20 7b 31 31 7d 0a 64 6f 5f 74 65  t3}.} {11}.do_te
1210: 73 74 20 73 65 6c 65 63 74 31 2d 32 2e 38 2e 32  st select1-2.8.2
1220: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45   {.  execsql {SE
1230: 4c 45 43 54 20 6d 69 6e 28 63 6f 61 6c 65 73 63  LECT min(coalesc
1240: 65 28 61 2c 27 78 79 7a 7a 79 27 29 29 20 46 52  e(a,'xyzzy')) FR
1250: 4f 4d 20 74 33 7d 0a 7d 20 7b 31 31 7d 0a 64 6f  OM t3}.} {11}.do
1260: 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 32 2e  _test select1-2.
1270: 38 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  8.3 {.  execsql 
1280: 7b 53 45 4c 45 43 54 20 6d 69 6e 28 62 29 2c 20  {SELECT min(b), 
1290: 6d 69 6e 28 62 29 20 46 52 4f 4d 20 74 34 7d 0a  min(b) FROM t4}.
12a0: 7d 20 5b 6c 69 73 74 20 24 6c 6f 6e 67 20 24 6c  } [list $long $l
12b0: 6f 6e 67 5d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  ong].do_test sel
12c0: 65 63 74 31 2d 32 2e 39 20 7b 0a 20 20 73 65 74  ect1-2.9 {.  set
12d0: 20 76 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73   v [catch {execs
12e0: 71 6c 20 7b 53 45 4c 45 43 54 20 4d 41 58 28 2a  ql {SELECT MAX(*
12f0: 29 20 46 52 4f 4d 20 74 65 73 74 31 7d 7d 20 6d  ) FROM test1}} m
1300: 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76 20  sg].  lappend v 
1310: 24 6d 73 67 0a 7d 20 7b 31 20 7b 77 72 6f 6e 67  $msg.} {1 {wrong
1320: 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d   number of argum
1330: 65 6e 74 73 20 74 6f 20 66 75 6e 63 74 69 6f 6e  ents to function
1340: 20 4d 41 58 28 29 7d 7d 0a 64 6f 5f 74 65 73 74   MAX()}}.do_test
1350: 20 73 65 6c 65 63 74 31 2d 32 2e 31 30 20 7b 0a   select1-2.10 {.
1360: 20 20 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b    set v [catch {
1370: 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20  execsql {SELECT 
1380: 4d 61 78 28 66 31 29 20 46 52 4f 4d 20 74 65 73  Max(f1) FROM tes
1390: 74 31 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70  t1}} msg].  lapp
13a0: 65 6e 64 20 76 20 24 6d 73 67 0a 7d 20 7b 30 20  end v $msg.} {0 
13b0: 33 33 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65  33}.do_test sele
13c0: 63 74 31 2d 32 2e 31 31 20 7b 0a 20 20 73 65 74  ct1-2.11 {.  set
13d0: 20 76 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73   v [catch {execs
13e0: 71 6c 20 7b 53 45 4c 45 43 54 20 6d 61 78 28 66  ql {SELECT max(f
13f0: 31 2c 66 32 29 20 46 52 4f 4d 20 74 65 73 74 31  1,f2) FROM test1
1400: 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e  }} msg].  lappen
1410: 64 20 76 20 5b 6c 73 6f 72 74 20 24 6d 73 67 5d  d v [lsort $msg]
1420: 0a 7d 20 7b 30 20 7b 32 32 20 34 34 7d 7d 0a 64  .} {0 {22 44}}.d
1430: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 32  o_test select1-2
1440: 2e 31 32 20 7b 0a 20 20 73 65 74 20 76 20 5b 63  .12 {.  set v [c
1450: 61 74 63 68 20 7b 65 78 65 63 73 71 6c 20 7b 53  atch {execsql {S
1460: 45 4c 45 43 54 20 4d 41 58 28 66 31 2c 66 32 29  ELECT MAX(f1,f2)
1470: 2b 31 20 46 52 4f 4d 20 74 65 73 74 31 7d 7d 20  +1 FROM test1}} 
1480: 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76  msg].  lappend v
1490: 20 5b 6c 73 6f 72 74 20 24 6d 73 67 5d 0a 7d 20   [lsort $msg].} 
14a0: 7b 30 20 7b 32 33 20 34 35 7d 7d 0a 64 6f 5f 74  {0 {23 45}}.do_t
14b0: 65 73 74 20 73 65 6c 65 63 74 31 2d 32 2e 31 33  est select1-2.13
14c0: 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74 63   {.  set v [catc
14d0: 68 20 7b 65 78 65 63 73 71 6c 20 7b 53 45 4c 45  h {execsql {SELE
14e0: 43 54 20 4d 41 58 28 66 31 29 2b 31 20 46 52 4f  CT MAX(f1)+1 FRO
14f0: 4d 20 74 65 73 74 31 7d 7d 20 6d 73 67 5d 0a 20  M test1}} msg]. 
1500: 20 6c 61 70 70 65 6e 64 20 76 20 24 6d 73 67 0a   lappend v $msg.
1510: 7d 20 7b 30 20 33 34 7d 0a 64 6f 5f 74 65 73 74  } {0 34}.do_test
1520: 20 73 65 6c 65 63 74 31 2d 32 2e 31 33 2e 31 20   select1-2.13.1 
1530: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c  {.  execsql {SEL
1540: 45 43 54 20 63 6f 61 6c 65 73 63 65 28 6d 61 78  ECT coalesce(max
1550: 28 61 29 2c 27 78 79 7a 7a 79 27 29 20 46 52 4f  (a),'xyzzy') FRO
1560: 4d 20 74 33 7d 0a 7d 20 7b 61 62 63 7d 0a 64 6f  M t3}.} {abc}.do
1570: 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 32 2e  _test select1-2.
1580: 31 33 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c  13.2 {.  execsql
1590: 20 7b 53 45 4c 45 43 54 20 6d 61 78 28 63 6f 61   {SELECT max(coa
15a0: 6c 65 73 63 65 28 61 2c 27 78 79 7a 7a 79 27 29  lesce(a,'xyzzy')
15b0: 29 20 46 52 4f 4d 20 74 33 7d 0a 7d 20 7b 78 79  ) FROM t3}.} {xy
15c0: 7a 7a 79 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  zzy}.do_test sel
15d0: 65 63 74 31 2d 32 2e 31 34 20 7b 0a 20 20 73 65  ect1-2.14 {.  se
15e0: 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78 65 63  t v [catch {exec
15f0: 73 71 6c 20 7b 53 45 4c 45 43 54 20 53 55 4d 28  sql {SELECT SUM(
1600: 2a 29 20 46 52 4f 4d 20 74 65 73 74 31 7d 7d 20  *) FROM test1}} 
1610: 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76  msg].  lappend v
1620: 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 77 72 6f 6e   $msg.} {1 {wron
1630: 67 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75  g number of argu
1640: 6d 65 6e 74 73 20 74 6f 20 66 75 6e 63 74 69 6f  ments to functio
1650: 6e 20 53 55 4d 28 29 7d 7d 0a 64 6f 5f 74 65 73  n SUM()}}.do_tes
1660: 74 20 73 65 6c 65 63 74 31 2d 32 2e 31 35 20 7b  t select1-2.15 {
1670: 0a 20 20 73 65 74 20 76 20 5b 63 61 74 63 68 20  .  set v [catch 
1680: 7b 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54  {execsql {SELECT
1690: 20 53 75 6d 28 66 31 29 20 46 52 4f 4d 20 74 65   Sum(f1) FROM te
16a0: 73 74 31 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70  st1}} msg].  lap
16b0: 70 65 6e 64 20 76 20 24 6d 73 67 0a 7d 20 7b 30  pend v $msg.} {0
16c0: 20 34 34 2e 30 7d 0a 64 6f 5f 74 65 73 74 20 73   44.0}.do_test s
16d0: 65 6c 65 63 74 31 2d 32 2e 31 36 20 7b 0a 20 20  elect1-2.16 {.  
16e0: 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78  set v [catch {ex
16f0: 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 73 75  ecsql {SELECT su
1700: 6d 28 66 31 2c 66 32 29 20 46 52 4f 4d 20 74 65  m(f1,f2) FROM te
1710: 73 74 31 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70  st1}} msg].  lap
1720: 70 65 6e 64 20 76 20 24 6d 73 67 0a 7d 20 7b 31  pend v $msg.} {1
1730: 20 7b 77 72 6f 6e 67 20 6e 75 6d 62 65 72 20 6f   {wrong number o
1740: 66 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 66  f arguments to f
1750: 75 6e 63 74 69 6f 6e 20 73 75 6d 28 29 7d 7d 0a  unction sum()}}.
1760: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d  do_test select1-
1770: 32 2e 31 37 20 7b 0a 20 20 73 65 74 20 76 20 5b  2.17 {.  set v [
1780: 63 61 74 63 68 20 7b 65 78 65 63 73 71 6c 20 7b  catch {execsql {
1790: 53 45 4c 45 43 54 20 53 55 4d 28 66 31 29 2b 31  SELECT SUM(f1)+1
17a0: 20 46 52 4f 4d 20 74 65 73 74 31 7d 7d 20 6d 73   FROM test1}} ms
17b0: 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76 20 24  g].  lappend v $
17c0: 6d 73 67 0a 7d 20 7b 30 20 34 35 2e 30 7d 0a 64  msg.} {0 45.0}.d
17d0: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 32  o_test select1-2
17e0: 2e 31 37 2e 31 20 7b 0a 20 20 65 78 65 63 73 71  .17.1 {.  execsq
17f0: 6c 20 7b 53 45 4c 45 43 54 20 73 75 6d 28 61 29  l {SELECT sum(a)
1800: 20 46 52 4f 4d 20 74 33 7d 0a 7d 20 7b 34 34 2e   FROM t3}.} {44.
1810: 30 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  0}.do_test selec
1820: 74 31 2d 32 2e 31 38 20 7b 0a 20 20 73 65 74 20  t1-2.18 {.  set 
1830: 76 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73 71  v [catch {execsq
1840: 6c 20 7b 53 45 4c 45 43 54 20 58 59 5a 5a 59 28  l {SELECT XYZZY(
1850: 66 31 29 20 46 52 4f 4d 20 74 65 73 74 31 7d 7d  f1) FROM test1}}
1860: 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20   msg].  lappend 
1870: 76 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 6e 6f 20  v $msg.} {1 {no 
1880: 73 75 63 68 20 66 75 6e 63 74 69 6f 6e 3a 20 58  such function: X
1890: 59 5a 5a 59 7d 7d 0a 64 6f 5f 74 65 73 74 20 73  YZZY}}.do_test s
18a0: 65 6c 65 63 74 31 2d 32 2e 31 39 20 7b 0a 20 20  elect1-2.19 {.  
18b0: 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78  set v [catch {ex
18c0: 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 53 55  ecsql {SELECT SU
18d0: 4d 28 6d 69 6e 28 66 31 2c 66 32 29 29 20 46 52  M(min(f1,f2)) FR
18e0: 4f 4d 20 74 65 73 74 31 7d 7d 20 6d 73 67 5d 0a  OM test1}} msg].
18f0: 20 20 6c 61 70 70 65 6e 64 20 76 20 24 6d 73 67    lappend v $msg
1900: 0a 7d 20 7b 30 20 34 34 2e 30 7d 0a 64 6f 5f 74  .} {0 44.0}.do_t
1910: 65 73 74 20 73 65 6c 65 63 74 31 2d 32 2e 32 30  est select1-2.20
1920: 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74 63   {.  set v [catc
1930: 68 20 7b 65 78 65 63 73 71 6c 20 7b 53 45 4c 45  h {execsql {SELE
1940: 43 54 20 53 55 4d 28 6d 69 6e 28 66 31 29 29 20  CT SUM(min(f1)) 
1950: 46 52 4f 4d 20 74 65 73 74 31 7d 7d 20 6d 73 67  FROM test1}} msg
1960: 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76 20 24 6d  ].  lappend v $m
1970: 73 67 0a 7d 20 7b 31 20 7b 6d 69 73 75 73 65 20  sg.} {1 {misuse 
1980: 6f 66 20 61 67 67 72 65 67 61 74 65 20 66 75 6e  of aggregate fun
1990: 63 74 69 6f 6e 20 6d 69 6e 28 29 7d 7d 0a 0a 23  ction min()}}..#
19a0: 20 57 48 45 52 45 20 63 6c 61 75 73 65 20 65 78   WHERE clause ex
19b0: 70 72 65 73 73 69 6f 6e 73 0a 23 0a 64 6f 5f 74  pressions.#.do_t
19c0: 65 73 74 20 73 65 6c 65 63 74 31 2d 33 2e 31 20  est select1-3.1 
19d0: 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74 63 68  {.  set v [catch
19e0: 20 7b 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43   {execsql {SELEC
19f0: 54 20 66 31 20 46 52 4f 4d 20 74 65 73 74 31 20  T f1 FROM test1 
1a00: 57 48 45 52 45 20 66 31 3c 31 31 7d 7d 20 6d 73  WHERE f1<11}} ms
1a10: 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76 20 24  g].  lappend v $
1a20: 6d 73 67 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f  msg.} {0 {}}.do_
1a30: 74 65 73 74 20 73 65 6c 65 63 74 31 2d 33 2e 32  test select1-3.2
1a40: 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74 63   {.  set v [catc
1a50: 68 20 7b 65 78 65 63 73 71 6c 20 7b 53 45 4c 45  h {execsql {SELE
1a60: 43 54 20 66 31 20 46 52 4f 4d 20 74 65 73 74 31  CT f1 FROM test1
1a70: 20 57 48 45 52 45 20 66 31 3c 3d 31 31 7d 7d 20   WHERE f1<=11}} 
1a80: 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76  msg].  lappend v
1a90: 20 24 6d 73 67 0a 7d 20 7b 30 20 31 31 7d 0a 64   $msg.} {0 11}.d
1aa0: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 33  o_test select1-3
1ab0: 2e 33 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61  .3 {.  set v [ca
1ac0: 74 63 68 20 7b 65 78 65 63 73 71 6c 20 7b 53 45  tch {execsql {SE
1ad0: 4c 45 43 54 20 66 31 20 46 52 4f 4d 20 74 65 73  LECT f1 FROM tes
1ae0: 74 31 20 57 48 45 52 45 20 66 31 3d 31 31 7d 7d  t1 WHERE f1=11}}
1af0: 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20   msg].  lappend 
1b00: 76 20 24 6d 73 67 0a 7d 20 7b 30 20 31 31 7d 0a  v $msg.} {0 11}.
1b10: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d  do_test select1-
1b20: 33 2e 34 20 7b 0a 20 20 73 65 74 20 76 20 5b 63  3.4 {.  set v [c
1b30: 61 74 63 68 20 7b 65 78 65 63 73 71 6c 20 7b 53  atch {execsql {S
1b40: 45 4c 45 43 54 20 66 31 20 46 52 4f 4d 20 74 65  ELECT f1 FROM te
1b50: 73 74 31 20 57 48 45 52 45 20 66 31 3e 3d 31 31  st1 WHERE f1>=11
1b60: 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e  }} msg].  lappen
1b70: 64 20 76 20 5b 6c 73 6f 72 74 20 24 6d 73 67 5d  d v [lsort $msg]
1b80: 0a 7d 20 7b 30 20 7b 31 31 20 33 33 7d 7d 0a 64  .} {0 {11 33}}.d
1b90: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 33  o_test select1-3
1ba0: 2e 35 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61  .5 {.  set v [ca
1bb0: 74 63 68 20 7b 65 78 65 63 73 71 6c 20 7b 53 45  tch {execsql {SE
1bc0: 4c 45 43 54 20 66 31 20 46 52 4f 4d 20 74 65 73  LECT f1 FROM tes
1bd0: 74 31 20 57 48 45 52 45 20 66 31 3e 31 31 7d 7d  t1 WHERE f1>11}}
1be0: 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20   msg].  lappend 
1bf0: 76 20 5b 6c 73 6f 72 74 20 24 6d 73 67 5d 0a 7d  v [lsort $msg].}
1c00: 20 7b 30 20 33 33 7d 0a 64 6f 5f 74 65 73 74 20   {0 33}.do_test 
1c10: 73 65 6c 65 63 74 31 2d 33 2e 36 20 7b 0a 20 20  select1-3.6 {.  
1c20: 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78  set v [catch {ex
1c30: 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 66 31  ecsql {SELECT f1
1c40: 20 46 52 4f 4d 20 74 65 73 74 31 20 57 48 45 52   FROM test1 WHER
1c50: 45 20 66 31 21 3d 31 31 7d 7d 20 6d 73 67 5d 0a  E f1!=11}} msg].
1c60: 20 20 6c 61 70 70 65 6e 64 20 76 20 5b 6c 73 6f    lappend v [lso
1c70: 72 74 20 24 6d 73 67 5d 0a 7d 20 7b 30 20 33 33  rt $msg].} {0 33
1c80: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
1c90: 31 2d 33 2e 37 20 7b 0a 20 20 73 65 74 20 76 20  1-3.7 {.  set v 
1ca0: 5b 63 61 74 63 68 20 7b 65 78 65 63 73 71 6c 20  [catch {execsql 
1cb0: 7b 53 45 4c 45 43 54 20 66 31 20 46 52 4f 4d 20  {SELECT f1 FROM 
1cc0: 74 65 73 74 31 20 57 48 45 52 45 20 6d 69 6e 28  test1 WHERE min(
1cd0: 66 31 2c 66 32 29 21 3d 31 31 7d 7d 20 6d 73 67  f1,f2)!=11}} msg
1ce0: 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76 20 5b 6c  ].  lappend v [l
1cf0: 73 6f 72 74 20 24 6d 73 67 5d 0a 7d 20 7b 30 20  sort $msg].} {0 
1d00: 33 33 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65  33}.do_test sele
1d10: 63 74 31 2d 33 2e 38 20 7b 0a 20 20 73 65 74 20  ct1-3.8 {.  set 
1d20: 76 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73 71  v [catch {execsq
1d30: 6c 20 7b 53 45 4c 45 43 54 20 66 31 20 46 52 4f  l {SELECT f1 FRO
1d40: 4d 20 74 65 73 74 31 20 57 48 45 52 45 20 6d 61  M test1 WHERE ma
1d50: 78 28 66 31 2c 66 32 29 21 3d 31 31 7d 7d 20 6d  x(f1,f2)!=11}} m
1d60: 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76 20  sg].  lappend v 
1d70: 5b 6c 73 6f 72 74 20 24 6d 73 67 5d 0a 7d 20 7b  [lsort $msg].} {
1d80: 30 20 7b 31 31 20 33 33 7d 7d 0a 64 6f 5f 74 65  0 {11 33}}.do_te
1d90: 73 74 20 73 65 6c 65 63 74 31 2d 33 2e 39 20 7b  st select1-3.9 {
1da0: 0a 20 20 73 65 74 20 76 20 5b 63 61 74 63 68 20  .  set v [catch 
1db0: 7b 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54  {execsql {SELECT
1dc0: 20 66 31 20 46 52 4f 4d 20 74 65 73 74 31 20 57   f1 FROM test1 W
1dd0: 48 45 52 45 20 63 6f 75 6e 74 28 66 31 2c 66 32  HERE count(f1,f2
1de0: 29 21 3d 31 31 7d 7d 20 6d 73 67 5d 0a 20 20 6c  )!=11}} msg].  l
1df0: 61 70 70 65 6e 64 20 76 20 24 6d 73 67 0a 7d 20  append v $msg.} 
1e00: 7b 31 20 7b 77 72 6f 6e 67 20 6e 75 6d 62 65 72  {1 {wrong number
1e10: 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 74 6f   of arguments to
1e20: 20 66 75 6e 63 74 69 6f 6e 20 63 6f 75 6e 74 28   function count(
1e30: 29 7d 7d 0a 0a 23 20 4f 52 44 45 52 20 42 59 20  )}}..# ORDER BY 
1e40: 65 78 70 72 65 73 73 69 6f 6e 73 0a 23 0a 64 6f  expressions.#.do
1e50: 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 34 2e  _test select1-4.
1e60: 31 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74  1 {.  set v [cat
1e70: 63 68 20 7b 65 78 65 63 73 71 6c 20 7b 53 45 4c  ch {execsql {SEL
1e80: 45 43 54 20 66 31 20 46 52 4f 4d 20 74 65 73 74  ECT f1 FROM test
1e90: 31 20 4f 52 44 45 52 20 42 59 20 66 31 7d 7d 20  1 ORDER BY f1}} 
1ea0: 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76  msg].  lappend v
1eb0: 20 24 6d 73 67 0a 7d 20 7b 30 20 7b 31 31 20 33   $msg.} {0 {11 3
1ec0: 33 7d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65  3}}.do_test sele
1ed0: 63 74 31 2d 34 2e 32 20 7b 0a 20 20 73 65 74 20  ct1-4.2 {.  set 
1ee0: 76 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73 71  v [catch {execsq
1ef0: 6c 20 7b 53 45 4c 45 43 54 20 66 31 20 46 52 4f  l {SELECT f1 FRO
1f00: 4d 20 74 65 73 74 31 20 4f 52 44 45 52 20 42 59  M test1 ORDER BY
1f10: 20 2d 66 31 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61   -f1}} msg].  la
1f20: 70 70 65 6e 64 20 76 20 24 6d 73 67 0a 7d 20 7b  ppend v $msg.} {
1f30: 30 20 7b 33 33 20 31 31 7d 7d 0a 64 6f 5f 74 65  0 {33 11}}.do_te
1f40: 73 74 20 73 65 6c 65 63 74 31 2d 34 2e 33 20 7b  st select1-4.3 {
1f50: 0a 20 20 73 65 74 20 76 20 5b 63 61 74 63 68 20  .  set v [catch 
1f60: 7b 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54  {execsql {SELECT
1f70: 20 66 31 20 46 52 4f 4d 20 74 65 73 74 31 20 4f   f1 FROM test1 O
1f80: 52 44 45 52 20 42 59 20 6d 69 6e 28 66 31 2c 66  RDER BY min(f1,f
1f90: 32 29 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70  2)}} msg].  lapp
1fa0: 65 6e 64 20 76 20 24 6d 73 67 0a 7d 20 7b 30 20  end v $msg.} {0 
1fb0: 7b 31 31 20 33 33 7d 7d 0a 64 6f 5f 74 65 73 74  {11 33}}.do_test
1fc0: 20 73 65 6c 65 63 74 31 2d 34 2e 34 20 7b 0a 20   select1-4.4 {. 
1fd0: 20 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65   set v [catch {e
1fe0: 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 66  xecsql {SELECT f
1ff0: 31 20 46 52 4f 4d 20 74 65 73 74 31 20 4f 52 44  1 FROM test1 ORD
2000: 45 52 20 42 59 20 6d 69 6e 28 66 31 29 7d 7d 20  ER BY min(f1)}} 
2010: 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76  msg].  lappend v
2020: 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 6d 69 73 75   $msg.} {1 {misu
2030: 73 65 20 6f 66 20 61 67 67 72 65 67 61 74 65 20  se of aggregate 
2040: 66 75 6e 63 74 69 6f 6e 20 6d 69 6e 28 29 7d 7d  function min()}}
2050: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31  .do_test select1
2060: 2d 34 2e 35 20 7b 0a 20 20 63 61 74 63 68 73 71  -4.5 {.  catchsq
2070: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 66  l {.    SELECT f
2080: 31 20 46 52 4f 4d 20 74 65 73 74 31 20 4f 52 44  1 FROM test1 ORD
2090: 45 52 20 42 59 20 38 2e 34 3b 0a 20 20 7d 0a 7d  ER BY 8.4;.  }.}
20a0: 20 7b 31 20 7b 4f 52 44 45 52 20 42 59 20 74 65   {1 {ORDER BY te
20b0: 72 6d 73 20 6d 75 73 74 20 6e 6f 74 20 62 65 20  rms must not be 
20c0: 6e 6f 6e 2d 69 6e 74 65 67 65 72 20 63 6f 6e 73  non-integer cons
20d0: 74 61 6e 74 73 7d 7d 0a 64 6f 5f 74 65 73 74 20  tants}}.do_test 
20e0: 73 65 6c 65 63 74 31 2d 34 2e 36 20 7b 0a 20 20  select1-4.6 {.  
20f0: 63 61 74 63 68 73 71 6c 20 7b 0a 20 20 20 20 53  catchsql {.    S
2100: 45 4c 45 43 54 20 66 31 20 46 52 4f 4d 20 74 65  ELECT f1 FROM te
2110: 73 74 31 20 4f 52 44 45 52 20 42 59 20 27 38 2e  st1 ORDER BY '8.
2120: 34 27 3b 0a 20 20 7d 0a 7d 20 7b 31 20 7b 4f 52  4';.  }.} {1 {OR
2130: 44 45 52 20 42 59 20 74 65 72 6d 73 20 6d 75 73  DER BY terms mus
2140: 74 20 6e 6f 74 20 62 65 20 6e 6f 6e 2d 69 6e 74  t not be non-int
2150: 65 67 65 72 20 63 6f 6e 73 74 61 6e 74 73 7d 7d  eger constants}}
2160: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31  .do_test select1
2170: 2d 34 2e 37 2e 31 20 7b 0a 20 20 63 61 74 63 68  -4.7.1 {.  catch
2180: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
2190: 20 66 31 20 46 52 4f 4d 20 74 65 73 74 31 20 4f   f1 FROM test1 O
21a0: 52 44 45 52 20 42 59 20 27 78 79 7a 27 3b 0a 20  RDER BY 'xyz';. 
21b0: 20 7d 0a 7d 20 7b 31 20 7b 4f 52 44 45 52 20 42   }.} {1 {ORDER B
21c0: 59 20 74 65 72 6d 73 20 6d 75 73 74 20 6e 6f 74  Y terms must not
21d0: 20 62 65 20 6e 6f 6e 2d 69 6e 74 65 67 65 72 20   be non-integer 
21e0: 63 6f 6e 73 74 61 6e 74 73 7d 7d 0a 64 6f 5f 74  constants}}.do_t
21f0: 65 73 74 20 73 65 6c 65 63 74 31 2d 34 2e 37 2e  est select1-4.7.
2200: 32 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20 7b  2 {.  catchsql {
2210: 0a 20 20 20 20 53 45 4c 45 43 54 20 66 31 20 46  .    SELECT f1 F
2220: 52 4f 4d 20 74 65 73 74 31 20 4f 52 44 45 52 20  ROM test1 ORDER 
2230: 42 59 20 2d 38 2e 34 3b 0a 20 20 7d 0a 7d 20 7b  BY -8.4;.  }.} {
2240: 31 20 7b 4f 52 44 45 52 20 42 59 20 74 65 72 6d  1 {ORDER BY term
2250: 73 20 6d 75 73 74 20 6e 6f 74 20 62 65 20 6e 6f  s must not be no
2260: 6e 2d 69 6e 74 65 67 65 72 20 63 6f 6e 73 74 61  n-integer consta
2270: 6e 74 73 7d 7d 0a 64 6f 5f 74 65 73 74 20 73 65  nts}}.do_test se
2280: 6c 65 63 74 31 2d 34 2e 37 2e 33 20 7b 0a 20 20  lect1-4.7.3 {.  
2290: 63 61 74 63 68 73 71 6c 20 7b 0a 20 20 20 20 53  catchsql {.    S
22a0: 45 4c 45 43 54 20 66 31 20 46 52 4f 4d 20 74 65  ELECT f1 FROM te
22b0: 73 74 31 20 4f 52 44 45 52 20 42 59 20 2b 38 2e  st1 ORDER BY +8.
22c0: 34 3b 0a 20 20 7d 0a 7d 20 7b 31 20 7b 4f 52 44  4;.  }.} {1 {ORD
22d0: 45 52 20 42 59 20 74 65 72 6d 73 20 6d 75 73 74  ER BY terms must
22e0: 20 6e 6f 74 20 62 65 20 6e 6f 6e 2d 69 6e 74 65   not be non-inte
22f0: 67 65 72 20 63 6f 6e 73 74 61 6e 74 73 7d 7d 0a  ger constants}}.
2300: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d  do_test select1-
2310: 34 2e 37 2e 34 20 7b 0a 20 20 63 61 74 63 68 73  4.7.4 {.  catchs
2320: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
2330: 66 31 20 46 52 4f 4d 20 74 65 73 74 31 20 4f 52  f1 FROM test1 OR
2340: 44 45 52 20 42 59 20 34 32 39 34 39 36 37 32 39  DER BY 429496729
2350: 36 3b 20 2d 2d 20 63 6f 6e 73 74 61 6e 74 20 6c  6; -- constant l
2360: 61 72 67 65 72 20 74 68 61 6e 20 33 32 20 62 69  arger than 32 bi
2370: 74 73 0a 20 20 7d 0a 7d 20 7b 31 20 7b 4f 52 44  ts.  }.} {1 {ORD
2380: 45 52 20 42 59 20 74 65 72 6d 73 20 6d 75 73 74  ER BY terms must
2390: 20 6e 6f 74 20 62 65 20 6e 6f 6e 2d 69 6e 74 65   not be non-inte
23a0: 67 65 72 20 63 6f 6e 73 74 61 6e 74 73 7d 7d 0a  ger constants}}.
23b0: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d  do_test select1-
23c0: 34 2e 38 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  4.8 {.  execsql 
23d0: 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42  {.    CREATE TAB
23e0: 4c 45 20 74 35 28 61 2c 62 29 3b 0a 20 20 20 20  LE t5(a,b);.    
23f0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 35 20 56  INSERT INTO t5 V
2400: 41 4c 55 45 53 28 31 2c 31 30 29 3b 0a 20 20 20  ALUES(1,10);.   
2410: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 35 20   INSERT INTO t5 
2420: 56 41 4c 55 45 53 28 32 2c 39 29 3b 0a 20 20 20  VALUES(2,9);.   
2430: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
2440: 35 20 4f 52 44 45 52 20 42 59 20 31 3b 0a 20 20  5 ORDER BY 1;.  
2450: 7d 0a 7d 20 7b 31 20 31 30 20 32 20 39 7d 0a 64  }.} {1 10 2 9}.d
2460: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 34  o_test select1-4
2470: 2e 39 2e 31 20 7b 0a 20 20 65 78 65 63 73 71 6c  .9.1 {.  execsql
2480: 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20   {.    SELECT * 
2490: 46 52 4f 4d 20 74 35 20 4f 52 44 45 52 20 42 59  FROM t5 ORDER BY
24a0: 20 32 3b 0a 20 20 7d 0a 7d 20 7b 32 20 39 20 31   2;.  }.} {2 9 1
24b0: 20 31 30 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c   10}.do_test sel
24c0: 65 63 74 31 2d 34 2e 39 2e 32 20 7b 0a 20 20 65  ect1-4.9.2 {.  e
24d0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
24e0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 35 20 4f 52  ECT * FROM t5 OR
24f0: 44 45 52 20 42 59 20 2b 32 3b 0a 20 20 7d 0a 7d  DER BY +2;.  }.}
2500: 20 7b 32 20 39 20 31 20 31 30 7d 0a 64 6f 5f 74   {2 9 1 10}.do_t
2510: 65 73 74 20 73 65 6c 65 63 74 31 2d 34 2e 31 30  est select1-4.10
2520: 2e 31 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20  .1 {.  catchsql 
2530: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46  {.    SELECT * F
2540: 52 4f 4d 20 74 35 20 4f 52 44 45 52 20 42 59 20  ROM t5 ORDER BY 
2550: 33 3b 0a 20 20 7d 0a 7d 20 7b 31 20 7b 4f 52 44  3;.  }.} {1 {ORD
2560: 45 52 20 42 59 20 63 6f 6c 75 6d 6e 20 6e 75 6d  ER BY column num
2570: 62 65 72 20 33 20 6f 75 74 20 6f 66 20 72 61 6e  ber 3 out of ran
2580: 67 65 20 2d 20 73 68 6f 75 6c 64 20 62 65 20 62  ge - should be b
2590: 65 74 77 65 65 6e 20 31 20 61 6e 64 20 32 7d 7d  etween 1 and 2}}
25a0: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31  .do_test select1
25b0: 2d 34 2e 31 30 2e 32 20 7b 0a 20 20 63 61 74 63  -4.10.2 {.  catc
25c0: 68 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  hsql {.    SELEC
25d0: 54 20 2a 20 46 52 4f 4d 20 74 35 20 4f 52 44 45  T * FROM t5 ORDE
25e0: 52 20 42 59 20 2d 31 3b 0a 20 20 7d 0a 7d 20 7b  R BY -1;.  }.} {
25f0: 31 20 7b 4f 52 44 45 52 20 42 59 20 63 6f 6c 75  1 {ORDER BY colu
2600: 6d 6e 20 6e 75 6d 62 65 72 20 2d 31 20 6f 75 74  mn number -1 out
2610: 20 6f 66 20 72 61 6e 67 65 20 2d 20 73 68 6f 75   of range - shou
2620: 6c 64 20 62 65 20 62 65 74 77 65 65 6e 20 31 20  ld be between 1 
2630: 61 6e 64 20 32 7d 7d 0a 64 6f 5f 74 65 73 74 20  and 2}}.do_test 
2640: 73 65 6c 65 63 74 31 2d 34 2e 31 31 20 7b 0a 20  select1-4.11 {. 
2650: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 49   execsql {.    I
2660: 4e 53 45 52 54 20 49 4e 54 4f 20 74 35 20 56 41  NSERT INTO t5 VA
2670: 4c 55 45 53 28 33 2c 31 30 29 3b 0a 20 20 20 20  LUES(3,10);.    
2680: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 35  SELECT * FROM t5
2690: 20 4f 52 44 45 52 20 42 59 20 32 2c 20 31 20 44   ORDER BY 2, 1 D
26a0: 45 53 43 3b 0a 20 20 7d 0a 7d 20 7b 32 20 39 20  ESC;.  }.} {2 9 
26b0: 33 20 31 30 20 31 20 31 30 7d 0a 64 6f 5f 74 65  3 10 1 10}.do_te
26c0: 73 74 20 73 65 6c 65 63 74 31 2d 34 2e 31 32 20  st select1-4.12 
26d0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
26e0: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
26f0: 74 35 20 4f 52 44 45 52 20 42 59 20 31 20 44 45  t5 ORDER BY 1 DE
2700: 53 43 2c 20 62 3b 0a 20 20 7d 0a 7d 20 7b 33 20  SC, b;.  }.} {3 
2710: 31 30 20 32 20 39 20 31 20 31 30 7d 0a 64 6f 5f  10 2 9 1 10}.do_
2720: 74 65 73 74 20 73 65 6c 65 63 74 31 2d 34 2e 31  test select1-4.1
2730: 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  3 {.  execsql {.
2740: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
2750: 4d 20 74 35 20 4f 52 44 45 52 20 42 59 20 62 20  M t5 ORDER BY b 
2760: 44 45 53 43 2c 20 31 3b 0a 20 20 7d 0a 7d 20 7b  DESC, 1;.  }.} {
2770: 31 20 31 30 20 33 20 31 30 20 32 20 39 7d 0a 0a  1 10 3 10 2 9}..
2780: 0a 23 20 4f 52 44 45 52 20 42 59 20 69 67 6e 6f  .# ORDER BY igno
2790: 72 65 64 20 6f 6e 20 61 6e 20 61 67 67 72 65 67  red on an aggreg
27a0: 61 74 65 20 71 75 65 72 79 0a 23 0a 64 6f 5f 74  ate query.#.do_t
27b0: 65 73 74 20 73 65 6c 65 63 74 31 2d 35 2e 31 20  est select1-5.1 
27c0: 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74 63 68  {.  set v [catch
27d0: 20 7b 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43   {execsql {SELEC
27e0: 54 20 6d 61 78 28 66 31 29 20 46 52 4f 4d 20 74  T max(f1) FROM t
27f0: 65 73 74 31 20 4f 52 44 45 52 20 42 59 20 66 32  est1 ORDER BY f2
2800: 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e  }} msg].  lappen
2810: 64 20 76 20 24 6d 73 67 0a 7d 20 7b 30 20 33 33  d v $msg.} {0 33
2820: 7d 0a 0a 65 78 65 63 73 71 6c 20 7b 43 52 45 41  }..execsql {CREA
2830: 54 45 20 54 41 42 4c 45 20 74 65 73 74 32 28 74  TE TABLE test2(t
2840: 31 20 74 65 73 74 2c 20 74 32 20 74 65 78 74 29  1 test, t2 text)
2850: 7d 0a 65 78 65 63 73 71 6c 20 7b 49 4e 53 45 52  }.execsql {INSER
2860: 54 20 49 4e 54 4f 20 74 65 73 74 32 20 56 41 4c  T INTO test2 VAL
2870: 55 45 53 28 27 61 62 63 27 2c 27 78 79 7a 27 29  UES('abc','xyz')
2880: 7d 0a 0a 23 20 43 68 65 63 6b 20 66 6f 72 20 63  }..# Check for c
2890: 6f 6c 75 6d 6e 20 6e 61 6d 69 6e 67 0a 23 0a 64  olumn naming.#.d
28a0: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 36  o_test select1-6
28b0: 2e 31 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61  .1 {.  set v [ca
28c0: 74 63 68 20 7b 65 78 65 63 73 71 6c 32 20 7b 53  tch {execsql2 {S
28d0: 45 4c 45 43 54 20 66 31 20 46 52 4f 4d 20 74 65  ELECT f1 FROM te
28e0: 73 74 31 20 4f 52 44 45 52 20 42 59 20 66 32 7d  st1 ORDER BY f2}
28f0: 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64  } msg].  lappend
2900: 20 76 20 24 6d 73 67 0a 7d 20 7b 30 20 7b 66 31   v $msg.} {0 {f1
2910: 20 31 31 20 66 31 20 33 33 7d 7d 0a 64 6f 5f 74   11 f1 33}}.do_t
2920: 65 73 74 20 73 65 6c 65 63 74 31 2d 36 2e 31 2e  est select1-6.1.
2930: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 50  1 {.  execsql {P
2940: 52 41 47 4d 41 20 66 75 6c 6c 5f 63 6f 6c 75 6d  RAGMA full_colum
2950: 6e 5f 6e 61 6d 65 73 3d 6f 6e 7d 0a 20 20 73 65  n_names=on}.  se
2960: 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78 65 63  t v [catch {exec
2970: 73 71 6c 32 20 7b 53 45 4c 45 43 54 20 66 31 20  sql2 {SELECT f1 
2980: 46 52 4f 4d 20 74 65 73 74 31 20 4f 52 44 45 52  FROM test1 ORDER
2990: 20 42 59 20 66 32 7d 7d 20 6d 73 67 5d 0a 20 20   BY f2}} msg].  
29a0: 6c 61 70 70 65 6e 64 20 76 20 24 6d 73 67 0a 7d  lappend v $msg.}
29b0: 20 7b 30 20 7b 74 65 73 74 31 2e 66 31 20 31 31   {0 {test1.f1 11
29c0: 20 74 65 73 74 31 2e 66 31 20 33 33 7d 7d 0a 64   test1.f1 33}}.d
29d0: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 36  o_test select1-6
29e0: 2e 31 2e 32 20 7b 0a 20 20 73 65 74 20 76 20 5b  .1.2 {.  set v [
29f0: 63 61 74 63 68 20 7b 65 78 65 63 73 71 6c 32 20  catch {execsql2 
2a00: 7b 53 45 4c 45 43 54 20 66 31 20 61 73 20 27 66  {SELECT f1 as 'f
2a10: 31 27 20 46 52 4f 4d 20 74 65 73 74 31 20 4f 52  1' FROM test1 OR
2a20: 44 45 52 20 42 59 20 66 32 7d 7d 20 6d 73 67 5d  DER BY f2}} msg]
2a30: 0a 20 20 6c 61 70 70 65 6e 64 20 76 20 24 6d 73  .  lappend v $ms
2a40: 67 0a 7d 20 7b 30 20 7b 66 31 20 31 31 20 66 31  g.} {0 {f1 11 f1
2a50: 20 33 33 7d 7d 0a 64 6f 5f 74 65 73 74 20 73 65   33}}.do_test se
2a60: 6c 65 63 74 31 2d 36 2e 31 2e 33 20 7b 0a 20 20  lect1-6.1.3 {.  
2a70: 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78  set v [catch {ex
2a80: 65 63 73 71 6c 32 20 7b 53 45 4c 45 43 54 20 2a  ecsql2 {SELECT *
2a90: 20 46 52 4f 4d 20 74 65 73 74 31 20 57 48 45 52   FROM test1 WHER
2aa0: 45 20 66 31 3d 3d 31 31 7d 7d 20 6d 73 67 5d 0a  E f1==11}} msg].
2ab0: 20 20 6c 61 70 70 65 6e 64 20 76 20 24 6d 73 67    lappend v $msg
2ac0: 0a 7d 20 7b 30 20 7b 66 31 20 31 31 20 66 32 20  .} {0 {f1 11 f2 
2ad0: 32 32 7d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  22}}.do_test sel
2ae0: 65 63 74 31 2d 36 2e 31 2e 34 20 7b 0a 20 20 73  ect1-6.1.4 {.  s
2af0: 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78 65  et v [catch {exe
2b00: 63 73 71 6c 32 20 7b 53 45 4c 45 43 54 20 44 49  csql2 {SELECT DI
2b10: 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 65  STINCT * FROM te
2b20: 73 74 31 20 57 48 45 52 45 20 66 31 3d 3d 31 31  st1 WHERE f1==11
2b30: 7d 7d 20 6d 73 67 5d 0a 20 20 65 78 65 63 73 71  }} msg].  execsq
2b40: 6c 20 7b 50 52 41 47 4d 41 20 66 75 6c 6c 5f 63  l {PRAGMA full_c
2b50: 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 3d 6f 66 66 7d  olumn_names=off}
2b60: 0a 20 20 6c 61 70 70 65 6e 64 20 76 20 24 6d 73  .  lappend v $ms
2b70: 67 0a 7d 20 7b 30 20 7b 66 31 20 31 31 20 66 32  g.} {0 {f1 11 f2
2b80: 20 32 32 7d 7d 0a 64 6f 5f 74 65 73 74 20 73 65   22}}.do_test se
2b90: 6c 65 63 74 31 2d 36 2e 31 2e 35 20 7b 0a 20 20  lect1-6.1.5 {.  
2ba0: 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78  set v [catch {ex
2bb0: 65 63 73 71 6c 32 20 7b 53 45 4c 45 43 54 20 2a  ecsql2 {SELECT *
2bc0: 20 46 52 4f 4d 20 74 65 73 74 31 20 57 48 45 52   FROM test1 WHER
2bd0: 45 20 66 31 3d 3d 31 31 7d 7d 20 6d 73 67 5d 0a  E f1==11}} msg].
2be0: 20 20 6c 61 70 70 65 6e 64 20 76 20 24 6d 73 67    lappend v $msg
2bf0: 0a 7d 20 7b 30 20 7b 66 31 20 31 31 20 66 32 20  .} {0 {f1 11 f2 
2c00: 32 32 7d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  22}}.do_test sel
2c10: 65 63 74 31 2d 36 2e 31 2e 36 20 7b 0a 20 20 73  ect1-6.1.6 {.  s
2c20: 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78 65  et v [catch {exe
2c30: 63 73 71 6c 32 20 7b 53 45 4c 45 43 54 20 44 49  csql2 {SELECT DI
2c40: 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 65  STINCT * FROM te
2c50: 73 74 31 20 57 48 45 52 45 20 66 31 3d 3d 31 31  st1 WHERE f1==11
2c60: 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e  }} msg].  lappen
2c70: 64 20 76 20 24 6d 73 67 0a 7d 20 7b 30 20 7b 66  d v $msg.} {0 {f
2c80: 31 20 31 31 20 66 32 20 32 32 7d 7d 0a 64 6f 5f  1 11 f2 22}}.do_
2c90: 74 65 73 74 20 73 65 6c 65 63 74 31 2d 36 2e 32  test select1-6.2
2ca0: 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74 63   {.  set v [catc
2cb0: 68 20 7b 65 78 65 63 73 71 6c 32 20 7b 53 45 4c  h {execsql2 {SEL
2cc0: 45 43 54 20 66 31 20 61 73 20 78 79 7a 7a 79 20  ECT f1 as xyzzy 
2cd0: 46 52 4f 4d 20 74 65 73 74 31 20 4f 52 44 45 52  FROM test1 ORDER
2ce0: 20 42 59 20 66 32 7d 7d 20 6d 73 67 5d 0a 20 20   BY f2}} msg].  
2cf0: 6c 61 70 70 65 6e 64 20 76 20 24 6d 73 67 0a 7d  lappend v $msg.}
2d00: 20 7b 30 20 7b 78 79 7a 7a 79 20 31 31 20 78 79   {0 {xyzzy 11 xy
2d10: 7a 7a 79 20 33 33 7d 7d 0a 64 6f 5f 74 65 73 74  zzy 33}}.do_test
2d20: 20 73 65 6c 65 63 74 31 2d 36 2e 33 20 7b 0a 20   select1-6.3 {. 
2d30: 20 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65   set v [catch {e
2d40: 78 65 63 73 71 6c 32 20 7b 53 45 4c 45 43 54 20  xecsql2 {SELECT 
2d50: 66 31 20 61 73 20 22 78 79 7a 7a 79 22 20 46 52  f1 as "xyzzy" FR
2d60: 4f 4d 20 74 65 73 74 31 20 4f 52 44 45 52 20 42  OM test1 ORDER B
2d70: 59 20 66 32 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61  Y f2}} msg].  la
2d80: 70 70 65 6e 64 20 76 20 24 6d 73 67 0a 7d 20 7b  ppend v $msg.} {
2d90: 30 20 7b 78 79 7a 7a 79 20 31 31 20 78 79 7a 7a  0 {xyzzy 11 xyzz
2da0: 79 20 33 33 7d 7d 0a 64 6f 5f 74 65 73 74 20 73  y 33}}.do_test s
2db0: 65 6c 65 63 74 31 2d 36 2e 33 2e 31 20 7b 0a 20  elect1-6.3.1 {. 
2dc0: 20 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65   set v [catch {e
2dd0: 78 65 63 73 71 6c 32 20 7b 53 45 4c 45 43 54 20  xecsql2 {SELECT 
2de0: 66 31 20 61 73 20 27 78 79 7a 7a 79 20 27 20 46  f1 as 'xyzzy ' F
2df0: 52 4f 4d 20 74 65 73 74 31 20 4f 52 44 45 52 20  ROM test1 ORDER 
2e00: 42 59 20 66 32 7d 7d 20 6d 73 67 5d 0a 20 20 6c  BY f2}} msg].  l
2e10: 61 70 70 65 6e 64 20 76 20 24 6d 73 67 0a 7d 20  append v $msg.} 
2e20: 7b 30 20 7b 7b 78 79 7a 7a 79 20 7d 20 31 31 20  {0 {{xyzzy } 11 
2e30: 7b 78 79 7a 7a 79 20 7d 20 33 33 7d 7d 0a 64 6f  {xyzzy } 33}}.do
2e40: 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 36 2e  _test select1-6.
2e50: 34 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74  4 {.  set v [cat
2e60: 63 68 20 7b 65 78 65 63 73 71 6c 32 20 7b 53 45  ch {execsql2 {SE
2e70: 4c 45 43 54 20 66 31 2b 46 32 20 61 73 20 78 79  LECT f1+F2 as xy
2e80: 7a 7a 79 20 46 52 4f 4d 20 74 65 73 74 31 20 4f  zzy FROM test1 O
2e90: 52 44 45 52 20 42 59 20 66 32 7d 7d 20 6d 73 67  RDER BY f2}} msg
2ea0: 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76 20 24 6d  ].  lappend v $m
2eb0: 73 67 0a 7d 20 7b 30 20 7b 78 79 7a 7a 79 20 33  sg.} {0 {xyzzy 3
2ec0: 33 20 78 79 7a 7a 79 20 37 37 7d 7d 0a 64 6f 5f  3 xyzzy 77}}.do_
2ed0: 74 65 73 74 20 73 65 6c 65 63 74 31 2d 36 2e 34  test select1-6.4
2ee0: 61 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74  a {.  set v [cat
2ef0: 63 68 20 7b 65 78 65 63 73 71 6c 32 20 7b 53 45  ch {execsql2 {SE
2f00: 4c 45 43 54 20 66 31 2b 46 32 20 46 52 4f 4d 20  LECT f1+F2 FROM 
2f10: 74 65 73 74 31 20 4f 52 44 45 52 20 42 59 20 66  test1 ORDER BY f
2f20: 32 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65  2}} msg].  lappe
2f30: 6e 64 20 76 20 24 6d 73 67 0a 7d 20 7b 30 20 7b  nd v $msg.} {0 {
2f40: 66 31 2b 46 32 20 33 33 20 66 31 2b 46 32 20 37  f1+F2 33 f1+F2 7
2f50: 37 7d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65  7}}.do_test sele
2f60: 63 74 31 2d 36 2e 35 20 7b 0a 20 20 73 65 74 20  ct1-6.5 {.  set 
2f70: 76 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73 71  v [catch {execsq
2f80: 6c 32 20 7b 53 45 4c 45 43 54 20 74 65 73 74 31  l2 {SELECT test1
2f90: 2e 66 31 2b 46 32 20 46 52 4f 4d 20 74 65 73 74  .f1+F2 FROM test
2fa0: 31 20 4f 52 44 45 52 20 42 59 20 66 32 7d 7d 20  1 ORDER BY f2}} 
2fb0: 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76  msg].  lappend v
2fc0: 20 24 6d 73 67 0a 7d 20 7b 30 20 7b 74 65 73 74   $msg.} {0 {test
2fd0: 31 2e 66 31 2b 46 32 20 33 33 20 74 65 73 74 31  1.f1+F2 33 test1
2fe0: 2e 66 31 2b 46 32 20 37 37 7d 7d 0a 64 6f 5f 74  .f1+F2 77}}.do_t
2ff0: 65 73 74 20 73 65 6c 65 63 74 31 2d 36 2e 35 2e  est select1-6.5.
3000: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 32 20 7b  1 {.  execsql2 {
3010: 50 52 41 47 4d 41 20 66 75 6c 6c 5f 63 6f 6c 75  PRAGMA full_colu
3020: 6d 6e 5f 6e 61 6d 65 73 3d 6f 6e 7d 0a 20 20 73  mn_names=on}.  s
3030: 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78 65  et v [catch {exe
3040: 63 73 71 6c 32 20 7b 53 45 4c 45 43 54 20 74 65  csql2 {SELECT te
3050: 73 74 31 2e 66 31 2b 46 32 20 46 52 4f 4d 20 74  st1.f1+F2 FROM t
3060: 65 73 74 31 20 4f 52 44 45 52 20 42 59 20 66 32  est1 ORDER BY f2
3070: 7d 7d 20 6d 73 67 5d 0a 20 20 65 78 65 63 73 71  }} msg].  execsq
3080: 6c 32 20 7b 50 52 41 47 4d 41 20 66 75 6c 6c 5f  l2 {PRAGMA full_
3090: 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 3d 6f 66 66  column_names=off
30a0: 7d 0a 20 20 6c 61 70 70 65 6e 64 20 76 20 24 6d  }.  lappend v $m
30b0: 73 67 0a 7d 20 7b 30 20 7b 74 65 73 74 31 2e 66  sg.} {0 {test1.f
30c0: 31 2b 46 32 20 33 33 20 74 65 73 74 31 2e 66 31  1+F2 33 test1.f1
30d0: 2b 46 32 20 37 37 7d 7d 0a 64 6f 5f 74 65 73 74  +F2 77}}.do_test
30e0: 20 73 65 6c 65 63 74 31 2d 36 2e 36 20 7b 0a 20   select1-6.6 {. 
30f0: 20 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65   set v [catch {e
3100: 78 65 63 73 71 6c 32 20 7b 53 45 4c 45 43 54 20  xecsql2 {SELECT 
3110: 74 65 73 74 31 2e 66 31 2b 46 32 2c 20 74 31 20  test1.f1+F2, t1 
3120: 46 52 4f 4d 20 74 65 73 74 31 2c 20 74 65 73 74  FROM test1, test
3130: 32 20 0a 20 20 20 20 20 20 20 20 20 4f 52 44 45  2 .         ORDE
3140: 52 20 42 59 20 66 32 7d 7d 20 6d 73 67 5d 0a 20  R BY f2}} msg]. 
3150: 20 6c 61 70 70 65 6e 64 20 76 20 24 6d 73 67 0a   lappend v $msg.
3160: 7d 20 7b 30 20 7b 74 65 73 74 31 2e 66 31 2b 46  } {0 {test1.f1+F
3170: 32 20 33 33 20 74 31 20 61 62 63 20 74 65 73 74  2 33 t1 abc test
3180: 31 2e 66 31 2b 46 32 20 37 37 20 74 31 20 61 62  1.f1+F2 77 t1 ab
3190: 63 7d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65  c}}.do_test sele
31a0: 63 74 31 2d 36 2e 37 20 7b 0a 20 20 73 65 74 20  ct1-6.7 {.  set 
31b0: 76 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73 71  v [catch {execsq
31c0: 6c 32 20 7b 53 45 4c 45 43 54 20 41 2e 66 31 2c  l2 {SELECT A.f1,
31d0: 20 74 31 20 46 52 4f 4d 20 74 65 73 74 31 20 61   t1 FROM test1 a
31e0: 73 20 41 2c 20 74 65 73 74 32 20 0a 20 20 20 20  s A, test2 .    
31f0: 20 20 20 20 20 4f 52 44 45 52 20 42 59 20 66 32       ORDER BY f2
3200: 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e  }} msg].  lappen
3210: 64 20 76 20 24 6d 73 67 0a 7d 20 7b 30 20 7b 66  d v $msg.} {0 {f
3220: 31 20 31 31 20 74 31 20 61 62 63 20 66 31 20 33  1 11 t1 abc f1 3
3230: 33 20 74 31 20 61 62 63 7d 7d 0a 64 6f 5f 74 65  3 t1 abc}}.do_te
3240: 73 74 20 73 65 6c 65 63 74 31 2d 36 2e 38 20 7b  st select1-6.8 {
3250: 0a 20 20 73 65 74 20 76 20 5b 63 61 74 63 68 20  .  set v [catch 
3260: 7b 65 78 65 63 73 71 6c 32 20 7b 53 45 4c 45 43  {execsql2 {SELEC
3270: 54 20 41 2e 66 31 2c 20 66 31 20 46 52 4f 4d 20  T A.f1, f1 FROM 
3280: 74 65 73 74 31 20 61 73 20 41 2c 20 74 65 73 74  test1 as A, test
3290: 31 20 61 73 20 42 20 0a 20 20 20 20 20 20 20 20  1 as B .        
32a0: 20 4f 52 44 45 52 20 42 59 20 66 32 7d 7d 20 6d   ORDER BY f2}} m
32b0: 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76 20  sg].  lappend v 
32c0: 24 6d 73 67 0a 7d 20 7b 31 20 7b 61 6d 62 69 67  $msg.} {1 {ambig
32d0: 75 6f 75 73 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65  uous column name
32e0: 3a 20 66 31 7d 7d 0a 64 6f 5f 74 65 73 74 20 73  : f1}}.do_test s
32f0: 65 6c 65 63 74 31 2d 36 2e 38 62 20 7b 0a 20 20  elect1-6.8b {.  
3300: 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78  set v [catch {ex
3310: 65 63 73 71 6c 32 20 7b 53 45 4c 45 43 54 20 41  ecsql2 {SELECT A
3320: 2e 66 31 2c 20 42 2e 66 31 20 46 52 4f 4d 20 74  .f1, B.f1 FROM t
3330: 65 73 74 31 20 61 73 20 41 2c 20 74 65 73 74 31  est1 as A, test1
3340: 20 61 73 20 42 20 0a 20 20 20 20 20 20 20 20 20   as B .         
3350: 4f 52 44 45 52 20 42 59 20 66 32 7d 7d 20 6d 73  ORDER BY f2}} ms
3360: 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76 20 24  g].  lappend v $
3370: 6d 73 67 0a 7d 20 7b 31 20 7b 61 6d 62 69 67 75  msg.} {1 {ambigu
3380: 6f 75 73 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 3a  ous column name:
3390: 20 66 32 7d 7d 0a 64 6f 5f 74 65 73 74 20 73 65   f2}}.do_test se
33a0: 6c 65 63 74 31 2d 36 2e 38 63 20 7b 0a 20 20 73  lect1-6.8c {.  s
33b0: 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78 65  et v [catch {exe
33c0: 63 73 71 6c 32 20 7b 53 45 4c 45 43 54 20 41 2e  csql2 {SELECT A.
33d0: 66 31 2c 20 66 31 20 46 52 4f 4d 20 74 65 73 74  f1, f1 FROM test
33e0: 31 20 61 73 20 41 2c 20 74 65 73 74 31 20 61 73  1 as A, test1 as
33f0: 20 41 20 0a 20 20 20 20 20 20 20 20 20 4f 52 44   A .         ORD
3400: 45 52 20 42 59 20 66 32 7d 7d 20 6d 73 67 5d 0a  ER BY f2}} msg].
3410: 20 20 6c 61 70 70 65 6e 64 20 76 20 24 6d 73 67    lappend v $msg
3420: 0a 7d 20 7b 31 20 7b 61 6d 62 69 67 75 6f 75 73  .} {1 {ambiguous
3430: 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65 3a 20 41 2e   column name: A.
3440: 66 31 7d 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c  f1}}.do_test sel
3450: 65 63 74 31 2d 36 2e 39 2e 31 20 7b 0a 20 20 73  ect1-6.9.1 {.  s
3460: 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78 65  et v [catch {exe
3470: 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 41 2e 66  csql {SELECT A.f
3480: 31 2c 20 42 2e 66 31 20 46 52 4f 4d 20 74 65 73  1, B.f1 FROM tes
3490: 74 31 20 61 73 20 41 2c 20 74 65 73 74 31 20 61  t1 as A, test1 a
34a0: 73 20 42 20 0a 20 20 20 20 20 20 20 20 20 4f 52  s B .         OR
34b0: 44 45 52 20 42 59 20 41 2e 66 31 2c 20 42 2e 66  DER BY A.f1, B.f
34c0: 31 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65  1}} msg].  lappe
34d0: 6e 64 20 76 20 24 6d 73 67 0a 7d 20 7b 30 20 7b  nd v $msg.} {0 {
34e0: 31 31 20 31 31 20 31 31 20 33 33 20 33 33 20 31  11 11 11 33 33 1
34f0: 31 20 33 33 20 33 33 7d 7d 0a 64 6f 5f 74 65 73  1 33 33}}.do_tes
3500: 74 20 73 65 6c 65 63 74 31 2d 36 2e 39 2e 32 20  t select1-6.9.2 
3510: 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74 63 68  {.  set v [catch
3520: 20 7b 65 78 65 63 73 71 6c 32 20 7b 53 45 4c 45   {execsql2 {SELE
3530: 43 54 20 41 2e 66 31 2c 20 42 2e 66 31 20 46 52  CT A.f1, B.f1 FR
3540: 4f 4d 20 74 65 73 74 31 20 61 73 20 41 2c 20 74  OM test1 as A, t
3550: 65 73 74 31 20 61 73 20 42 20 0a 20 20 20 20 20  est1 as B .     
3560: 20 20 20 20 4f 52 44 45 52 20 42 59 20 41 2e 66      ORDER BY A.f
3570: 31 2c 20 42 2e 66 31 7d 7d 20 6d 73 67 5d 0a 20  1, B.f1}} msg]. 
3580: 20 6c 61 70 70 65 6e 64 20 76 20 24 6d 73 67 0a   lappend v $msg.
3590: 7d 20 7b 30 20 7b 66 31 20 31 31 20 66 31 20 31  } {0 {f1 11 f1 1
35a0: 31 20 66 31 20 33 33 20 66 31 20 33 33 20 66 31  1 f1 33 f1 33 f1
35b0: 20 31 31 20 66 31 20 31 31 20 66 31 20 33 33 20   11 f1 11 f1 33 
35c0: 66 31 20 33 33 7d 7d 0a 0a 69 66 63 61 70 61 62  f1 33}}..ifcapab
35d0: 6c 65 20 63 6f 6d 70 6f 75 6e 64 20 7b 0a 64 6f  le compound {.do
35e0: 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 36 2e  _test select1-6.
35f0: 31 30 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61  10 {.  set v [ca
3600: 74 63 68 20 7b 65 78 65 63 73 71 6c 32 20 7b 0a  tch {execsql2 {.
3610: 20 20 20 20 53 45 4c 45 43 54 20 66 31 20 46 52      SELECT f1 FR
3620: 4f 4d 20 74 65 73 74 31 20 55 4e 49 4f 4e 20 53  OM test1 UNION S
3630: 45 4c 45 43 54 20 66 32 20 46 52 4f 4d 20 74 65  ELECT f2 FROM te
3640: 73 74 31 0a 20 20 20 20 4f 52 44 45 52 20 42 59  st1.    ORDER BY
3650: 20 66 32 3b 0a 20 20 7d 7d 20 6d 73 67 5d 0a 20   f2;.  }} msg]. 
3660: 20 6c 61 70 70 65 6e 64 20 76 20 24 6d 73 67 0a   lappend v $msg.
3670: 7d 20 7b 30 20 7b 66 32 20 31 31 20 66 32 20 32  } {0 {f2 11 f2 2
3680: 32 20 66 32 20 33 33 20 66 32 20 34 34 7d 7d 0a  2 f2 33 f2 44}}.
3690: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d  do_test select1-
36a0: 36 2e 31 31 20 7b 0a 20 20 73 65 74 20 76 20 5b  6.11 {.  set v [
36b0: 63 61 74 63 68 20 7b 65 78 65 63 73 71 6c 32 20  catch {execsql2 
36c0: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 66 31 20  {.    SELECT f1 
36d0: 46 52 4f 4d 20 74 65 73 74 31 20 55 4e 49 4f 4e  FROM test1 UNION
36e0: 20 53 45 4c 45 43 54 20 66 32 2b 31 30 30 20 46   SELECT f2+100 F
36f0: 52 4f 4d 20 74 65 73 74 31 0a 20 20 20 20 4f 52  ROM test1.    OR
3700: 44 45 52 20 42 59 20 66 32 2b 31 30 30 3b 0a 20  DER BY f2+100;. 
3710: 20 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65   }} msg].  lappe
3720: 6e 64 20 76 20 24 6d 73 67 0a 7d 20 7b 30 20 7b  nd v $msg.} {0 {
3730: 66 32 2b 31 30 30 20 31 31 20 66 32 2b 31 30 30  f2+100 11 f2+100
3740: 20 33 33 20 66 32 2b 31 30 30 20 31 32 32 20 66   33 f2+100 122 f
3750: 32 2b 31 30 30 20 31 34 34 7d 7d 0a 7d 20 3b 23  2+100 144}}.} ;#
3760: 69 66 63 61 70 61 62 6c 65 20 63 6f 6d 70 6f 75  ifcapable compou
3770: 6e 64 0a 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65  nd..do_test sele
3780: 63 74 31 2d 37 2e 31 20 7b 0a 20 20 73 65 74 20  ct1-7.1 {.  set 
3790: 76 20 5b 63 61 74 63 68 20 7b 65 78 65 63 73 71  v [catch {execsq
37a0: 6c 20 7b 0a 20 20 20 20 20 53 45 4c 45 43 54 20  l {.     SELECT 
37b0: 66 31 20 46 52 4f 4d 20 74 65 73 74 31 20 57 48  f1 FROM test1 WH
37c0: 45 52 45 20 66 32 3d 3b 0a 20 20 7d 7d 20 6d 73  ERE f2=;.  }} ms
37d0: 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76 20 24  g].  lappend v $
37e0: 6d 73 67 0a 7d 20 7b 31 20 7b 6e 65 61 72 20 22  msg.} {1 {near "
37f0: 3b 22 3a 20 73 79 6e 74 61 78 20 65 72 72 6f 72  ;": syntax error
3800: 7d 7d 0a 69 66 63 61 70 61 62 6c 65 20 63 6f 6d  }}.ifcapable com
3810: 70 6f 75 6e 64 20 7b 0a 64 6f 5f 74 65 73 74 20  pound {.do_test 
3820: 73 65 6c 65 63 74 31 2d 37 2e 32 20 7b 0a 20 20  select1-7.2 {.  
3830: 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78  set v [catch {ex
3840: 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 53 45 4c  ecsql {.     SEL
3850: 45 43 54 20 66 31 20 46 52 4f 4d 20 74 65 73 74  ECT f1 FROM test
3860: 31 20 55 4e 49 4f 4e 20 53 45 4c 45 43 54 20 57  1 UNION SELECT W
3870: 48 45 52 45 3b 0a 20 20 7d 7d 20 6d 73 67 5d 0a  HERE;.  }} msg].
3880: 20 20 6c 61 70 70 65 6e 64 20 76 20 24 6d 73 67    lappend v $msg
3890: 0a 7d 20 7b 31 20 7b 6e 65 61 72 20 22 57 48 45  .} {1 {near "WHE
38a0: 52 45 22 3a 20 73 79 6e 74 61 78 20 65 72 72 6f  RE": syntax erro
38b0: 72 7d 7d 0a 7d 20 3b 23 20 69 66 63 61 70 61 62  r}}.} ;# ifcapab
38c0: 6c 65 20 63 6f 6d 70 6f 75 6e 64 0a 64 6f 5f 74  le compound.do_t
38d0: 65 73 74 20 73 65 6c 65 63 74 31 2d 37 2e 33 20  est select1-7.3 
38e0: 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74 63 68  {.  set v [catch
38f0: 20 7b 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43   {execsql {SELEC
3900: 54 20 66 31 20 46 52 4f 4d 20 74 65 73 74 31 20  T f1 FROM test1 
3910: 61 73 20 27 68 69 27 2c 20 74 65 73 74 32 20 61  as 'hi', test2 a
3920: 73 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65  s}} msg].  lappe
3930: 6e 64 20 76 20 24 6d 73 67 0a 7d 20 7b 31 20 7b  nd v $msg.} {1 {
3940: 6e 65 61 72 20 22 61 73 22 3a 20 73 79 6e 74 61  near "as": synta
3950: 78 20 65 72 72 6f 72 7d 7d 0a 64 6f 5f 74 65 73  x error}}.do_tes
3960: 74 20 73 65 6c 65 63 74 31 2d 37 2e 34 20 7b 0a  t select1-7.4 {.
3970: 20 20 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b    set v [catch {
3980: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 53  execsql {.     S
3990: 45 4c 45 43 54 20 66 31 20 46 52 4f 4d 20 74 65  ELECT f1 FROM te
39a0: 73 74 31 20 4f 52 44 45 52 20 42 59 3b 0a 20 20  st1 ORDER BY;.  
39b0: 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e  }} msg].  lappen
39c0: 64 20 76 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 6e  d v $msg.} {1 {n
39d0: 65 61 72 20 22 3b 22 3a 20 73 79 6e 74 61 78 20  ear ";": syntax 
39e0: 65 72 72 6f 72 7d 7d 0a 64 6f 5f 74 65 73 74 20  error}}.do_test 
39f0: 73 65 6c 65 63 74 31 2d 37 2e 35 20 7b 0a 20 20  select1-7.5 {.  
3a00: 73 65 74 20 76 20 5b 63 61 74 63 68 20 7b 65 78  set v [catch {ex
3a10: 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 53 45 4c  ecsql {.     SEL
3a20: 45 43 54 20 66 31 20 46 52 4f 4d 20 74 65 73 74  ECT f1 FROM test
3a30: 31 20 4f 52 44 45 52 20 42 59 20 66 31 20 64 65  1 ORDER BY f1 de
3a40: 73 63 2c 20 66 32 20 77 68 65 72 65 3b 0a 20 20  sc, f2 where;.  
3a50: 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e  }} msg].  lappen
3a60: 64 20 76 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 6e  d v $msg.} {1 {n
3a70: 65 61 72 20 22 77 68 65 72 65 22 3a 20 73 79 6e  ear "where": syn
3a80: 74 61 78 20 65 72 72 6f 72 7d 7d 0a 64 6f 5f 74  tax error}}.do_t
3a90: 65 73 74 20 73 65 6c 65 63 74 31 2d 37 2e 36 20  est select1-7.6 
3aa0: 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74 63 68  {.  set v [catch
3ab0: 20 7b 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20   {execsql {.    
3ac0: 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 66 31   SELECT count(f1
3ad0: 2c 66 32 20 46 52 4f 4d 20 74 65 73 74 31 3b 0a  ,f2 FROM test1;.
3ae0: 20 20 7d 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70    }} msg].  lapp
3af0: 65 6e 64 20 76 20 24 6d 73 67 0a 7d 20 7b 31 20  end v $msg.} {1 
3b00: 7b 6e 65 61 72 20 22 46 52 4f 4d 22 3a 20 73 79  {near "FROM": sy
3b10: 6e 74 61 78 20 65 72 72 6f 72 7d 7d 0a 64 6f 5f  ntax error}}.do_
3b20: 74 65 73 74 20 73 65 6c 65 63 74 31 2d 37 2e 37  test select1-7.7
3b30: 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74 63   {.  set v [catc
3b40: 68 20 7b 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  h {execsql {.   
3b50: 20 20 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 66    SELECT count(f
3b60: 31 2c 66 32 2b 29 20 46 52 4f 4d 20 74 65 73 74  1,f2+) FROM test
3b70: 31 3b 0a 20 20 7d 7d 20 6d 73 67 5d 0a 20 20 6c  1;.  }} msg].  l
3b80: 61 70 70 65 6e 64 20 76 20 24 6d 73 67 0a 7d 20  append v $msg.} 
3b90: 7b 31 20 7b 6e 65 61 72 20 22 29 22 3a 20 73 79  {1 {near ")": sy
3ba0: 6e 74 61 78 20 65 72 72 6f 72 7d 7d 0a 64 6f 5f  ntax error}}.do_
3bb0: 74 65 73 74 20 73 65 6c 65 63 74 31 2d 37 2e 38  test select1-7.8
3bc0: 20 7b 0a 20 20 73 65 74 20 76 20 5b 63 61 74 63   {.  set v [catc
3bd0: 68 20 7b 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  h {execsql {.   
3be0: 20 20 53 45 4c 45 43 54 20 66 31 20 46 52 4f 4d    SELECT f1 FROM
3bf0: 20 74 65 73 74 31 20 4f 52 44 45 52 20 42 59 20   test1 ORDER BY 
3c00: 66 32 2c 20 66 31 2b 3b 0a 20 20 7d 7d 20 6d 73  f2, f1+;.  }} ms
3c10: 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 76 20 24  g].  lappend v $
3c20: 6d 73 67 0a 7d 20 7b 31 20 7b 6e 65 61 72 20 22  msg.} {1 {near "
3c30: 3b 22 3a 20 73 79 6e 74 61 78 20 65 72 72 6f 72  ;": syntax error
3c40: 7d 7d 0a 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65  }}..do_test sele
3c50: 63 74 31 2d 38 2e 31 20 7b 0a 20 20 65 78 65 63  ct1-8.1 {.  exec
3c60: 73 71 6c 20 7b 53 45 4c 45 43 54 20 66 31 20 46  sql {SELECT f1 F
3c70: 52 4f 4d 20 74 65 73 74 31 20 57 48 45 52 45 20  ROM test1 WHERE 
3c80: 34 2e 33 2b 32 2e 34 20 4f 52 20 31 20 4f 52 44  4.3+2.4 OR 1 ORD
3c90: 45 52 20 42 59 20 66 31 7d 0a 7d 20 7b 31 31 20  ER BY f1}.} {11 
3ca0: 33 33 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65  33}.do_test sele
3cb0: 63 74 31 2d 38 2e 32 20 7b 0a 20 20 65 78 65 63  ct1-8.2 {.  exec
3cc0: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
3cd0: 20 66 31 20 46 52 4f 4d 20 74 65 73 74 31 20 57   f1 FROM test1 W
3ce0: 48 45 52 45 20 28 27 78 27 20 7c 7c 20 66 31 29  HERE ('x' || f1)
3cf0: 20 42 45 54 57 45 45 4e 20 27 78 31 30 27 20 41   BETWEEN 'x10' A
3d00: 4e 44 20 27 78 32 30 27 0a 20 20 20 20 4f 52 44  ND 'x20'.    ORD
3d10: 45 52 20 42 59 20 66 31 0a 20 20 7d 0a 7d 20 7b  ER BY f1.  }.} {
3d20: 31 31 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65  11}.do_test sele
3d30: 63 74 31 2d 38 2e 33 20 7b 0a 20 20 65 78 65 63  ct1-8.3 {.  exec
3d40: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
3d50: 20 66 31 20 46 52 4f 4d 20 74 65 73 74 31 20 57   f1 FROM test1 W
3d60: 48 45 52 45 20 35 2d 33 3d 3d 32 0a 20 20 20 20  HERE 5-3==2.    
3d70: 4f 52 44 45 52 20 42 59 20 66 31 0a 20 20 7d 0a  ORDER BY f1.  }.
3d80: 7d 20 7b 31 31 20 33 33 7d 0a 0a 23 20 54 4f 44  } {11 33}..# TOD
3d90: 4f 3a 20 54 68 69 73 20 74 65 73 74 20 69 73 20  O: This test is 
3da0: 66 61 69 6c 69 6e 67 20 62 65 63 61 75 73 65 20  failing because 
3db0: 66 31 20 69 73 20 6e 6f 77 20 62 65 69 6e 67 20  f1 is now being 
3dc0: 6c 6f 61 64 65 64 20 6f 66 66 20 74 68 65 0a 23  loaded off the.#
3dd0: 20 64 69 73 6b 20 61 73 20 61 20 76 64 62 65 20   disk as a vdbe 
3de0: 69 6e 74 65 67 65 72 2c 20 6e 6f 74 20 61 20 73  integer, not a s
3df0: 74 72 69 6e 67 2e 20 48 65 6e 63 65 20 74 68 65  tring. Hence the
3e00: 20 76 61 6c 75 65 20 6f 66 20 66 31 2f 28 66 31   value of f1/(f1
3e10: 2d 31 31 29 0a 23 20 63 68 61 6e 67 65 73 20 62  -11).# changes b
3e20: 65 63 61 75 73 65 20 6f 66 20 72 6f 75 6e 64 69  ecause of roundi
3e30: 6e 67 2e 20 44 69 73 61 62 6c 65 20 74 68 65 20  ng. Disable the 
3e40: 74 65 73 74 20 66 6f 72 20 6e 6f 77 2e 0a 69 66  test for now..if
3e50: 20 30 20 7b 0a 64 6f 5f 74 65 73 74 20 73 65 6c   0 {.do_test sel
3e60: 65 63 74 31 2d 38 2e 34 20 7b 0a 20 20 65 78 65  ect1-8.4 {.  exe
3e70: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
3e80: 54 20 63 6f 61 6c 65 73 63 65 28 66 31 2f 28 66  T coalesce(f1/(f
3e90: 31 2d 31 31 29 2c 27 78 27 29 2c 0a 20 20 20 20  1-11),'x'),.    
3ea0: 20 20 20 20 20 20 20 63 6f 61 6c 65 73 63 65 28         coalesce(
3eb0: 6d 69 6e 28 66 31 2f 28 66 31 2d 31 31 29 2c 35  min(f1/(f1-11),5
3ec0: 29 2c 27 79 27 29 2c 0a 20 20 20 20 20 20 20 20  ),'y'),.        
3ed0: 20 20 20 63 6f 61 6c 65 73 63 65 28 6d 61 78 28     coalesce(max(
3ee0: 66 31 2f 28 66 31 2d 33 33 29 2c 36 29 2c 27 7a  f1/(f1-33),6),'z
3ef0: 27 29 0a 20 20 20 20 46 52 4f 4d 20 74 65 73 74  ').    FROM test
3f00: 31 20 4f 52 44 45 52 20 42 59 20 66 31 0a 20 20  1 ORDER BY f1.  
3f10: 7d 0a 7d 20 7b 78 20 79 20 36 20 31 2e 35 20 31  }.} {x y 6 1.5 1
3f20: 2e 35 20 7a 7d 0a 7d 0a 64 6f 5f 74 65 73 74 20  .5 z}.}.do_test 
3f30: 73 65 6c 65 63 74 31 2d 38 2e 35 20 7b 0a 20 20  select1-8.5 {.  
3f40: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
3f50: 4c 45 43 54 20 6d 69 6e 28 31 2c 32 2c 33 29 2c  LECT min(1,2,3),
3f60: 20 2d 6d 61 78 28 31 2c 32 2c 33 29 0a 20 20 20   -max(1,2,3).   
3f70: 20 46 52 4f 4d 20 74 65 73 74 31 20 4f 52 44 45   FROM test1 ORDE
3f80: 52 20 42 59 20 66 31 0a 20 20 7d 0a 7d 20 7b 31  R BY f1.  }.} {1
3f90: 20 2d 33 20 31 20 2d 33 7d 0a 0a 0a 23 20 43 68   -3 1 -3}...# Ch
3fa0: 65 63 6b 20 74 68 65 20 62 65 68 61 76 69 6f 72  eck the behavior
3fb0: 20 77 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74   when the result
3fc0: 20 73 65 74 20 69 73 20 65 6d 70 74 79 0a 23 0a   set is empty.#.
3fd0: 23 20 53 51 4c 69 74 65 20 76 33 20 61 6c 77 61  # SQLite v3 alwa
3fe0: 79 73 20 73 65 74 73 20 72 28 2a 29 2e 0a 23 0a  ys sets r(*)..#.
3ff0: 23 20 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  # do_test select
4000: 31 2d 39 2e 31 20 7b 0a 23 20 20 20 63 61 74 63  1-9.1 {.#   catc
4010: 68 20 7b 75 6e 73 65 74 20 72 7d 0a 23 20 20 20  h {unset r}.#   
4020: 73 65 74 20 72 28 2a 29 20 7b 7d 0a 23 20 20 20  set r(*) {}.#   
4030: 64 62 20 65 76 61 6c 20 7b 53 45 4c 45 43 54 20  db eval {SELECT 
4040: 2a 20 46 52 4f 4d 20 74 65 73 74 31 20 57 48 45  * FROM test1 WHE
4050: 52 45 20 66 31 3c 30 7d 20 72 20 7b 7d 0a 23 20  RE f1<0} r {}.# 
4060: 20 20 73 65 74 20 72 28 2a 29 0a 23 20 7d 20 7b    set r(*).# } {
4070: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
4080: 31 2d 39 2e 32 20 7b 0a 20 20 65 78 65 63 73 71  1-9.2 {.  execsq
4090: 6c 20 7b 50 52 41 47 4d 41 20 65 6d 70 74 79 5f  l {PRAGMA empty_
40a0: 72 65 73 75 6c 74 5f 63 61 6c 6c 62 61 63 6b 73  result_callbacks
40b0: 3d 6f 6e 7d 0a 20 20 63 61 74 63 68 20 7b 75 6e  =on}.  catch {un
40c0: 73 65 74 20 72 7d 0a 20 20 73 65 74 20 72 28 2a  set r}.  set r(*
40d0: 29 20 7b 7d 0a 20 20 64 62 20 65 76 61 6c 20 7b  ) {}.  db eval {
40e0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 65  SELECT * FROM te
40f0: 73 74 31 20 57 48 45 52 45 20 66 31 3c 30 7d 20  st1 WHERE f1<0} 
4100: 72 20 7b 7d 0a 20 20 73 65 74 20 72 28 2a 29 0a  r {}.  set r(*).
4110: 7d 20 7b 66 31 20 66 32 7d 0a 69 66 63 61 70 61  } {f1 f2}.ifcapa
4120: 62 6c 65 20 73 75 62 71 75 65 72 79 20 7b 0a 20  ble subquery {. 
4130: 20 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31   do_test select1
4140: 2d 39 2e 33 20 7b 0a 20 20 20 20 73 65 74 20 72  -9.3 {.    set r
4150: 28 2a 29 20 7b 7d 0a 20 20 20 20 64 62 20 65 76  (*) {}.    db ev
4160: 61 6c 20 7b 53 45 4c 45 43 54 20 2a 20 46 52 4f  al {SELECT * FRO
4170: 4d 20 74 65 73 74 31 20 57 48 45 52 45 20 66 31  M test1 WHERE f1
4180: 3c 28 73 65 6c 65 63 74 20 63 6f 75 6e 74 28 2a  <(select count(*
4190: 29 20 66 72 6f 6d 20 74 65 73 74 32 29 7d 20 72  ) from test2)} r
41a0: 20 7b 7d 0a 20 20 20 20 73 65 74 20 72 28 2a 29   {}.    set r(*)
41b0: 0a 20 20 7d 20 7b 66 31 20 66 32 7d 0a 7d 0a 64  .  } {f1 f2}.}.d
41c0: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 39  o_test select1-9
41d0: 2e 34 20 7b 0a 20 20 73 65 74 20 72 28 2a 29 20  .4 {.  set r(*) 
41e0: 7b 7d 0a 20 20 64 62 20 65 76 61 6c 20 7b 53 45  {}.  db eval {SE
41f0: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 65 73 74  LECT * FROM test
4200: 31 20 4f 52 44 45 52 20 42 59 20 66 31 7d 20 72  1 ORDER BY f1} r
4210: 20 7b 7d 0a 20 20 73 65 74 20 72 28 2a 29 0a 7d   {}.  set r(*).}
4220: 20 7b 66 31 20 66 32 7d 0a 64 6f 5f 74 65 73 74   {f1 f2}.do_test
4230: 20 73 65 6c 65 63 74 31 2d 39 2e 35 20 7b 0a 20   select1-9.5 {. 
4240: 20 73 65 74 20 72 28 2a 29 20 7b 7d 0a 20 20 64   set r(*) {}.  d
4250: 62 20 65 76 61 6c 20 7b 53 45 4c 45 43 54 20 2a  b eval {SELECT *
4260: 20 46 52 4f 4d 20 74 65 73 74 31 20 57 48 45 52   FROM test1 WHER
4270: 45 20 66 31 3c 30 20 4f 52 44 45 52 20 42 59 20  E f1<0 ORDER BY 
4280: 66 31 7d 20 72 20 7b 7d 0a 20 20 73 65 74 20 72  f1} r {}.  set r
4290: 28 2a 29 0a 7d 20 7b 66 31 20 66 32 7d 0a 75 6e  (*).} {f1 f2}.un
42a0: 73 65 74 20 72 0a 0a 23 20 43 68 65 63 6b 20 66  set r..# Check f
42b0: 6f 72 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75  or ORDER BY clau
42c0: 73 65 73 20 74 68 61 74 20 72 65 66 65 72 20 74  ses that refer t
42d0: 6f 20 61 6e 20 41 53 20 6e 61 6d 65 20 69 6e 20  o an AS name in 
42e0: 74 68 65 20 63 6f 6c 75 6d 6e 20 6c 69 73 74 0a  the column list.
42f0: 23 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  #.do_test select
4300: 31 2d 31 30 2e 31 20 7b 0a 20 20 65 78 65 63 73  1-10.1 {.  execs
4310: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
4320: 66 31 20 41 53 20 78 20 46 52 4f 4d 20 74 65 73  f1 AS x FROM tes
4330: 74 31 20 4f 52 44 45 52 20 42 59 20 78 0a 20 20  t1 ORDER BY x.  
4340: 7d 0a 7d 20 7b 31 31 20 33 33 7d 0a 64 6f 5f 74  }.} {11 33}.do_t
4350: 65 73 74 20 73 65 6c 65 63 74 31 2d 31 30 2e 32  est select1-10.2
4360: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
4370: 20 20 20 53 45 4c 45 43 54 20 66 31 20 41 53 20     SELECT f1 AS 
4380: 78 20 46 52 4f 4d 20 74 65 73 74 31 20 4f 52 44  x FROM test1 ORD
4390: 45 52 20 42 59 20 2d 78 0a 20 20 7d 0a 7d 20 7b  ER BY -x.  }.} {
43a0: 33 33 20 31 31 7d 0a 64 6f 5f 74 65 73 74 20 73  33 11}.do_test s
43b0: 65 6c 65 63 74 31 2d 31 30 2e 33 20 7b 0a 20 20  elect1-10.3 {.  
43c0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
43d0: 4c 45 43 54 20 66 31 2d 32 33 20 41 53 20 78 20  LECT f1-23 AS x 
43e0: 46 52 4f 4d 20 74 65 73 74 31 20 4f 52 44 45 52  FROM test1 ORDER
43f0: 20 42 59 20 61 62 73 28 78 29 0a 20 20 7d 0a 7d   BY abs(x).  }.}
4400: 20 7b 31 30 20 2d 31 32 7d 0a 64 6f 5f 74 65 73   {10 -12}.do_tes
4410: 74 20 73 65 6c 65 63 74 31 2d 31 30 2e 34 20 7b  t select1-10.4 {
4420: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
4430: 20 53 45 4c 45 43 54 20 66 31 2d 32 33 20 41 53   SELECT f1-23 AS
4440: 20 78 20 46 52 4f 4d 20 74 65 73 74 31 20 4f 52   x FROM test1 OR
4450: 44 45 52 20 42 59 20 2d 61 62 73 28 78 29 0a 20  DER BY -abs(x). 
4460: 20 7d 0a 7d 20 7b 2d 31 32 20 31 30 7d 0a 64 6f   }.} {-12 10}.do
4470: 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 31 30  _test select1-10
4480: 2e 35 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  .5 {.  execsql {
4490: 0a 20 20 20 20 53 45 4c 45 43 54 20 66 31 2d 32  .    SELECT f1-2
44a0: 32 20 41 53 20 78 2c 20 66 32 2d 32 32 20 61 73  2 AS x, f2-22 as
44b0: 20 79 20 46 52 4f 4d 20 74 65 73 74 31 0a 20 20   y FROM test1.  
44c0: 7d 0a 7d 20 7b 2d 31 31 20 30 20 31 31 20 32 32  }.} {-11 0 11 22
44d0: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
44e0: 31 2d 31 30 2e 36 20 7b 0a 20 20 65 78 65 63 73  1-10.6 {.  execs
44f0: 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20  ql {.    SELECT 
4500: 66 31 2d 32 32 20 41 53 20 78 2c 20 66 32 2d 32  f1-22 AS x, f2-2
4510: 32 20 61 73 20 79 20 46 52 4f 4d 20 74 65 73 74  2 as y FROM test
4520: 31 20 57 48 45 52 45 20 78 3e 30 20 41 4e 44 20  1 WHERE x>0 AND 
4530: 79 3c 35 30 0a 20 20 7d 0a 7d 20 7b 31 31 20 32  y<50.  }.} {11 2
4540: 32 7d 0a 0a 23 20 43 68 65 63 6b 20 74 68 65 20  2}..# Check the 
4550: 61 62 69 6c 69 74 79 20 74 6f 20 73 70 65 63 69  ability to speci
4560: 66 79 20 22 54 41 42 4c 45 2e 2a 22 20 69 6e 20  fy "TABLE.*" in 
4570: 74 68 65 20 72 65 73 75 6c 74 20 73 65 74 20 6f  the result set o
4580: 66 20 61 20 53 45 4c 45 43 54 0a 23 0a 64 6f 5f  f a SELECT.#.do_
4590: 74 65 73 74 20 73 65 6c 65 63 74 31 2d 31 31 2e  test select1-11.
45a0: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  1 {.  execsql {.
45b0: 20 20 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20      DELETE FROM 
45c0: 74 33 3b 0a 20 20 20 20 44 45 4c 45 54 45 20 46  t3;.    DELETE F
45d0: 52 4f 4d 20 74 34 3b 0a 20 20 20 20 49 4e 53 45  ROM t4;.    INSE
45e0: 52 54 20 49 4e 54 4f 20 74 33 20 56 41 4c 55 45  RT INTO t3 VALUE
45f0: 53 28 31 2c 32 29 3b 0a 20 20 20 20 49 4e 53 45  S(1,2);.    INSE
4600: 52 54 20 49 4e 54 4f 20 74 34 20 56 41 4c 55 45  RT INTO t4 VALUE
4610: 53 28 33 2c 34 29 3b 0a 20 20 20 20 53 45 4c 45  S(3,4);.    SELE
4620: 43 54 20 2a 20 46 52 4f 4d 20 74 33 2c 20 74 34  CT * FROM t3, t4
4630: 3b 0a 20 20 7d 0a 7d 20 7b 31 20 32 20 33 20 34  ;.  }.} {1 2 3 4
4640: 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74  }.do_test select
4650: 31 2d 31 31 2e 32 2e 31 20 7b 0a 20 20 65 78 65  1-11.2.1 {.  exe
4660: 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  csql {.    SELEC
4670: 54 20 2a 20 46 52 4f 4d 20 74 33 2c 20 74 34 3b  T * FROM t3, t4;
4680: 0a 20 20 7d 0a 7d 20 7b 31 20 32 20 33 20 34 7d  .  }.} {1 2 3 4}
4690: 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31  .do_test select1
46a0: 2d 31 31 2e 32 2e 32 20 7b 0a 20 20 65 78 65 63  -11.2.2 {.  exec
46b0: 73 71 6c 32 20 7b 0a 20 20 20 20 53 45 4c 45 43  sql2 {.    SELEC
46c0: 54 20 2a 20 46 52 4f 4d 20 74 33 2c 20 74 34 3b  T * FROM t3, t4;
46d0: 0a 20 20 7d 0a 7d 20 7b 61 20 33 20 62 20 34 20  .  }.} {a 3 b 4 
46e0: 61 20 33 20 62 20 34 7d 0a 64 6f 5f 74 65 73 74  a 3 b 4}.do_test
46f0: 20 73 65 6c 65 63 74 31 2d 31 31 2e 34 2e 31 20   select1-11.4.1 
4700: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
4710: 20 20 53 45 4c 45 43 54 20 74 33 2e 2a 2c 20 74    SELECT t3.*, t
4720: 34 2e 62 20 46 52 4f 4d 20 74 33 2c 20 74 34 3b  4.b FROM t3, t4;
4730: 0a 20 20 7d 0a 7d 20 7b 31 20 32 20 34 7d 0a 64  .  }.} {1 2 4}.d
4740: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 31  o_test select1-1
4750: 31 2e 34 2e 32 20 7b 0a 20 20 65 78 65 63 73 71  1.4.2 {.  execsq
4760: 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 22  l {.    SELECT "
4770: 74 33 22 2e 2a 2c 20 74 34 2e 62 20 46 52 4f 4d  t3".*, t4.b FROM
4780: 20 74 33 2c 20 74 34 3b 0a 20 20 7d 0a 7d 20 7b   t3, t4;.  }.} {
4790: 31 20 32 20 34 7d 0a 64 6f 5f 74 65 73 74 20 73  1 2 4}.do_test s
47a0: 65 6c 65 63 74 31 2d 31 31 2e 35 2e 31 20 7b 0a  elect1-11.5.1 {.
47b0: 20 20 65 78 65 63 73 71 6c 32 20 7b 0a 20 20 20    execsql2 {.   
47c0: 20 53 45 4c 45 43 54 20 74 33 2e 2a 2c 20 74 34   SELECT t3.*, t4
47d0: 2e 62 20 46 52 4f 4d 20 74 33 2c 20 74 34 3b 0a  .b FROM t3, t4;.
47e0: 20 20 7d 0a 7d 20 7b 61 20 31 20 62 20 34 20 62    }.} {a 1 b 4 b
47f0: 20 34 7d 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65   4}.do_test sele
4800: 63 74 31 2d 31 31 2e 36 20 7b 0a 20 20 65 78 65  ct1-11.6 {.  exe
4810: 63 73 71 6c 32 20 7b 0a 20 20 20 20 53 45 4c 45  csql2 {.    SELE
4820: 43 54 20 78 2e 2a 2c 20 79 2e 62 20 46 52 4f 4d  CT x.*, y.b FROM
4830: 20 74 33 20 41 53 20 78 2c 20 74 34 20 41 53 20   t3 AS x, t4 AS 
4840: 79 3b 0a 20 20 7d 0a 7d 20 7b 61 20 31 20 62 20  y;.  }.} {a 1 b 
4850: 34 20 62 20 34 7d 0a 64 6f 5f 74 65 73 74 20 73  4 b 4}.do_test s
4860: 65 6c 65 63 74 31 2d 31 31 2e 37 20 7b 0a 20 20  elect1-11.7 {.  
4870: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
4880: 4c 45 43 54 20 74 33 2e 62 2c 20 74 34 2e 2a 20  LECT t3.b, t4.* 
4890: 46 52 4f 4d 20 74 33 2c 20 74 34 3b 0a 20 20 7d  FROM t3, t4;.  }
48a0: 0a 7d 20 7b 32 20 33 20 34 7d 0a 64 6f 5f 74 65  .} {2 3 4}.do_te
48b0: 73 74 20 73 65 6c 65 63 74 31 2d 31 31 2e 38 20  st select1-11.8 
48c0: 7b 0a 20 20 65 78 65 63 73 71 6c 32 20 7b 0a 20  {.  execsql2 {. 
48d0: 20 20 20 53 45 4c 45 43 54 20 74 33 2e 62 2c 20     SELECT t3.b, 
48e0: 74 34 2e 2a 20 46 52 4f 4d 20 74 33 2c 20 74 34  t4.* FROM t3, t4
48f0: 3b 0a 20 20 7d 0a 7d 20 7b 62 20 34 20 61 20 33  ;.  }.} {b 4 a 3
4900: 20 62 20 34 7d 0a 64 6f 5f 74 65 73 74 20 73 65   b 4}.do_test se
4910: 6c 65 63 74 31 2d 31 31 2e 39 20 7b 0a 20 20 65  lect1-11.9 {.  e
4920: 78 65 63 73 71 6c 32 20 7b 0a 20 20 20 20 53 45  xecsql2 {.    SE
4930: 4c 45 43 54 20 78 2e 62 2c 20 79 2e 2a 20 46 52  LECT x.b, y.* FR
4940: 4f 4d 20 74 33 20 41 53 20 78 2c 20 74 34 20 41  OM t3 AS x, t4 A
4950: 53 20 79 3b 0a 20 20 7d 0a 7d 20 7b 62 20 34 20  S y;.  }.} {b 4 
4960: 61 20 33 20 62 20 34 7d 0a 64 6f 5f 74 65 73 74  a 3 b 4}.do_test
4970: 20 73 65 6c 65 63 74 31 2d 31 31 2e 31 30 20 7b   select1-11.10 {
4980: 0a 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20 20  .  catchsql {.  
4990: 20 20 53 45 4c 45 43 54 20 74 35 2e 2a 20 46 52    SELECT t5.* FR
49a0: 4f 4d 20 74 33 2c 20 74 34 3b 0a 20 20 7d 0a 7d  OM t3, t4;.  }.}
49b0: 20 7b 31 20 7b 6e 6f 20 73 75 63 68 20 74 61 62   {1 {no such tab
49c0: 6c 65 3a 20 74 35 7d 7d 0a 64 6f 5f 74 65 73 74  le: t5}}.do_test
49d0: 20 73 65 6c 65 63 74 31 2d 31 31 2e 31 31 20 7b   select1-11.11 {
49e0: 0a 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20 20  .  catchsql {.  
49f0: 20 20 53 45 4c 45 43 54 20 74 33 2e 2a 20 46 52    SELECT t3.* FR
4a00: 4f 4d 20 74 33 20 41 53 20 78 2c 20 74 34 3b 0a  OM t3 AS x, t4;.
4a10: 20 20 7d 0a 7d 20 7b 31 20 7b 6e 6f 20 73 75 63    }.} {1 {no suc
4a20: 68 20 74 61 62 6c 65 3a 20 74 33 7d 7d 0a 69 66  h table: t3}}.if
4a30: 63 61 70 61 62 6c 65 20 73 75 62 71 75 65 72 79  capable subquery
4a40: 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 73 65 6c   {.  do_test sel
4a50: 65 63 74 31 2d 31 31 2e 31 32 20 7b 0a 20 20 20  ect1-11.12 {.   
4a60: 20 65 78 65 63 73 71 6c 32 20 7b 0a 20 20 20 20   execsql2 {.    
4a70: 20 20 53 45 4c 45 43 54 20 74 33 2e 2a 20 46 52    SELECT t3.* FR
4a80: 4f 4d 20 74 33 2c 20 28 53 45 4c 45 43 54 20 6d  OM t3, (SELECT m
4a90: 61 78 28 61 29 2c 20 6d 61 78 28 62 29 20 46 52  ax(a), max(b) FR
4aa0: 4f 4d 20 74 34 29 0a 20 20 20 20 7d 0a 20 20 7d  OM t4).    }.  }
4ab0: 20 7b 61 20 31 20 62 20 32 7d 0a 20 20 64 6f 5f   {a 1 b 2}.  do_
4ac0: 74 65 73 74 20 73 65 6c 65 63 74 31 2d 31 31 2e  test select1-11.
4ad0: 31 33 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c  13 {.    execsql
4ae0: 32 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54  2 {.      SELECT
4af0: 20 74 33 2e 2a 20 46 52 4f 4d 20 28 53 45 4c 45   t3.* FROM (SELE
4b00: 43 54 20 6d 61 78 28 61 29 2c 20 6d 61 78 28 62  CT max(a), max(b
4b10: 29 20 46 52 4f 4d 20 74 34 29 2c 20 74 33 0a 20  ) FROM t4), t3. 
4b20: 20 20 20 7d 0a 20 20 7d 20 7b 61 20 31 20 62 20     }.  } {a 1 b 
4b30: 32 7d 0a 20 20 64 6f 5f 74 65 73 74 20 73 65 6c  2}.  do_test sel
4b40: 65 63 74 31 2d 31 31 2e 31 34 20 7b 0a 20 20 20  ect1-11.14 {.   
4b50: 20 65 78 65 63 73 71 6c 32 20 7b 0a 20 20 20 20   execsql2 {.    
4b60: 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20    SELECT * FROM 
4b70: 74 33 2c 20 28 53 45 4c 45 43 54 20 6d 61 78 28  t3, (SELECT max(
4b80: 61 29 2c 20 6d 61 78 28 62 29 20 46 52 4f 4d 20  a), max(b) FROM 
4b90: 74 34 29 20 41 53 20 27 74 78 27 0a 20 20 20 20  t4) AS 'tx'.    
4ba0: 7d 0a 20 20 7d 20 7b 61 20 31 20 62 20 32 20 6d  }.  } {a 1 b 2 m
4bb0: 61 78 28 61 29 20 33 20 6d 61 78 28 62 29 20 34  ax(a) 3 max(b) 4
4bc0: 7d 0a 20 20 64 6f 5f 74 65 73 74 20 73 65 6c 65  }.  do_test sele
4bd0: 63 74 31 2d 31 31 2e 31 35 20 7b 0a 20 20 20 20  ct1-11.15 {.    
4be0: 65 78 65 63 73 71 6c 32 20 7b 0a 20 20 20 20 20  execsql2 {.     
4bf0: 20 53 45 4c 45 43 54 20 79 2e 2a 2c 20 74 33 2e   SELECT y.*, t3.
4c00: 2a 20 46 52 4f 4d 20 74 33 2c 20 28 53 45 4c 45  * FROM t3, (SELE
4c10: 43 54 20 6d 61 78 28 61 29 2c 20 6d 61 78 28 62  CT max(a), max(b
4c20: 29 20 46 52 4f 4d 20 74 34 29 20 41 53 20 79 0a  ) FROM t4) AS y.
4c30: 20 20 20 20 7d 0a 20 20 7d 20 7b 6d 61 78 28 61      }.  } {max(a
4c40: 29 20 33 20 6d 61 78 28 62 29 20 34 20 61 20 31  ) 3 max(b) 4 a 1
4c50: 20 62 20 32 7d 0a 7d 0a 64 6f 5f 74 65 73 74 20   b 2}.}.do_test 
4c60: 73 65 6c 65 63 74 31 2d 31 31 2e 31 36 20 7b 0a  select1-11.16 {.
4c70: 20 20 65 78 65 63 73 71 6c 32 20 7b 0a 20 20 20    execsql2 {.   
4c80: 20 53 45 4c 45 43 54 20 79 2e 2a 20 46 52 4f 4d   SELECT y.* FROM
4c90: 20 74 33 20 61 73 20 79 2c 20 74 34 20 61 73 20   t3 as y, t4 as 
4ca0: 7a 0a 20 20 7d 0a 7d 20 7b 61 20 31 20 62 20 32  z.  }.} {a 1 b 2
4cb0: 7d 0a 0a 23 20 54 65 73 74 73 20 6f 66 20 53 45  }..# Tests of SE
4cc0: 4c 45 43 54 20 73 74 61 74 65 6d 65 6e 74 73 20  LECT statements 
4cd0: 77 69 74 68 6f 75 74 20 61 20 46 52 4f 4d 20 63  without a FROM c
4ce0: 6c 61 75 73 65 2e 0a 23 0a 64 6f 5f 74 65 73 74  lause..#.do_test
4cf0: 20 73 65 6c 65 63 74 31 2d 31 32 2e 31 20 7b 0a   select1-12.1 {.
4d00: 20 20 65 78 65 63 73 71 6c 32 20 7b 0a 20 20 20    execsql2 {.   
4d10: 20 53 45 4c 45 43 54 20 31 2b 32 2b 33 0a 20 20   SELECT 1+2+3.  
4d20: 7d 0a 7d 20 7b 31 2b 32 2b 33 20 36 7d 0a 64 6f  }.} {1+2+3 6}.do
4d30: 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 31 32  _test select1-12
4d40: 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 32 20  .2 {.  execsql2 
4d50: 7b 0a 20 20 20 20 53 45 4c 45 43 54 20 31 2c 27  {.    SELECT 1,'
4d60: 68 65 6c 6c 6f 27 2c 32 0a 20 20 7d 0a 7d 20 7b  hello',2.  }.} {
4d70: 31 20 31 20 27 68 65 6c 6c 6f 27 20 68 65 6c 6c  1 1 'hello' hell
4d80: 6f 20 32 20 32 7d 0a 64 6f 5f 74 65 73 74 20 73  o 2 2}.do_test s
4d90: 65 6c 65 63 74 31 2d 31 32 2e 33 20 7b 0a 20 20  elect1-12.3 {.  
4da0: 65 78 65 63 73 71 6c 32 20 7b 0a 20 20 20 20 53  execsql2 {.    S
4db0: 45 4c 45 43 54 20 31 20 41 53 20 27 61 27 2c 27  ELECT 1 AS 'a','
4dc0: 68 65 6c 6c 6f 27 20 41 53 20 27 62 27 2c 32 20  hello' AS 'b',2 
4dd0: 41 53 20 27 63 27 0a 20 20 7d 0a 7d 20 7b 61 20  AS 'c'.  }.} {a 
4de0: 31 20 62 20 68 65 6c 6c 6f 20 63 20 32 7d 0a 64  1 b hello c 2}.d
4df0: 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 31  o_test select1-1
4e00: 32 2e 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  2.4 {.  execsql 
4e10: 7b 0a 20 20 20 20 44 45 4c 45 54 45 20 46 52 4f  {.    DELETE FRO
4e20: 4d 20 74 33 3b 0a 20 20 20 20 49 4e 53 45 52 54  M t3;.    INSERT
4e30: 20 49 4e 54 4f 20 74 33 20 56 41 4c 55 45 53 28   INTO t3 VALUES(
4e40: 31 2c 32 29 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 0a  1,2);.  }.} {}..
4e50: 69 66 63 61 70 61 62 6c 65 20 63 6f 6d 70 6f 75  ifcapable compou
4e60: 6e 64 20 7b 0a 64 6f 5f 74 65 73 74 20 73 65 6c  nd {.do_test sel
4e70: 65 63 74 31 2d 31 32 2e 35 20 7b 0a 20 20 65 78  ect1-12.5 {.  ex
4e80: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
4e90: 43 54 20 2a 20 46 52 4f 4d 20 74 33 20 55 4e 49  CT * FROM t3 UNI
4ea0: 4f 4e 20 53 45 4c 45 43 54 20 33 20 41 53 20 27  ON SELECT 3 AS '
4eb0: 61 27 2c 20 34 20 4f 52 44 45 52 20 42 59 20 61  a', 4 ORDER BY a
4ec0: 3b 0a 20 20 7d 0a 7d 20 7b 31 20 32 20 33 20 34  ;.  }.} {1 2 3 4
4ed0: 7d 0a 0a 64 6f 5f 74 65 73 74 20 73 65 6c 65 63  }..do_test selec
4ee0: 74 31 2d 31 32 2e 36 20 7b 0a 20 20 65 78 65 63  t1-12.6 {.  exec
4ef0: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
4f00: 20 33 2c 20 34 20 55 4e 49 4f 4e 20 53 45 4c 45   3, 4 UNION SELE
4f10: 43 54 20 2a 20 46 52 4f 4d 20 74 33 3b 0a 20 20  CT * FROM t3;.  
4f20: 7d 0a 7d 20 7b 31 20 32 20 33 20 34 7d 0a 7d 20  }.} {1 2 3 4}.} 
4f30: 3b 23 20 69 66 63 61 70 61 62 6c 65 20 63 6f 6d  ;# ifcapable com
4f40: 70 6f 75 6e 64 0a 0a 69 66 63 61 70 61 62 6c 65  pound..ifcapable
4f50: 20 73 75 62 71 75 65 72 79 20 7b 0a 20 20 64 6f   subquery {.  do
4f60: 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d 31 32  _test select1-12
4f70: 2e 37 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c  .7 {.    execsql
4f80: 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20   {.      SELECT 
4f90: 2a 20 46 52 4f 4d 20 74 33 20 57 48 45 52 45 20  * FROM t3 WHERE 
4fa0: 61 3d 28 53 45 4c 45 43 54 20 31 29 3b 0a 20 20  a=(SELECT 1);.  
4fb0: 20 20 7d 0a 20 20 7d 20 7b 31 20 32 7d 0a 20 20    }.  } {1 2}.  
4fc0: 64 6f 5f 74 65 73 74 20 73 65 6c 65 63 74 31 2d  do_test select1-
4fd0: 31 32 2e 38 20 7b 0a 20 20 20 20 65 78 65 63 73  12.8 {.    execs
4fe0: 71 6c 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43  ql {.      SELEC
4ff0: 54 20 2a 20 46 52 4f 4d 20 74 33 20 57 48 45 52  T * FROM t3 WHER
5000: 45 20 61 3d 28 53 45 4c 45 43 54 20 32 29 3b 0a  E a=(SELECT 2);.
5010: 20 20 20 20 7d 0a 20 20 7d 20 7b 7d 0a 7d 0a 0a      }.  } {}.}..
5020: 69 66 63 61 70 61 62 6c 65 20 7b 63 6f 6d 70 6f  ifcapable {compo
5030: 75 6e 64 20 26 26 20 73 75 62 71 75 65 72 79 7d  und && subquery}
5040: 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 73 65 6c   {.  do_test sel
5050: 65 63 74 31 2d 31 32 2e 39 20 7b 0a 20 20 20 20  ect1-12.9 {.    
5060: 65 78 65 63 73 71 6c 32 20 7b 0a 20 20 20 20 20  execsql2 {.     
5070: 20 53 45 4c 45 43 54 20 78 20 46 52 4f 4d 20 28   SELECT x FROM (
5080: 0a 20 20 20 20 20 20 20 20 53 45 4c 45 43 54 20  .        SELECT 
5090: 61 2c 62 20 46 52 4f 4d 20 74 33 20 55 4e 49 4f  a,b FROM t3 UNIO
50a0: 4e 20 53 45 4c 45 43 54 20 61 20 41 53 20 27 78  N SELECT a AS 'x
50b0: 27 2c 20 62 20 41 53 20 27 79 27 20 46 52 4f 4d  ', b AS 'y' FROM
50c0: 20 74 34 20 4f 52 44 45 52 20 42 59 20 61 2c 62   t4 ORDER BY a,b
50d0: 0a 20 20 20 20 20 20 29 20 4f 52 44 45 52 20 42  .      ) ORDER B
50e0: 59 20 78 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b  Y x;.    }.  } {
50f0: 78 20 31 20 78 20 33 7d 0a 20 20 64 6f 5f 74 65  x 1 x 3}.  do_te
5100: 73 74 20 73 65 6c 65 63 74 31 2d 31 32 2e 31 30  st select1-12.10
5110: 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 32 20   {.    execsql2 
5120: 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20 7a  {.      SELECT z
5130: 2e 78 20 46 52 4f 4d 20 28 0a 20 20 20 20 20 20  .x FROM (.      
5140: 20 20 53 45 4c 45 43 54 20 61 2c 62 20 46 52 4f    SELECT a,b FRO
5150: 4d 20 74 33 20 55 4e 49 4f 4e 20 53 45 4c 45 43  M t3 UNION SELEC
5160: 54 20 61 20 41 53 20 27 78 27 2c 20 62 20 41 53  T a AS 'x', b AS
5170: 20 27 79 27 20 46 52 4f 4d 20 74 34 20 4f 52 44   'y' FROM t4 ORD
5180: 45 52 20 42 59 20 61 2c 62 0a 20 20 20 20 20 20  ER BY a,b.      
5190: 29 20 41 53 20 27 7a 27 20 4f 52 44 45 52 20 42  ) AS 'z' ORDER B
51a0: 59 20 78 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b  Y x;.    }.  } {
51b0: 78 20 31 20 78 20 33 7d 0a 7d 20 3b 23 20 69 66  x 1 x 3}.} ;# if
51c0: 63 61 70 61 62 6c 65 20 63 6f 6d 70 6f 75 6e 64  capable compound
51d0: 0a 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a     ...finish_test.