/ Hex Artifact Content
Login

Artifact 441a0fafc7087f841db09fbfca54e7aea9f5a84c:


0000: 23 20 32 30 30 31 20 53 65 70 74 65 6d 62 65 72  # 2001 September
0010: 20 31 35 2e 0a 23 0a 23 20 54 68 65 20 61 75 74   15..#.# The aut
0020: 68 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f  hor disclaims co
0030: 70 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20  pyright to this 
0040: 73 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e  source code.  In
0050: 20 70 6c 61 63 65 20 6f 66 0a 23 20 61 20 6c 65   place of.# a le
0060: 67 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65  gal notice, here
0070: 20 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a   is a blessing:.
0080: 23 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64  #.#    May you d
0090: 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65  o good and not e
00a0: 76 69 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f  vil..#    May yo
00b0: 75 20 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65  u find forgivene
00c0: 73 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20  ss for yourself 
00d0: 61 6e 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65  and forgive othe
00e0: 72 73 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75  rs..#    May you
00f0: 20 73 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e   share freely, n
0100: 65 76 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65  ever taking more
0110: 20 74 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a   than you give..
0120: 23 0a 23 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 2a 0a 23 20 54 68 69  **********.# Thi
0170: 73 20 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74  s file implement
0180: 73 20 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73  s regression tes
0190: 74 73 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69  ts for SQLite li
01a0: 62 72 61 72 79 2e 0a 23 0a 23 20 54 68 69 73 20  brary..#.# This 
01b0: 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20  file implements 
01c0: 74 65 73 74 73 20 66 6f 72 20 6d 69 73 63 65 6c  tests for miscel
01d0: 6c 61 6e 6f 75 73 20 66 65 61 74 75 72 65 73 20  lanous features 
01e0: 74 68 61 74 20 77 65 72 65 0a 23 20 6c 65 66 74  that were.# left
01f0: 20 6f 75 74 20 6f 66 20 6f 74 68 65 72 20 74 65   out of other te
0200: 73 74 20 66 69 6c 65 73 2e 0a 23 0a 23 20 24 49  st files..#.# $I
0210: 64 3a 20 6d 69 73 63 31 2e 74 65 73 74 2c 76 20  d: misc1.test,v 
0220: 31 2e 34 32 20 32 30 30 37 2f 31 31 2f 30 35 20  1.42 2007/11/05 
0230: 31 34 3a 35 38 3a 32 33 20 64 72 68 20 45 78 70  14:58:23 drh Exp
0240: 20 24 0a 0a 73 65 74 20 74 65 73 74 64 69 72 20   $..set testdir 
0250: 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 61  [file dirname $a
0260: 72 67 76 30 5d 0a 73 6f 75 72 63 65 20 24 74 65  rgv0].source $te
0270: 73 74 64 69 72 2f 74 65 73 74 65 72 2e 74 63 6c  stdir/tester.tcl
0280: 0a 0a 23 20 4d 69 6d 69 63 20 74 68 65 20 53 51  ..# Mimic the SQ
0290: 4c 69 74 65 20 32 20 63 6f 6c 6c 61 74 69 6f 6e  Lite 2 collation
02a0: 20 74 79 70 65 20 4e 55 4d 45 52 49 43 2e 0a 64   type NUMERIC..d
02b0: 62 20 63 6f 6c 6c 61 74 65 20 6e 75 6d 65 72 69  b collate numeri
02c0: 63 20 6e 75 6d 65 72 69 63 5f 63 6f 6c 6c 61 74  c numeric_collat
02d0: 65 0a 70 72 6f 63 20 6e 75 6d 65 72 69 63 5f 63  e.proc numeric_c
02e0: 6f 6c 6c 61 74 65 20 7b 6c 68 73 20 72 68 73 7d  ollate {lhs rhs}
02f0: 20 7b 0a 20 20 69 66 20 7b 24 6c 68 73 20 3d 3d   {.  if {$lhs ==
0300: 20 24 72 68 73 7d 20 7b 72 65 74 75 72 6e 20 30   $rhs} {return 0
0310: 7d 20 0a 20 20 72 65 74 75 72 6e 20 5b 65 78 70  } .  return [exp
0320: 72 20 28 24 6c 68 73 3e 24 72 68 73 29 3f 31 3a  r ($lhs>$rhs)?1:
0330: 2d 31 5d 0a 7d 0a 0a 23 20 4d 69 6d 69 63 20 74  -1].}..# Mimic t
0340: 68 65 20 53 51 4c 69 74 65 20 32 20 63 6f 6c 6c  he SQLite 2 coll
0350: 61 74 69 6f 6e 20 74 79 70 65 20 54 45 58 54 2e  ation type TEXT.
0360: 0a 64 62 20 63 6f 6c 6c 61 74 65 20 74 65 78 74  .db collate text
0370: 20 74 65 78 74 5f 63 6f 6c 6c 61 74 65 0a 70 72   text_collate.pr
0380: 6f 63 20 6e 75 6d 65 72 69 63 5f 63 6f 6c 6c 61  oc numeric_colla
0390: 74 65 20 7b 6c 68 73 20 72 68 73 7d 20 7b 0a 20  te {lhs rhs} {. 
03a0: 20 72 65 74 75 72 6e 20 5b 73 74 72 69 6e 67 20   return [string 
03b0: 63 6f 6d 70 61 72 65 20 24 6c 68 73 20 24 72 68  compare $lhs $rh
03c0: 73 5d 0a 7d 0a 0a 23 20 54 65 73 74 20 74 68 65  s].}..# Test the
03d0: 20 63 72 65 61 74 69 6f 6e 20 61 6e 64 20 75 73   creation and us
03e0: 65 20 6f 66 20 74 61 62 6c 65 73 20 74 68 61 74  e of tables that
03f0: 20 68 61 76 65 20 61 20 6c 61 72 67 65 20 6e 75   have a large nu
0400: 6d 62 65 72 0a 23 20 6f 66 20 63 6f 6c 75 6d 6e  mber.# of column
0410: 73 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 6d 69 73  s..#.do_test mis
0420: 63 31 2d 31 2e 31 20 7b 0a 20 20 73 65 74 20 63  c1-1.1 {.  set c
0430: 6d 64 20 22 43 52 45 41 54 45 20 54 41 42 4c 45  md "CREATE TABLE
0440: 20 6d 61 6e 79 63 6f 6c 28 78 30 20 74 65 78 74   manycol(x0 text
0450: 22 0a 20 20 66 6f 72 20 7b 73 65 74 20 69 20 31  ".  for {set i 1
0460: 7d 20 7b 24 69 3c 3d 39 39 7d 20 7b 69 6e 63 72  } {$i<=99} {incr
0470: 20 69 7d 20 7b 0a 20 20 20 20 61 70 70 65 6e 64   i} {.    append
0480: 20 63 6d 64 20 22 2c 78 24 69 20 74 65 78 74 22   cmd ",x$i text"
0490: 0a 20 20 7d 0a 20 20 61 70 70 65 6e 64 20 63 6d  .  }.  append cm
04a0: 64 20 22 29 22 3b 0a 20 20 65 78 65 63 73 71 6c  d ")";.  execsql
04b0: 20 24 63 6d 64 0a 20 20 73 65 74 20 63 6d 64 20   $cmd.  set cmd 
04c0: 22 49 4e 53 45 52 54 20 49 4e 54 4f 20 6d 61 6e  "INSERT INTO man
04d0: 79 63 6f 6c 20 56 41 4c 55 45 53 28 30 22 0a 20  ycol VALUES(0". 
04e0: 20 66 6f 72 20 7b 73 65 74 20 69 20 31 7d 20 7b   for {set i 1} {
04f0: 24 69 3c 3d 39 39 7d 20 7b 69 6e 63 72 20 69 7d  $i<=99} {incr i}
0500: 20 7b 0a 20 20 20 20 61 70 70 65 6e 64 20 63 6d   {.    append cm
0510: 64 20 22 2c 24 69 22 0a 20 20 7d 0a 20 20 61 70  d ",$i".  }.  ap
0520: 70 65 6e 64 20 63 6d 64 20 22 29 22 3b 0a 20 20  pend cmd ")";.  
0530: 65 78 65 63 73 71 6c 20 24 63 6d 64 0a 20 20 65  execsql $cmd.  e
0540: 78 65 63 73 71 6c 20 22 53 45 4c 45 43 54 20 78  xecsql "SELECT x
0550: 39 39 20 46 52 4f 4d 20 6d 61 6e 79 63 6f 6c 22  99 FROM manycol"
0560: 0a 7d 20 39 39 0a 64 6f 5f 74 65 73 74 20 6d 69  .} 99.do_test mi
0570: 73 63 31 2d 31 2e 32 20 7b 0a 20 20 65 78 65 63  sc1-1.2 {.  exec
0580: 73 71 6c 20 7b 53 45 4c 45 43 54 20 78 30 2c 20  sql {SELECT x0, 
0590: 78 31 30 2c 20 78 32 35 2c 20 78 35 30 2c 20 78  x10, x25, x50, x
05a0: 37 35 20 46 52 4f 4d 20 6d 61 6e 79 63 6f 6c 7d  75 FROM manycol}
05b0: 0a 7d 20 7b 30 20 31 30 20 32 35 20 35 30 20 37  .} {0 10 25 50 7
05c0: 35 7d 0a 64 6f 5f 74 65 73 74 20 6d 69 73 63 31  5}.do_test misc1
05d0: 2d 31 2e 33 2e 31 20 7b 0a 20 20 66 6f 72 20 7b  -1.3.1 {.  for {
05e0: 73 65 74 20 6a 20 31 30 30 7d 20 7b 24 6a 3c 3d  set j 100} {$j<=
05f0: 31 30 30 30 7d 20 7b 69 6e 63 72 20 6a 20 31 30  1000} {incr j 10
0600: 30 7d 20 7b 0a 20 20 20 20 73 65 74 20 63 6d 64  0} {.    set cmd
0610: 20 22 49 4e 53 45 52 54 20 49 4e 54 4f 20 6d 61   "INSERT INTO ma
0620: 6e 79 63 6f 6c 20 56 41 4c 55 45 53 28 24 6a 22  nycol VALUES($j"
0630: 0a 20 20 20 20 66 6f 72 20 7b 73 65 74 20 69 20  .    for {set i 
0640: 31 7d 20 7b 24 69 3c 3d 39 39 7d 20 7b 69 6e 63  1} {$i<=99} {inc
0650: 72 20 69 7d 20 7b 0a 20 20 20 20 20 20 61 70 70  r i} {.      app
0660: 65 6e 64 20 63 6d 64 20 22 2c 5b 65 78 70 72 20  end cmd ",[expr 
0670: 7b 24 69 2b 24 6a 7d 5d 22 0a 20 20 20 20 7d 0a  {$i+$j}]".    }.
0680: 20 20 20 20 61 70 70 65 6e 64 20 63 6d 64 20 22      append cmd "
0690: 29 22 0a 20 20 20 20 65 78 65 63 73 71 6c 20 24  )".    execsql $
06a0: 63 6d 64 0a 20 20 7d 0a 20 20 65 78 65 63 73 71  cmd.  }.  execsq
06b0: 6c 20 7b 53 45 4c 45 43 54 20 78 35 30 20 46 52  l {SELECT x50 FR
06c0: 4f 4d 20 6d 61 6e 79 63 6f 6c 20 4f 52 44 45 52  OM manycol ORDER
06d0: 20 42 59 20 78 38 30 2b 30 7d 0a 7d 20 7b 35 30   BY x80+0}.} {50
06e0: 20 31 35 30 20 32 35 30 20 33 35 30 20 34 35 30   150 250 350 450
06f0: 20 35 35 30 20 36 35 30 20 37 35 30 20 38 35 30   550 650 750 850
0700: 20 39 35 30 20 31 30 35 30 7d 0a 64 6f 5f 74 65   950 1050}.do_te
0710: 73 74 20 6d 69 73 63 31 2d 31 2e 33 2e 32 20 7b  st misc1-1.3.2 {
0720: 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45  .  execsql {SELE
0730: 43 54 20 78 35 30 20 46 52 4f 4d 20 6d 61 6e 79  CT x50 FROM many
0740: 63 6f 6c 20 4f 52 44 45 52 20 42 59 20 78 38 30  col ORDER BY x80
0750: 7d 0a 7d 20 7b 31 30 35 30 20 31 35 30 20 32 35  }.} {1050 150 25
0760: 30 20 33 35 30 20 34 35 30 20 35 35 30 20 36 35  0 350 450 550 65
0770: 30 20 37 35 30 20 35 30 20 38 35 30 20 39 35 30  0 750 50 850 950
0780: 7d 0a 64 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d  }.do_test misc1-
0790: 31 2e 34 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  1.4 {.  execsql 
07a0: 7b 53 45 4c 45 43 54 20 78 37 35 20 46 52 4f 4d  {SELECT x75 FROM
07b0: 20 6d 61 6e 79 63 6f 6c 20 57 48 45 52 45 20 78   manycol WHERE x
07c0: 35 30 3d 33 35 30 7d 0a 7d 20 33 37 35 0a 64 6f  50=350}.} 375.do
07d0: 5f 74 65 73 74 20 6d 69 73 63 31 2d 31 2e 35 20  _test misc1-1.5 
07e0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c  {.  execsql {SEL
07f0: 45 43 54 20 78 35 30 20 46 52 4f 4d 20 6d 61 6e  ECT x50 FROM man
0800: 79 63 6f 6c 20 57 48 45 52 45 20 78 39 39 3d 35  ycol WHERE x99=5
0810: 39 39 7d 0a 7d 20 35 35 30 0a 64 6f 5f 74 65 73  99}.} 550.do_tes
0820: 74 20 6d 69 73 63 31 2d 31 2e 36 20 7b 0a 20 20  t misc1-1.6 {.  
0830: 65 78 65 63 73 71 6c 20 7b 43 52 45 41 54 45 20  execsql {CREATE 
0840: 49 4e 44 45 58 20 6d 61 6e 79 63 6f 6c 5f 69 64  INDEX manycol_id
0850: 78 31 20 4f 4e 20 6d 61 6e 79 63 6f 6c 28 78 39  x1 ON manycol(x9
0860: 39 29 7d 0a 20 20 65 78 65 63 73 71 6c 20 7b 53  9)}.  execsql {S
0870: 45 4c 45 43 54 20 78 35 30 20 46 52 4f 4d 20 6d  ELECT x50 FROM m
0880: 61 6e 79 63 6f 6c 20 57 48 45 52 45 20 78 39 39  anycol WHERE x99
0890: 3d 38 39 39 7d 0a 7d 20 38 35 30 0a 64 6f 5f 74  =899}.} 850.do_t
08a0: 65 73 74 20 6d 69 73 63 31 2d 31 2e 37 20 7b 0a  est misc1-1.7 {.
08b0: 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43    execsql {SELEC
08c0: 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20  T count(*) FROM 
08d0: 6d 61 6e 79 63 6f 6c 7d 0a 7d 20 31 31 0a 64 6f  manycol}.} 11.do
08e0: 5f 74 65 73 74 20 6d 69 73 63 31 2d 31 2e 38 20  _test misc1-1.8 
08f0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 44 45 4c  {.  execsql {DEL
0900: 45 54 45 20 46 52 4f 4d 20 6d 61 6e 79 63 6f 6c  ETE FROM manycol
0910: 20 57 48 45 52 45 20 78 39 38 3d 31 32 33 34 7d   WHERE x98=1234}
0920: 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45  .  execsql {SELE
0930: 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d  CT count(*) FROM
0940: 20 6d 61 6e 79 63 6f 6c 7d 0a 7d 20 31 31 0a 64   manycol}.} 11.d
0950: 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d 31 2e 39  o_test misc1-1.9
0960: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 44 45   {.  execsql {DE
0970: 4c 45 54 45 20 46 52 4f 4d 20 6d 61 6e 79 63 6f  LETE FROM manyco
0980: 6c 20 57 48 45 52 45 20 78 39 38 3d 39 39 38 7d  l WHERE x98=998}
0990: 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45  .  execsql {SELE
09a0: 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d  CT count(*) FROM
09b0: 20 6d 61 6e 79 63 6f 6c 7d 0a 7d 20 31 30 0a 64   manycol}.} 10.d
09c0: 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d 31 2e 31  o_test misc1-1.1
09d0: 30 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 44  0 {.  execsql {D
09e0: 45 4c 45 54 45 20 46 52 4f 4d 20 6d 61 6e 79 63  ELETE FROM manyc
09f0: 6f 6c 20 57 48 45 52 45 20 78 39 39 3d 35 30 30  ol WHERE x99=500
0a00: 7d 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c  }.  execsql {SEL
0a10: 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f  ECT count(*) FRO
0a20: 4d 20 6d 61 6e 79 63 6f 6c 7d 0a 7d 20 31 30 0a  M manycol}.} 10.
0a30: 64 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d 31 2e  do_test misc1-1.
0a40: 31 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  11 {.  execsql {
0a50: 44 45 4c 45 54 45 20 46 52 4f 4d 20 6d 61 6e 79  DELETE FROM many
0a60: 63 6f 6c 20 57 48 45 52 45 20 78 39 39 3d 35 39  col WHERE x99=59
0a70: 39 7d 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45  9}.  execsql {SE
0a80: 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52  LECT count(*) FR
0a90: 4f 4d 20 6d 61 6e 79 63 6f 6c 7d 0a 7d 20 39 0a  OM manycol}.} 9.
0aa0: 0a 23 20 43 68 65 63 6b 20 47 52 4f 55 50 20 42  .# Check GROUP B
0ab0: 59 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 68  Y expressions th
0ac0: 61 74 20 6e 61 6d 65 20 74 77 6f 20 6f 72 20 6d  at name two or m
0ad0: 6f 72 65 20 63 6f 6c 75 6d 6e 73 2e 0a 23 0a 64  ore columns..#.d
0ae0: 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d 32 2e 31  o_test misc1-2.1
0af0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
0b00: 20 20 20 42 45 47 49 4e 20 54 52 41 4e 53 41 43     BEGIN TRANSAC
0b10: 54 49 4f 4e 3b 0a 20 20 20 20 43 52 45 41 54 45  TION;.    CREATE
0b20: 20 54 41 42 4c 45 20 61 67 67 65 72 28 6f 6e 65   TABLE agger(one
0b30: 20 74 65 78 74 2c 20 74 77 6f 20 74 65 78 74 2c   text, two text,
0b40: 20 74 68 72 65 65 20 74 65 78 74 2c 20 66 6f 75   three text, fou
0b50: 72 20 74 65 78 74 29 3b 0a 20 20 20 20 49 4e 53  r text);.    INS
0b60: 45 52 54 20 49 4e 54 4f 20 61 67 67 65 72 20 56  ERT INTO agger V
0b70: 41 4c 55 45 53 28 31 2c 20 27 6f 6e 65 27 2c 20  ALUES(1, 'one', 
0b80: 27 68 65 6c 6c 6f 27 2c 20 27 79 65 73 27 29 3b  'hello', 'yes');
0b90: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
0ba0: 20 61 67 67 65 72 20 56 41 4c 55 45 53 28 32 2c   agger VALUES(2,
0bb0: 20 27 74 77 6f 27 2c 20 27 68 6f 77 64 79 27 2c   'two', 'howdy',
0bc0: 20 27 6e 6f 27 29 3b 0a 20 20 20 20 49 4e 53 45   'no');.    INSE
0bd0: 52 54 20 49 4e 54 4f 20 61 67 67 65 72 20 56 41  RT INTO agger VA
0be0: 4c 55 45 53 28 33 2c 20 27 74 68 72 27 2c 20 27  LUES(3, 'thr', '
0bf0: 68 6f 77 61 72 65 79 61 27 2c 20 27 79 65 73 27  howareya', 'yes'
0c00: 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  );.    INSERT IN
0c10: 54 4f 20 61 67 67 65 72 20 56 41 4c 55 45 53 28  TO agger VALUES(
0c20: 34 2c 20 27 74 77 6f 27 2c 20 27 6c 6f 74 68 65  4, 'two', 'lothe
0c30: 72 65 27 2c 20 27 79 65 73 27 29 3b 0a 20 20 20  re', 'yes');.   
0c40: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 61 67 67   INSERT INTO agg
0c50: 65 72 20 56 41 4c 55 45 53 28 35 2c 20 27 6f 6e  er VALUES(5, 'on
0c60: 65 27 2c 20 27 61 74 63 68 61 27 2c 20 27 79 65  e', 'atcha', 'ye
0c70: 73 27 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20  s');.    INSERT 
0c80: 49 4e 54 4f 20 61 67 67 65 72 20 56 41 4c 55 45  INTO agger VALUE
0c90: 53 28 36 2c 20 27 74 77 6f 27 2c 20 27 68 65 6c  S(6, 'two', 'hel
0ca0: 6c 6f 27 2c 20 27 6e 6f 27 29 3b 0a 20 20 20 20  lo', 'no');.    
0cb0: 43 4f 4d 4d 49 54 0a 20 20 7d 0a 20 20 65 78 65  COMMIT.  }.  exe
0cc0: 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 63 6f 75  csql {SELECT cou
0cd0: 6e 74 28 2a 29 20 46 52 4f 4d 20 61 67 67 65 72  nt(*) FROM agger
0ce0: 7d 0a 7d 20 36 0a 64 6f 5f 74 65 73 74 20 6d 69  }.} 6.do_test mi
0cf0: 73 63 31 2d 32 2e 32 20 7b 0a 20 20 65 78 65 63  sc1-2.2 {.  exec
0d00: 73 71 6c 20 7b 53 45 4c 45 43 54 20 73 75 6d 28  sql {SELECT sum(
0d10: 6f 6e 65 29 2c 20 74 77 6f 2c 20 66 6f 75 72 20  one), two, four 
0d20: 46 52 4f 4d 20 61 67 67 65 72 0a 20 20 20 20 20  FROM agger.     
0d30: 20 20 20 20 20 20 47 52 4f 55 50 20 42 59 20 74        GROUP BY t
0d40: 77 6f 2c 20 66 6f 75 72 20 4f 52 44 45 52 20 42  wo, four ORDER B
0d50: 59 20 73 75 6d 28 6f 6e 65 29 20 64 65 73 63 7d  Y sum(one) desc}
0d60: 0a 7d 20 7b 38 20 74 77 6f 20 6e 6f 20 36 20 6f  .} {8 two no 6 o
0d70: 6e 65 20 79 65 73 20 34 20 74 77 6f 20 79 65 73  ne yes 4 two yes
0d80: 20 33 20 74 68 72 20 79 65 73 7d 0a 64 6f 5f 74   3 thr yes}.do_t
0d90: 65 73 74 20 6d 69 73 63 31 2d 32 2e 33 20 7b 0a  est misc1-2.3 {.
0da0: 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43    execsql {SELEC
0db0: 54 20 73 75 6d 28 28 6f 6e 65 29 29 2c 20 28 74  T sum((one)), (t
0dc0: 77 6f 29 2c 20 28 66 6f 75 72 29 20 46 52 4f 4d  wo), (four) FROM
0dd0: 20 61 67 67 65 72 0a 20 20 20 20 20 20 20 20 20   agger.         
0de0: 20 20 47 52 4f 55 50 20 42 59 20 28 74 77 6f 29    GROUP BY (two)
0df0: 2c 20 28 66 6f 75 72 29 20 4f 52 44 45 52 20 42  , (four) ORDER B
0e00: 59 20 73 75 6d 28 6f 6e 65 29 20 64 65 73 63 7d  Y sum(one) desc}
0e10: 0a 7d 20 7b 38 20 74 77 6f 20 6e 6f 20 36 20 6f  .} {8 two no 6 o
0e20: 6e 65 20 79 65 73 20 34 20 74 77 6f 20 79 65 73  ne yes 4 two yes
0e30: 20 33 20 74 68 72 20 79 65 73 7d 0a 0a 23 20 48   3 thr yes}..# H
0e40: 65 72 65 27 73 20 61 20 74 65 73 74 20 66 6f 72  ere's a test for
0e50: 20 61 20 62 75 67 20 66 6f 75 6e 64 20 62 79 20   a bug found by 
0e60: 4a 6f 65 6c 20 4c 75 63 73 79 2e 20 20 54 68 65  Joel Lucsy.  The
0e70: 20 63 6f 64 65 20 62 65 6c 6f 77 0a 23 20 77 61   code below.# wa
0e80: 73 20 63 61 75 73 69 6e 67 20 61 6e 20 61 73 73  s causing an ass
0e90: 65 72 74 69 6f 6e 20 66 61 69 6c 75 72 65 2e 0a  ertion failure..
0ea0: 23 0a 64 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d  #.do_test misc1-
0eb0: 33 2e 31 20 7b 0a 20 20 73 65 74 20 72 20 5b 65  3.1 {.  set r [e
0ec0: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 43 52 45  xecsql {.    CRE
0ed0: 41 54 45 20 54 41 42 4c 45 20 74 31 28 61 29 3b  ATE TABLE t1(a);
0ee0: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
0ef0: 20 74 31 20 56 41 4c 55 45 53 28 27 68 69 27 29   t1 VALUES('hi')
0f00: 3b 0a 20 20 20 20 50 52 41 47 4d 41 20 66 75 6c  ;.    PRAGMA ful
0f10: 6c 5f 63 6f 6c 75 6d 6e 5f 6e 61 6d 65 73 3d 6f  l_column_names=o
0f20: 6e 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 72 6f  n;.    SELECT ro
0f30: 77 69 64 2c 20 2a 20 46 52 4f 4d 20 74 31 3b 0a  wid, * FROM t1;.
0f40: 20 20 7d 5d 0a 20 20 6c 69 6e 64 65 78 20 24 72    }].  lindex $r
0f50: 20 31 0a 7d 20 7b 68 69 7d 0a 0a 23 20 48 65 72   1.} {hi}..# Her
0f60: 65 27 73 20 61 20 74 65 73 74 20 66 6f 72 20 79  e's a test for y
0f70: 65 74 20 61 6e 6f 74 68 65 72 20 62 75 67 20 66  et another bug f
0f80: 6f 75 6e 64 20 62 79 20 4a 6f 65 6c 20 4c 75 63  ound by Joel Luc
0f90: 73 79 2e 20 20 54 68 65 20 63 6f 64 65 0a 23 20  sy.  The code.# 
0fa0: 62 65 6c 6f 77 20 77 61 73 20 63 61 75 73 69 6e  below was causin
0fb0: 67 20 61 6e 20 61 73 73 65 72 74 69 6f 6e 20 66  g an assertion f
0fc0: 61 69 6c 75 72 65 2e 0a 23 0a 64 6f 5f 74 65 73  ailure..#.do_tes
0fd0: 74 20 6d 69 73 63 31 2d 34 2e 31 20 7b 0a 20 20  t misc1-4.1 {.  
0fe0: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 42 45  execsql {.    BE
0ff0: 47 49 4e 3b 0a 20 20 20 20 43 52 45 41 54 45 20  GIN;.    CREATE 
1000: 54 41 42 4c 45 20 74 32 28 61 29 3b 0a 20 20 20  TABLE t2(a);.   
1010: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 20   INSERT INTO t2 
1020: 56 41 4c 55 45 53 28 27 54 68 69 73 20 69 73 20  VALUES('This is 
1030: 61 20 6c 6f 6e 67 20 73 74 72 69 6e 67 20 74 6f  a long string to
1040: 20 75 73 65 20 75 70 20 61 20 6c 6f 74 20 6f 66   use up a lot of
1050: 20 64 69 73 6b 20 2d 27 29 3b 0a 20 20 20 20 55   disk -');.    U
1060: 50 44 41 54 45 20 74 32 20 53 45 54 20 61 3d 61  PDATE t2 SET a=a
1070: 7c 7c 61 7c 7c 61 7c 7c 61 3b 0a 20 20 20 20 49  ||a||a||a;.    I
1080: 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 20 53 45  NSERT INTO t2 SE
1090: 4c 45 43 54 20 27 31 20 2d 20 27 20 7c 7c 20 61  LECT '1 - ' || a
10a0: 20 46 52 4f 4d 20 74 32 3b 0a 20 20 20 20 49 4e   FROM t2;.    IN
10b0: 53 45 52 54 20 49 4e 54 4f 20 74 32 20 53 45 4c  SERT INTO t2 SEL
10c0: 45 43 54 20 27 32 20 2d 20 27 20 7c 7c 20 61 20  ECT '2 - ' || a 
10d0: 46 52 4f 4d 20 74 32 3b 0a 20 20 20 20 49 4e 53  FROM t2;.    INS
10e0: 45 52 54 20 49 4e 54 4f 20 74 32 20 53 45 4c 45  ERT INTO t2 SELE
10f0: 43 54 20 27 33 20 2d 20 27 20 7c 7c 20 61 20 46  CT '3 - ' || a F
1100: 52 4f 4d 20 74 32 3b 0a 20 20 20 20 49 4e 53 45  ROM t2;.    INSE
1110: 52 54 20 49 4e 54 4f 20 74 32 20 53 45 4c 45 43  RT INTO t2 SELEC
1120: 54 20 27 34 20 2d 20 27 20 7c 7c 20 61 20 46 52  T '4 - ' || a FR
1130: 4f 4d 20 74 32 3b 0a 20 20 20 20 49 4e 53 45 52  OM t2;.    INSER
1140: 54 20 49 4e 54 4f 20 74 32 20 53 45 4c 45 43 54  T INTO t2 SELECT
1150: 20 27 35 20 2d 20 27 20 7c 7c 20 61 20 46 52 4f   '5 - ' || a FRO
1160: 4d 20 74 32 3b 0a 20 20 20 20 49 4e 53 45 52 54  M t2;.    INSERT
1170: 20 49 4e 54 4f 20 74 32 20 53 45 4c 45 43 54 20   INTO t2 SELECT 
1180: 27 36 20 2d 20 27 20 7c 7c 20 61 20 46 52 4f 4d  '6 - ' || a FROM
1190: 20 74 32 3b 0a 20 20 20 20 43 4f 4d 4d 49 54 3b   t2;.    COMMIT;
11a0: 0a 20 20 20 20 53 45 4c 45 43 54 20 63 6f 75 6e  .    SELECT coun
11b0: 74 28 2a 29 20 46 52 4f 4d 20 74 32 3b 0a 20 20  t(*) FROM t2;.  
11c0: 7d 0a 7d 20 7b 36 34 7d 0a 0a 23 20 4d 61 6b 65  }.} {64}..# Make
11d0: 20 73 75 72 65 20 77 65 20 61 63 74 75 61 6c 6c   sure we actuall
11e0: 79 20 73 65 65 20 61 20 73 65 6d 69 63 6f 6c 6f  y see a semicolo
11f0: 6e 20 6f 72 20 65 6e 64 2d 6f 66 2d 66 69 6c 65  n or end-of-file
1200: 20 69 6e 20 74 68 65 20 53 51 4c 20 69 6e 70 75   in the SQL inpu
1210: 74 0a 23 20 62 65 66 6f 72 65 20 65 78 65 63 75  t.# before execu
1220: 74 69 6e 67 20 61 20 63 6f 6d 6d 61 6e 64 2e 20  ting a command. 
1230: 20 54 68 75 73 20 69 66 20 22 57 48 45 52 45 22   Thus if "WHERE"
1240: 20 69 73 20 6d 69 73 73 70 65 6c 6c 65 64 20 6f   is misspelled o
1250: 6e 20 61 6e 20 55 50 44 41 54 45 2c 0a 23 20 74  n an UPDATE,.# t
1260: 68 65 20 75 73 65 72 20 77 6f 6e 27 74 20 61 63  he user won't ac
1270: 63 69 64 65 6e 74 6c 79 20 75 70 64 61 74 65 20  cidently update 
1280: 65 76 65 72 79 20 72 65 63 6f 72 64 2e 0a 23 0a  every record..#.
1290: 64 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d 35 2e  do_test misc1-5.
12a0: 31 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20 7b  1 {.  catchsql {
12b0: 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c  .    CREATE TABL
12c0: 45 20 74 33 28 61 2c 62 29 3b 0a 20 20 20 20 49  E t3(a,b);.    I
12d0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20 56 41  NSERT INTO t3 VA
12e0: 4c 55 45 53 28 31 2c 32 29 3b 0a 20 20 20 20 49  LUES(1,2);.    I
12f0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 33 20 56 41  NSERT INTO t3 VA
1300: 4c 55 45 53 28 33 2c 34 29 3b 0a 20 20 20 20 55  LUES(3,4);.    U
1310: 50 44 41 54 45 20 74 33 20 53 45 54 20 61 3d 30  PDATE t3 SET a=0
1320: 20 57 48 45 52 45 77 77 77 20 62 3d 32 3b 0a 20   WHEREwww b=2;. 
1330: 20 7d 0a 7d 20 7b 31 20 7b 6e 65 61 72 20 22 57   }.} {1 {near "W
1340: 48 45 52 45 77 77 77 22 3a 20 73 79 6e 74 61 78  HEREwww": syntax
1350: 20 65 72 72 6f 72 7d 7d 0a 64 6f 5f 74 65 73 74   error}}.do_test
1360: 20 6d 69 73 63 31 2d 35 2e 32 20 7b 0a 20 20 65   misc1-5.2 {.  e
1370: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c  xecsql {.    SEL
1380: 45 43 54 20 2a 20 46 52 4f 4d 20 74 33 20 4f 52  ECT * FROM t3 OR
1390: 44 45 52 20 42 59 20 61 3b 0a 20 20 7d 0a 7d 20  DER BY a;.  }.} 
13a0: 7b 31 20 32 20 33 20 34 7d 0a 0a 23 20 43 65 72  {1 2 3 4}..# Cer
13b0: 74 61 69 6e 20 6b 65 79 77 6f 72 64 73 20 28 65  tain keywords (e
13c0: 73 70 65 63 69 61 6c 6c 79 20 6e 6f 6e 2d 73 74  specially non-st
13d0: 61 6e 64 61 72 64 20 6b 65 79 77 6f 72 64 73 20  andard keywords 
13e0: 6c 69 6b 65 20 22 52 45 50 4c 41 43 45 22 29 20  like "REPLACE") 
13f0: 63 61 6e 0a 23 20 61 6c 73 6f 20 62 65 20 75 73  can.# also be us
1400: 65 64 20 61 73 20 69 64 65 6e 74 69 66 69 65 72  ed as identifier
1410: 73 2e 20 20 54 68 65 20 77 61 79 20 74 68 69 73  s.  The way this
1420: 20 77 6f 72 6b 73 20 69 6e 20 74 68 65 20 70 61   works in the pa
1430: 72 73 65 72 20 69 73 20 74 68 61 74 0a 23 20 74  rser is that.# t
1440: 68 65 20 70 61 72 73 65 72 20 66 69 72 73 74 20  he parser first 
1450: 64 65 74 65 63 74 73 20 61 20 73 79 6e 74 61 78  detects a syntax
1460: 20 65 72 72 6f 72 2c 20 74 68 65 20 65 72 72 6f   error, the erro
1470: 72 20 68 61 6e 64 6c 69 6e 67 20 72 6f 75 74 69  r handling routi
1480: 6e 65 0a 23 20 73 65 65 73 20 74 68 61 74 20 74  ne.# sees that t
1490: 68 65 20 73 70 65 63 69 61 6c 20 6b 65 79 77 6f  he special keywo
14a0: 72 64 20 63 61 75 73 65 64 20 74 68 65 20 65 72  rd caused the er
14b0: 72 6f 72 2c 20 74 68 65 6e 20 72 65 70 6c 61 63  ror, then replac
14c0: 65 73 20 74 68 65 20 6b 65 79 77 6f 72 64 0a 23  es the keyword.#
14d0: 20 77 69 74 68 20 22 49 44 22 20 61 6e 64 20 74   with "ID" and t
14e0: 72 69 65 73 20 61 67 61 69 6e 2e 0a 23 0a 23 20  ries again..#.# 
14f0: 43 68 65 63 6b 20 74 68 65 20 6f 70 65 72 61 74  Check the operat
1500: 69 6f 6e 20 6f 66 20 74 68 69 73 20 6c 6f 67 69  ion of this logi
1510: 63 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 6d 69 73  c..#.do_test mis
1520: 63 31 2d 36 2e 31 20 7b 0a 20 20 63 61 74 63 68  c1-6.1 {.  catch
1530: 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45  sql {.    CREATE
1540: 20 54 41 42 4c 45 20 74 34 28 0a 20 20 20 20 20   TABLE t4(.     
1550: 20 61 62 6f 72 74 2c 20 61 73 63 2c 20 62 65 67   abort, asc, beg
1560: 69 6e 2c 20 63 6c 75 73 74 65 72 2c 20 63 6f 6e  in, cluster, con
1570: 66 6c 69 63 74 2c 20 63 6f 70 79 2c 20 64 65 6c  flict, copy, del
1580: 69 6d 69 74 65 72 73 2c 20 64 65 73 63 2c 20 65  imiters, desc, e
1590: 6e 64 2c 0a 20 20 20 20 20 20 65 78 70 6c 61 69  nd,.      explai
15a0: 6e 2c 20 66 61 69 6c 2c 20 69 67 6e 6f 72 65 2c  n, fail, ignore,
15b0: 20 6b 65 79 2c 20 6f 66 66 73 65 74 2c 20 70 72   key, offset, pr
15c0: 61 67 6d 61 2c 20 72 65 70 6c 61 63 65 2c 20 74  agma, replace, t
15d0: 65 6d 70 2c 0a 20 20 20 20 20 20 76 61 63 75 75  emp,.      vacuu
15e0: 6d 2c 20 76 69 65 77 0a 20 20 20 20 29 3b 0a 20  m, view.    );. 
15f0: 20 7d 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f 74   }.} {0 {}}.do_t
1600: 65 73 74 20 6d 69 73 63 31 2d 36 2e 32 20 7b 0a  est misc1-6.2 {.
1610: 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20 20 20    catchsql {.   
1620: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 34 0a   INSERT INTO t4.
1630: 20 20 20 20 20 20 20 56 41 4c 55 45 53 28 31 2c         VALUES(1,
1640: 32 2c 33 2c 34 2c 35 2c 36 2c 37 2c 38 2c 39 2c  2,3,4,5,6,7,8,9,
1650: 31 30 2c 31 31 2c 31 32 2c 31 33 2c 31 34 2c 31  10,11,12,13,14,1
1660: 35 2c 31 36 2c 31 37 2c 31 38 2c 31 39 29 3b 0a  5,16,17,18,19);.
1670: 20 20 7d 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f    }.} {0 {}}.do_
1680: 74 65 73 74 20 6d 69 73 63 31 2d 36 2e 33 20 7b  test misc1-6.3 {
1690: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
16a0: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
16b0: 34 0a 20 20 7d 0a 7d 20 7b 31 20 32 20 33 20 34  4.  }.} {1 2 3 4
16c0: 20 35 20 36 20 37 20 38 20 39 20 31 30 20 31 31   5 6 7 8 9 10 11
16d0: 20 31 32 20 31 33 20 31 34 20 31 35 20 31 36 20   12 13 14 15 16 
16e0: 31 37 20 31 38 20 31 39 7d 0a 64 6f 5f 74 65 73  17 18 19}.do_tes
16f0: 74 20 6d 69 73 63 31 2d 36 2e 34 20 7b 0a 20 20  t misc1-6.4 {.  
1700: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45  execsql {.    SE
1710: 4c 45 43 54 20 61 62 6f 72 74 2b 61 73 63 2c 6d  LECT abort+asc,m
1720: 61 78 28 6b 65 79 2c 70 72 61 67 6d 61 2c 74 65  ax(key,pragma,te
1730: 6d 70 29 20 46 52 4f 4d 20 74 34 0a 20 20 7d 0a  mp) FROM t4.  }.
1740: 7d 20 7b 33 20 31 37 7d 0a 0a 23 20 54 65 73 74  } {3 17}..# Test
1750: 20 66 6f 72 20 6d 75 6c 74 69 2d 63 6f 6c 75 6d   for multi-colum
1760: 6e 20 70 72 69 6d 61 72 79 20 6b 65 79 73 2c 20  n primary keys, 
1770: 61 6e 64 20 66 6f 72 20 6d 75 6c 74 69 70 6c 65  and for multiple
1780: 20 70 72 69 6d 61 72 79 20 6b 65 79 73 2e 0a 23   primary keys..#
1790: 0a 64 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d 37  .do_test misc1-7
17a0: 2e 31 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20  .1 {.  catchsql 
17b0: 7b 0a 20 20 20 20 43 52 45 41 54 45 20 54 41 42  {.    CREATE TAB
17c0: 4c 45 20 65 72 72 6f 72 31 28 0a 20 20 20 20 20  LE error1(.     
17d0: 20 61 20 54 59 50 45 20 50 52 49 4d 41 52 59 20   a TYPE PRIMARY 
17e0: 4b 45 59 2c 0a 20 20 20 20 20 20 62 20 54 59 50  KEY,.      b TYP
17f0: 45 20 50 52 49 4d 41 52 59 20 4b 45 59 0a 20 20  E PRIMARY KEY.  
1800: 20 20 29 3b 0a 20 20 7d 0a 7d 20 7b 31 20 7b 74    );.  }.} {1 {t
1810: 61 62 6c 65 20 22 65 72 72 6f 72 31 22 20 68 61  able "error1" ha
1820: 73 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20  s more than one 
1830: 70 72 69 6d 61 72 79 20 6b 65 79 7d 7d 0a 64 6f  primary key}}.do
1840: 5f 74 65 73 74 20 6d 69 73 63 31 2d 37 2e 32 20  _test misc1-7.2 
1850: 7b 0a 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20  {.  catchsql {. 
1860: 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20     CREATE TABLE 
1870: 65 72 72 6f 72 31 28 0a 20 20 20 20 20 20 61 20  error1(.      a 
1880: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
1890: 4b 45 59 2c 0a 20 20 20 20 20 20 62 20 54 59 50  KEY,.      b TYP
18a0: 45 20 50 52 49 4d 41 52 59 20 4b 45 59 0a 20 20  E PRIMARY KEY.  
18b0: 20 20 29 3b 0a 20 20 7d 0a 7d 20 7b 31 20 7b 74    );.  }.} {1 {t
18c0: 61 62 6c 65 20 22 65 72 72 6f 72 31 22 20 68 61  able "error1" ha
18d0: 73 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20  s more than one 
18e0: 70 72 69 6d 61 72 79 20 6b 65 79 7d 7d 0a 64 6f  primary key}}.do
18f0: 5f 74 65 73 74 20 6d 69 73 63 31 2d 37 2e 33 20  _test misc1-7.3 
1900: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
1910: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
1920: 35 28 61 2c 62 2c 63 2c 50 52 49 4d 41 52 59 20  5(a,b,c,PRIMARY 
1930: 4b 45 59 28 61 2c 62 29 29 3b 0a 20 20 20 20 49  KEY(a,b));.    I
1940: 4e 53 45 52 54 20 49 4e 54 4f 20 74 35 20 56 41  NSERT INTO t5 VA
1950: 4c 55 45 53 28 31 2c 32 2c 33 29 3b 0a 20 20 20  LUES(1,2,3);.   
1960: 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74   SELECT * FROM t
1970: 35 20 4f 52 44 45 52 20 42 59 20 61 3b 0a 20 20  5 ORDER BY a;.  
1980: 7d 0a 7d 20 7b 31 20 32 20 33 7d 0a 64 6f 5f 74  }.} {1 2 3}.do_t
1990: 65 73 74 20 6d 69 73 63 31 2d 37 2e 34 20 7b 0a  est misc1-7.4 {.
19a0: 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20 20 20    catchsql {.   
19b0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 35 20   INSERT INTO t5 
19c0: 56 41 4c 55 45 53 28 31 2c 32 2c 34 29 3b 0a 20  VALUES(1,2,4);. 
19d0: 20 7d 0a 7d 20 7b 31 20 7b 55 4e 49 51 55 45 20   }.} {1 {UNIQUE 
19e0: 63 6f 6e 73 74 72 61 69 6e 74 20 66 61 69 6c 65  constraint faile
19f0: 64 3a 20 74 35 2e 61 2c 20 74 35 2e 62 7d 7d 0a  d: t5.a, t5.b}}.
1a00: 64 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d 37 2e  do_test misc1-7.
1a10: 35 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20 7b  5 {.  catchsql {
1a20: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
1a30: 20 74 35 20 56 41 4c 55 45 53 28 30 2c 32 2c 34   t5 VALUES(0,2,4
1a40: 29 3b 0a 20 20 7d 0a 7d 20 7b 30 20 7b 7d 7d 0a  );.  }.} {0 {}}.
1a50: 64 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d 37 2e  do_test misc1-7.
1a60: 36 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  6 {.  execsql {.
1a70: 20 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f      SELECT * FRO
1a80: 4d 20 74 35 20 4f 52 44 45 52 20 42 59 20 61 3b  M t5 ORDER BY a;
1a90: 0a 20 20 7d 0a 7d 20 7b 30 20 32 20 34 20 31 20  .  }.} {0 2 4 1 
1aa0: 32 20 33 7d 0a 0a 64 6f 5f 74 65 73 74 20 6d 69  2 3}..do_test mi
1ab0: 73 63 31 2d 38 2e 31 20 7b 0a 20 20 63 61 74 63  sc1-8.1 {.  catc
1ac0: 68 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43  hsql {.    SELEC
1ad0: 54 20 2a 3b 0a 20 20 7d 0a 7d 20 7b 31 20 7b 6e  T *;.  }.} {1 {n
1ae0: 6f 20 74 61 62 6c 65 73 20 73 70 65 63 69 66 69  o tables specifi
1af0: 65 64 7d 7d 0a 64 6f 5f 74 65 73 74 20 6d 69 73  ed}}.do_test mis
1b00: 63 31 2d 38 2e 32 20 7b 0a 20 20 63 61 74 63 68  c1-8.2 {.  catch
1b10: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
1b20: 20 74 31 2e 2a 3b 0a 20 20 7d 0a 7d 20 7b 31 20   t1.*;.  }.} {1 
1b30: 7b 6e 6f 20 73 75 63 68 20 74 61 62 6c 65 3a 20  {no such table: 
1b40: 74 31 7d 7d 0a 0a 65 78 65 63 73 71 6c 20 7b 0a  t1}}..execsql {.
1b50: 20 20 44 52 4f 50 20 54 41 42 4c 45 20 74 31 3b    DROP TABLE t1;
1b60: 0a 20 20 44 52 4f 50 20 54 41 42 4c 45 20 74 32  .  DROP TABLE t2
1b70: 3b 0a 20 20 44 52 4f 50 20 54 41 42 4c 45 20 74  ;.  DROP TABLE t
1b80: 33 3b 0a 20 20 44 52 4f 50 20 54 41 42 4c 45 20  3;.  DROP TABLE 
1b90: 74 34 3b 0a 7d 0a 0a 23 20 36 34 2d 62 69 74 20  t4;.}..# 64-bit 
1ba0: 69 6e 74 65 67 65 72 73 20 61 72 65 20 72 65 70  integers are rep
1bb0: 72 65 73 65 6e 74 65 64 20 65 78 61 63 74 6c 79  resented exactly
1bc0: 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 6d 69 73 63  ..#.do_test misc
1bd0: 31 2d 39 2e 31 20 7b 0a 20 20 63 61 74 63 68 73  1-9.1 {.  catchs
1be0: 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20  ql {.    CREATE 
1bf0: 54 41 42 4c 45 20 74 31 28 61 20 75 6e 69 71 75  TABLE t1(a uniqu
1c00: 65 20 6e 6f 74 20 6e 75 6c 6c 2c 20 62 20 75 6e  e not null, b un
1c10: 69 71 75 65 20 6e 6f 74 20 6e 75 6c 6c 29 3b 0a  ique not null);.
1c20: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
1c30: 74 31 20 56 41 4c 55 45 53 28 27 61 27 2c 31 32  t1 VALUES('a',12
1c40: 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38  3456789012345678
1c50: 39 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  9);.    INSERT I
1c60: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 27 62  NTO t1 VALUES('b
1c70: 27 2c 31 32 33 34 35 36 37 38 39 31 31 32 33 34  ',12345678911234
1c80: 35 36 37 38 39 29 3b 0a 20 20 20 20 49 4e 53 45  56789);.    INSE
1c90: 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45  RT INTO t1 VALUE
1ca0: 53 28 27 63 27 2c 31 32 33 34 35 36 37 38 39 32  S('c',1234567892
1cb0: 31 32 33 34 35 36 37 38 39 29 3b 0a 20 20 20 20  123456789);.    
1cc0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
1cd0: 3b 0a 20 20 7d 0a 7d 20 7b 30 20 7b 61 20 31 32  ;.  }.} {0 {a 12
1ce0: 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38  3456789012345678
1cf0: 39 20 62 20 31 32 33 34 35 36 37 38 39 31 31 32  9 b 123456789112
1d00: 33 34 35 36 37 38 39 20 63 20 31 32 33 34 35 36  3456789 c 123456
1d10: 37 38 39 32 31 32 33 34 35 36 37 38 39 7d 7d 0a  7892123456789}}.
1d20: 0a 23 20 41 20 57 48 45 52 45 20 63 6c 61 75 73  .# A WHERE claus
1d30: 65 20 69 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64  e is not allowed
1d40: 20 74 6f 20 63 6f 6e 74 61 69 6e 20 6d 6f 72 65   to contain more
1d50: 20 74 68 61 6e 20 39 39 20 74 65 72 6d 73 2e 20   than 99 terms. 
1d60: 20 43 68 65 63 6b 20 74 6f 0a 23 20 6d 61 6b 65   Check to.# make
1d70: 20 73 75 72 65 20 74 68 69 73 20 6c 69 6d 69 74   sure this limit
1d80: 20 69 73 20 65 6e 66 6f 72 63 65 64 2e 0a 23 0a   is enforced..#.
1d90: 23 20 32 30 30 35 2d 30 37 2d 31 36 3a 20 54 68  # 2005-07-16: Th
1da0: 65 72 65 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72  ere is no longer
1db0: 20 61 20 6c 69 6d 69 74 20 6f 6e 20 74 68 65 20   a limit on the 
1dc0: 6e 75 6d 62 65 72 20 6f 66 20 74 65 72 6d 73 20  number of terms 
1dd0: 69 6e 20 61 0a 23 20 57 48 45 52 45 20 63 6c 61  in a.# WHERE cla
1de0: 75 73 65 2e 20 20 42 75 74 20 6b 65 65 70 20 74  use.  But keep t
1df0: 68 65 73 65 20 74 65 73 74 73 20 6a 75 73 74 20  hese tests just 
1e00: 73 6f 20 74 68 61 74 20 77 65 20 68 61 76 65 20  so that we have 
1e10: 73 6f 6d 65 20 74 65 73 74 73 0a 23 20 74 68 61  some tests.# tha
1e20: 74 20 75 73 65 20 61 20 6c 61 72 67 65 20 6e 75  t use a large nu
1e30: 6d 62 65 72 20 6f 66 20 74 65 72 6d 73 20 69 6e  mber of terms in
1e40: 20 74 68 65 20 57 48 45 52 45 20 63 6c 61 75 73   the WHERE claus
1e50: 65 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 6d 69 73  e..#.do_test mis
1e60: 63 31 2d 31 30 2e 30 20 7b 0a 20 20 65 78 65 63  c1-10.0 {.  exec
1e70: 73 71 6c 20 7b 53 45 4c 45 43 54 20 63 6f 75 6e  sql {SELECT coun
1e80: 74 28 2a 29 20 46 52 4f 4d 20 6d 61 6e 79 63 6f  t(*) FROM manyco
1e90: 6c 7d 0a 7d 20 7b 39 7d 0a 64 6f 5f 74 65 73 74  l}.} {9}.do_test
1ea0: 20 6d 69 73 63 31 2d 31 30 2e 31 20 7b 0a 20 20   misc1-10.1 {.  
1eb0: 73 65 74 20 3a 3a 77 68 65 72 65 20 7b 57 48 45  set ::where {WHE
1ec0: 52 45 20 78 30 3e 3d 30 7d 0a 20 20 66 6f 72 20  RE x0>=0}.  for 
1ed0: 7b 73 65 74 20 69 20 31 7d 20 7b 24 69 3c 3d 39  {set i 1} {$i<=9
1ee0: 39 7d 20 7b 69 6e 63 72 20 69 7d 20 7b 0a 20 20  9} {incr i} {.  
1ef0: 20 20 61 70 70 65 6e 64 20 3a 3a 77 68 65 72 65    append ::where
1f00: 20 22 20 41 4e 44 20 78 24 69 3c 3e 30 22 0a 20   " AND x$i<>0". 
1f10: 20 7d 0a 20 20 63 61 74 63 68 73 71 6c 20 22 53   }.  catchsql "S
1f20: 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46  ELECT count(*) F
1f30: 52 4f 4d 20 6d 61 6e 79 63 6f 6c 20 24 3a 3a 77  ROM manycol $::w
1f40: 68 65 72 65 22 0a 7d 20 7b 30 20 39 7d 0a 64 6f  here".} {0 9}.do
1f50: 5f 74 65 73 74 20 6d 69 73 63 31 2d 31 30 2e 32  _test misc1-10.2
1f60: 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20 22 53   {.  catchsql "S
1f70: 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29 20 46  ELECT count(*) F
1f80: 52 4f 4d 20 6d 61 6e 79 63 6f 6c 20 24 3a 3a 77  ROM manycol $::w
1f90: 68 65 72 65 20 41 4e 44 20 72 6f 77 69 64 3e 30  here AND rowid>0
1fa0: 22 0a 7d 20 7b 30 20 39 7d 0a 64 6f 5f 74 65 73  ".} {0 9}.do_tes
1fb0: 74 20 6d 69 73 63 31 2d 31 30 2e 33 20 7b 0a 20  t misc1-10.3 {. 
1fc0: 20 72 65 67 73 75 62 20 22 78 30 3e 3d 30 22 20   regsub "x0>=0" 
1fd0: 24 3a 3a 77 68 65 72 65 20 22 78 30 3d 30 22 20  $::where "x0=0" 
1fe0: 3a 3a 77 68 65 72 65 0a 20 20 63 61 74 63 68 73  ::where.  catchs
1ff0: 71 6c 20 22 44 45 4c 45 54 45 20 46 52 4f 4d 20  ql "DELETE FROM 
2000: 6d 61 6e 79 63 6f 6c 20 24 3a 3a 77 68 65 72 65  manycol $::where
2010: 22 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f 74 65  ".} {0 {}}.do_te
2020: 73 74 20 6d 69 73 63 31 2d 31 30 2e 34 20 7b 0a  st misc1-10.4 {.
2030: 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43    execsql {SELEC
2040: 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20  T count(*) FROM 
2050: 6d 61 6e 79 63 6f 6c 7d 0a 7d 20 7b 38 7d 0a 64  manycol}.} {8}.d
2060: 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d 31 30 2e  o_test misc1-10.
2070: 35 20 7b 0a 20 20 63 61 74 63 68 73 71 6c 20 22  5 {.  catchsql "
2080: 44 45 4c 45 54 45 20 46 52 4f 4d 20 6d 61 6e 79  DELETE FROM many
2090: 63 6f 6c 20 24 3a 3a 77 68 65 72 65 20 41 4e 44  col $::where AND
20a0: 20 72 6f 77 69 64 3e 30 22 0a 7d 20 7b 30 20 7b   rowid>0".} {0 {
20b0: 7d 7d 0a 64 6f 5f 74 65 73 74 20 6d 69 73 63 31  }}.do_test misc1
20c0: 2d 31 30 2e 36 20 7b 0a 20 20 65 78 65 63 73 71  -10.6 {.  execsq
20d0: 6c 20 7b 53 45 4c 45 43 54 20 78 31 20 46 52 4f  l {SELECT x1 FRO
20e0: 4d 20 6d 61 6e 79 63 6f 6c 20 57 48 45 52 45 20  M manycol WHERE 
20f0: 78 30 3d 31 30 30 7d 0a 7d 20 7b 31 30 31 7d 0a  x0=100}.} {101}.
2100: 64 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d 31 30  do_test misc1-10
2110: 2e 37 20 7b 0a 20 20 72 65 67 73 75 62 20 22 78  .7 {.  regsub "x
2120: 30 3d 30 22 20 24 3a 3a 77 68 65 72 65 20 22 78  0=0" $::where "x
2130: 30 3d 31 30 30 22 20 3a 3a 77 68 65 72 65 0a 20  0=100" ::where. 
2140: 20 63 61 74 63 68 73 71 6c 20 22 55 50 44 41 54   catchsql "UPDAT
2150: 45 20 6d 61 6e 79 63 6f 6c 20 53 45 54 20 78 31  E manycol SET x1
2160: 3d 78 31 2b 31 20 24 3a 3a 77 68 65 72 65 22 0a  =x1+1 $::where".
2170: 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f 74 65 73 74  } {0 {}}.do_test
2180: 20 6d 69 73 63 31 2d 31 30 2e 38 20 7b 0a 20 20   misc1-10.8 {.  
2190: 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20  execsql {SELECT 
21a0: 78 31 20 46 52 4f 4d 20 6d 61 6e 79 63 6f 6c 20  x1 FROM manycol 
21b0: 57 48 45 52 45 20 78 30 3d 31 30 30 7d 0a 7d 20  WHERE x0=100}.} 
21c0: 7b 31 30 32 7d 0a 64 6f 5f 74 65 73 74 20 6d 69  {102}.do_test mi
21d0: 73 63 31 2d 31 30 2e 39 20 7b 0a 20 20 63 61 74  sc1-10.9 {.  cat
21e0: 63 68 73 71 6c 20 22 55 50 44 41 54 45 20 6d 61  chsql "UPDATE ma
21f0: 6e 79 63 6f 6c 20 53 45 54 20 78 31 3d 78 31 2b  nycol SET x1=x1+
2200: 31 20 24 3a 3a 77 68 65 72 65 20 41 4e 44 20 72  1 $::where AND r
2210: 6f 77 69 64 3e 30 22 0a 7d 20 7b 30 20 7b 7d 7d  owid>0".} {0 {}}
2220: 0a 64 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d 31  .do_test misc1-1
2230: 30 2e 31 30 20 7b 0a 20 20 65 78 65 63 73 71 6c  0.10 {.  execsql
2240: 20 7b 53 45 4c 45 43 54 20 78 31 20 46 52 4f 4d   {SELECT x1 FROM
2250: 20 6d 61 6e 79 63 6f 6c 20 57 48 45 52 45 20 78   manycol WHERE x
2260: 30 3d 31 30 30 7d 0a 7d 20 7b 31 30 33 7d 0a 0a  0=100}.} {103}..
2270: 23 20 4d 61 6b 65 20 73 75 72 65 20 74 68 65 20  # Make sure the 
2280: 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 77  initialization w
2290: 6f 72 6b 73 20 65 76 65 6e 20 69 66 20 61 20 64  orks even if a d
22a0: 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 65  atabase is opene
22b0: 64 20 77 68 69 6c 65 0a 23 20 61 6e 6f 74 68 65  d while.# anothe
22c0: 72 20 70 72 6f 63 65 73 73 20 68 61 73 20 74 68  r process has th
22d0: 65 20 64 61 74 61 62 61 73 65 20 6c 6f 63 6b 65  e database locke
22e0: 64 2e 0a 23 0a 23 20 55 70 64 61 74 65 20 66 6f  d..#.# Update fo
22f0: 72 20 76 33 3a 20 54 68 65 20 42 45 47 49 4e 20  r v3: The BEGIN 
2300: 64 6f 65 73 6e 27 74 20 6c 6f 63 6b 20 74 68 65  doesn't lock the
2310: 20 64 61 74 61 62 61 73 65 20 73 6f 20 74 68 65   database so the
2320: 20 73 63 68 65 6d 61 20 69 73 20 72 65 61 64 0a   schema is read.
2330: 23 20 61 6e 64 20 74 68 65 20 53 45 4c 45 43 54  # and the SELECT
2340: 20 72 65 74 75 72 6e 73 20 73 75 63 63 65 73 73   returns success
2350: 66 75 6c 6c 79 2e 0a 64 6f 5f 74 65 73 74 20 6d  fully..do_test m
2360: 69 73 63 31 2d 31 31 2e 31 20 7b 0a 20 20 65 78  isc1-11.1 {.  ex
2370: 65 63 73 71 6c 20 7b 42 45 47 49 4e 7d 0a 20 20  ecsql {BEGIN}.  
2380: 65 78 65 63 73 71 6c 20 7b 55 50 44 41 54 45 20  execsql {UPDATE 
2390: 74 31 20 53 45 54 20 61 3d 30 20 57 48 45 52 45  t1 SET a=0 WHERE
23a0: 20 30 7d 0a 20 20 73 71 6c 69 74 65 33 20 64 62   0}.  sqlite3 db
23b0: 32 20 74 65 73 74 2e 64 62 0a 20 20 73 65 74 20  2 test.db.  set 
23c0: 72 63 20 5b 63 61 74 63 68 20 7b 64 62 32 20 65  rc [catch {db2 e
23d0: 76 61 6c 20 7b 53 45 4c 45 43 54 20 63 6f 75 6e  val {SELECT coun
23e0: 74 28 2a 29 20 46 52 4f 4d 20 74 31 7d 7d 20 6d  t(*) FROM t1}} m
23f0: 73 67 5d 0a 20 20 6c 61 70 70 65 6e 64 20 72 63  sg].  lappend rc
2400: 20 24 6d 73 67 0a 23 20 76 32 20 72 65 73 75 6c   $msg.# v2 resul
2410: 74 3a 20 7b 31 20 7b 64 61 74 61 62 61 73 65 20  t: {1 {database 
2420: 69 73 20 6c 6f 63 6b 65 64 7d 7d 0a 7d 20 7b 30  is locked}}.} {0
2430: 20 33 7d 0a 64 6f 5f 74 65 73 74 20 6d 69 73 63   3}.do_test misc
2440: 31 2d 31 31 2e 32 20 7b 0a 20 20 65 78 65 63 73  1-11.2 {.  execs
2450: 71 6c 20 7b 43 4f 4d 4d 49 54 7d 0a 20 20 73 65  ql {COMMIT}.  se
2460: 74 20 72 63 20 5b 63 61 74 63 68 20 7b 64 62 32  t rc [catch {db2
2470: 20 65 76 61 6c 20 7b 53 45 4c 45 43 54 20 63 6f   eval {SELECT co
2480: 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31 7d 7d  unt(*) FROM t1}}
2490: 20 6d 73 67 5d 0a 20 20 64 62 32 20 63 6c 6f 73   msg].  db2 clos
24a0: 65 0a 20 20 6c 61 70 70 65 6e 64 20 72 63 20 24  e.  lappend rc $
24b0: 6d 73 67 0a 7d 20 7b 30 20 33 7d 0a 0a 23 20 4d  msg.} {0 3}..# M
24c0: 61 6b 65 20 73 75 72 65 20 73 74 72 69 6e 67 20  ake sure string 
24d0: 63 6f 6d 70 61 72 69 73 6f 6e 73 20 72 65 61 6c  comparisons real
24e0: 6c 79 20 64 6f 20 63 6f 6d 70 61 72 65 20 73 74  ly do compare st
24f0: 72 69 6e 67 73 20 69 6e 20 66 6f 72 6d 61 74 34  rings in format4
2500: 2b 2e 0a 23 20 53 69 6d 69 6c 61 72 20 74 65 73  +..# Similar tes
2510: 74 73 20 69 6e 20 74 68 65 20 66 6f 72 6d 61 74  ts in the format
2520: 33 2e 74 65 73 74 20 66 69 6c 65 20 73 68 6f 77  3.test file show
2530: 20 74 68 61 74 20 66 6f 72 20 66 6f 72 6d 61 74   that for format
2540: 33 20 61 6e 64 20 65 61 72 6c 69 65 72 0a 23 20  3 and earlier.# 
2550: 61 6c 6c 20 63 6f 6d 70 61 72 69 73 69 6f 6e 73  all comparisions
2560: 20 77 68 65 72 65 20 6e 75 6d 65 72 69 63 20 69   where numeric i
2570: 66 20 65 69 74 68 65 72 20 6f 70 65 72 61 6e 64  f either operand
2580: 20 6c 6f 6f 6b 65 64 20 6c 69 6b 65 20 61 20 6e   looked like a n
2590: 75 6d 62 65 72 2e 0a 23 0a 64 6f 5f 74 65 73 74  umber..#.do_test
25a0: 20 6d 69 73 63 31 2d 31 32 2e 31 20 7b 0a 20 20   misc1-12.1 {.  
25b0: 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20  execsql {SELECT 
25c0: 27 30 27 3d 3d 27 30 2e 30 27 7d 0a 7d 20 7b 30  '0'=='0.0'}.} {0
25d0: 7d 0a 64 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d  }.do_test misc1-
25e0: 31 32 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c  12.2 {.  execsql
25f0: 20 7b 53 45 4c 45 43 54 20 27 30 27 3d 3d 30 2e   {SELECT '0'==0.
2600: 30 7d 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74  0}.} {0}.do_test
2610: 20 6d 69 73 63 31 2d 31 32 2e 33 20 7b 0a 20 20   misc1-12.3 {.  
2620: 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20  execsql {SELECT 
2630: 27 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35  '123456789012345
2640: 36 37 38 39 30 27 3d 3d 27 31 32 33 34 35 36 37  67890'=='1234567
2650: 38 39 30 31 32 33 34 35 36 37 38 39 31 27 7d 0a  8901234567891'}.
2660: 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 6d 69  } {0}.do_test mi
2670: 73 63 31 2d 31 32 2e 34 20 7b 0a 20 20 65 78 65  sc1-12.4 {.  exe
2680: 63 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41 54  csql {.    CREAT
2690: 45 20 54 41 42 4c 45 20 74 36 28 61 20 49 4e 54  E TABLE t6(a INT
26a0: 20 55 4e 49 51 55 45 2c 20 62 20 54 45 58 54 20   UNIQUE, b TEXT 
26b0: 55 4e 49 51 55 45 29 3b 0a 20 20 20 20 49 4e 53  UNIQUE);.    INS
26c0: 45 52 54 20 49 4e 54 4f 20 74 36 20 56 41 4c 55  ERT INTO t6 VALU
26d0: 45 53 28 27 30 27 2c 27 30 2e 30 27 29 3b 0a 20  ES('0','0.0');. 
26e0: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
26f0: 20 74 36 3b 0a 20 20 7d 0a 7d 20 7b 30 20 30 2e   t6;.  }.} {0 0.
2700: 30 7d 0a 69 66 63 61 70 61 62 6c 65 20 63 6f 6e  0}.ifcapable con
2710: 66 6c 69 63 74 20 7b 0a 20 20 64 6f 5f 74 65 73  flict {.  do_tes
2720: 74 20 6d 69 73 63 31 2d 31 32 2e 35 20 7b 0a 20  t misc1-12.5 {. 
2730: 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20     execsql {.   
2740: 20 20 20 49 4e 53 45 52 54 20 4f 52 20 49 47 4e     INSERT OR IGN
2750: 4f 52 45 20 49 4e 54 4f 20 74 36 20 56 41 4c 55  ORE INTO t6 VALU
2760: 45 53 28 30 2e 30 2c 27 78 27 29 3b 0a 20 20 20  ES(0.0,'x');.   
2770: 20 20 20 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d     SELECT * FROM
2780: 20 74 36 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b   t6;.    }.  } {
2790: 30 20 30 2e 30 7d 0a 20 20 64 6f 5f 74 65 73 74  0 0.0}.  do_test
27a0: 20 6d 69 73 63 31 2d 31 32 2e 36 20 7b 0a 20 20   misc1-12.6 {.  
27b0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
27c0: 20 20 49 4e 53 45 52 54 20 4f 52 20 49 47 4e 4f    INSERT OR IGNO
27d0: 52 45 20 49 4e 54 4f 20 74 36 20 56 41 4c 55 45  RE INTO t6 VALUE
27e0: 53 28 27 79 27 2c 30 29 3b 0a 20 20 20 20 20 20  S('y',0);.      
27f0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 36  SELECT * FROM t6
2800: 3b 0a 20 20 20 20 7d 0a 20 20 7d 20 7b 30 20 30  ;.    }.  } {0 0
2810: 2e 30 20 79 20 30 7d 0a 7d 0a 64 6f 5f 74 65 73  .0 y 0}.}.do_tes
2820: 74 20 6d 69 73 63 31 2d 31 32 2e 37 20 7b 0a 20  t misc1-12.7 {. 
2830: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 43   execsql {.    C
2840: 52 45 41 54 45 20 54 41 42 4c 45 20 74 37 28 78  REATE TABLE t7(x
2850: 20 49 4e 54 45 47 45 52 2c 20 79 20 54 45 58 54   INTEGER, y TEXT
2860: 2c 20 7a 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  , z);.    INSERT
2870: 20 49 4e 54 4f 20 74 37 20 56 41 4c 55 45 53 28   INTO t7 VALUES(
2880: 30 2c 30 2c 31 29 3b 0a 20 20 20 20 49 4e 53 45  0,0,1);.    INSE
2890: 52 54 20 49 4e 54 4f 20 74 37 20 56 41 4c 55 45  RT INTO t7 VALUE
28a0: 53 28 30 2e 30 2c 30 2c 32 29 3b 0a 20 20 20 20  S(0.0,0,2);.    
28b0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 37 20 56  INSERT INTO t7 V
28c0: 41 4c 55 45 53 28 30 2c 30 2e 30 2c 33 29 3b 0a  ALUES(0,0.0,3);.
28d0: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
28e0: 74 37 20 56 41 4c 55 45 53 28 30 2e 30 2c 30 2e  t7 VALUES(0.0,0.
28f0: 30 2c 34 29 3b 0a 20 20 20 20 53 45 4c 45 43 54  0,4);.    SELECT
2900: 20 44 49 53 54 49 4e 43 54 20 78 2c 20 79 20 46   DISTINCT x, y F
2910: 52 4f 4d 20 74 37 20 4f 52 44 45 52 20 42 59 20  ROM t7 ORDER BY 
2920: 7a 3b 0a 20 20 7d 0a 7d 20 7b 30 20 30 20 30 20  z;.  }.} {0 0 0 
2930: 30 2e 30 7d 0a 64 6f 5f 74 65 73 74 20 6d 69 73  0.0}.do_test mis
2940: 63 31 2d 31 32 2e 38 20 7b 0a 20 20 65 78 65 63  c1-12.8 {.  exec
2950: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
2960: 20 6d 69 6e 28 7a 29 2c 20 6d 61 78 28 7a 29 2c   min(z), max(z),
2970: 20 63 6f 75 6e 74 28 7a 29 20 46 52 4f 4d 20 74   count(z) FROM t
2980: 37 20 47 52 4f 55 50 20 42 59 20 78 20 4f 52 44  7 GROUP BY x ORD
2990: 45 52 20 42 59 20 31 3b 0a 20 20 7d 0a 7d 20 7b  ER BY 1;.  }.} {
29a0: 31 20 34 20 34 7d 0a 64 6f 5f 74 65 73 74 20 6d  1 4 4}.do_test m
29b0: 69 73 63 31 2d 31 32 2e 39 20 7b 0a 20 20 65 78  isc1-12.9 {.  ex
29c0: 65 63 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45  ecsql {.    SELE
29d0: 43 54 20 6d 69 6e 28 7a 29 2c 20 6d 61 78 28 7a  CT min(z), max(z
29e0: 29 2c 20 63 6f 75 6e 74 28 7a 29 20 46 52 4f 4d  ), count(z) FROM
29f0: 20 74 37 20 47 52 4f 55 50 20 42 59 20 79 20 4f   t7 GROUP BY y O
2a00: 52 44 45 52 20 42 59 20 31 3b 0a 20 20 7d 0a 7d  RDER BY 1;.  }.}
2a10: 20 7b 31 20 32 20 32 20 33 20 34 20 32 7d 0a 0a   {1 2 2 3 4 2}..
2a20: 23 20 54 68 69 73 20 75 73 65 64 20 74 6f 20 62  # This used to b
2a30: 65 20 61 6e 20 65 72 72 6f 72 2e 20 20 42 75 74  e an error.  But
2a40: 20 77 65 20 63 68 61 6e 67 65 64 20 74 68 65 20   we changed the 
2a50: 63 6f 64 65 20 73 6f 20 74 68 61 74 20 61 72 62  code so that arb
2a60: 69 74 72 61 72 79 0a 23 20 69 64 65 6e 74 69 66  itrary.# identif
2a70: 69 65 72 73 20 63 61 6e 20 62 65 20 75 73 65 64  iers can be used
2a80: 20 61 73 20 61 20 63 6f 6c 6c 61 74 69 6e 67 20   as a collating 
2a90: 73 65 71 75 65 6e 63 65 2e 20 20 43 6f 6c 6c 61  sequence.  Colla
2aa0: 74 69 6f 6e 20 69 73 20 62 79 20 74 65 78 74 0a  tion is by text.
2ab0: 23 20 69 66 20 74 68 65 20 69 64 65 6e 74 69 66  # if the identif
2ac0: 69 65 72 20 63 6f 6e 74 61 69 6e 73 20 22 74 65  ier contains "te
2ad0: 78 74 22 2c 20 22 62 6c 6f 62 22 2c 20 6f 72 20  xt", "blob", or 
2ae0: 22 63 6c 6f 62 22 20 61 6e 64 20 69 73 20 6e 75  "clob" and is nu
2af0: 6d 65 72 69 63 0a 23 20 6f 74 68 65 72 77 69 73  meric.# otherwis
2b00: 65 2e 0a 23 0a 23 20 55 70 64 61 74 65 3a 20 49  e..#.# Update: I
2b10: 6e 20 76 33 2c 20 69 74 20 69 73 20 61 6e 20 65  n v3, it is an e
2b20: 72 72 6f 72 20 61 67 61 69 6e 2e 0a 23 0a 23 64  rror again..#.#d
2b30: 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d 31 32 2e  o_test misc1-12.
2b40: 31 30 20 7b 0a 23 20 20 63 61 74 63 68 73 71 6c  10 {.#  catchsql
2b50: 20 7b 0a 23 20 20 20 20 53 45 4c 45 43 54 20 2a   {.#    SELECT *
2b60: 20 46 52 4f 4d 20 74 36 20 4f 52 44 45 52 20 42   FROM t6 ORDER B
2b70: 59 20 61 20 43 4f 4c 4c 41 54 45 20 75 6e 6b 6e  Y a COLLATE unkn
2b80: 6f 77 6e 3b 0a 23 20 20 7d 0a 23 7d 20 7b 30 20  own;.#  }.#} {0 
2b90: 7b 30 20 30 20 79 20 30 7d 7d 0a 64 6f 5f 74 65  {0 0 y 0}}.do_te
2ba0: 73 74 20 6d 69 73 63 31 2d 31 32 2e 31 31 20 7b  st misc1-12.11 {
2bb0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
2bc0: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 38   CREATE TABLE t8
2bd0: 28 78 20 54 45 58 54 20 43 4f 4c 4c 41 54 45 20  (x TEXT COLLATE 
2be0: 6e 75 6d 65 72 69 63 2c 20 79 20 49 4e 54 45 47  numeric, y INTEG
2bf0: 45 52 20 43 4f 4c 4c 41 54 45 20 74 65 78 74 2c  ER COLLATE text,
2c00: 20 7a 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20   z);.    INSERT 
2c10: 49 4e 54 4f 20 74 38 20 56 41 4c 55 45 53 28 30  INTO t8 VALUES(0
2c20: 2c 30 2c 31 29 3b 0a 20 20 20 20 49 4e 53 45 52  ,0,1);.    INSER
2c30: 54 20 49 4e 54 4f 20 74 38 20 56 41 4c 55 45 53  T INTO t8 VALUES
2c40: 28 30 2e 30 2c 30 2c 32 29 3b 0a 20 20 20 20 49  (0.0,0,2);.    I
2c50: 4e 53 45 52 54 20 49 4e 54 4f 20 74 38 20 56 41  NSERT INTO t8 VA
2c60: 4c 55 45 53 28 30 2c 30 2e 30 2c 33 29 3b 0a 20  LUES(0,0.0,3);. 
2c70: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
2c80: 38 20 56 41 4c 55 45 53 28 30 2e 30 2c 30 2e 30  8 VALUES(0.0,0.0
2c90: 2c 34 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20  ,4);.    SELECT 
2ca0: 44 49 53 54 49 4e 43 54 20 78 2c 20 79 20 46 52  DISTINCT x, y FR
2cb0: 4f 4d 20 74 38 20 4f 52 44 45 52 20 42 59 20 7a  OM t8 ORDER BY z
2cc0: 3b 0a 20 20 7d 0a 7d 20 7b 30 20 30 20 30 2e 30  ;.  }.} {0 0 0.0
2cd0: 20 30 7d 0a 64 6f 5f 74 65 73 74 20 6d 69 73 63   0}.do_test misc
2ce0: 31 2d 31 32 2e 31 32 20 7b 0a 20 20 65 78 65 63  1-12.12 {.  exec
2cf0: 73 71 6c 20 7b 0a 20 20 20 20 53 45 4c 45 43 54  sql {.    SELECT
2d00: 20 6d 69 6e 28 7a 29 2c 20 6d 61 78 28 7a 29 2c   min(z), max(z),
2d10: 20 63 6f 75 6e 74 28 7a 29 20 46 52 4f 4d 20 74   count(z) FROM t
2d20: 38 20 47 52 4f 55 50 20 42 59 20 78 20 4f 52 44  8 GROUP BY x ORD
2d30: 45 52 20 42 59 20 31 3b 0a 20 20 7d 0a 7d 20 7b  ER BY 1;.  }.} {
2d40: 31 20 33 20 32 20 32 20 34 20 32 7d 0a 64 6f 5f  1 3 2 2 4 2}.do_
2d50: 74 65 73 74 20 6d 69 73 63 31 2d 31 32 2e 31 33  test misc1-12.13
2d60: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20   {.  execsql {. 
2d70: 20 20 20 53 45 4c 45 43 54 20 6d 69 6e 28 7a 29     SELECT min(z)
2d80: 2c 20 6d 61 78 28 7a 29 2c 20 63 6f 75 6e 74 28  , max(z), count(
2d90: 7a 29 20 46 52 4f 4d 20 74 38 20 47 52 4f 55 50  z) FROM t8 GROUP
2da0: 20 42 59 20 79 20 4f 52 44 45 52 20 42 59 20 31   BY y ORDER BY 1
2db0: 3b 0a 20 20 7d 0a 7d 20 7b 31 20 34 20 34 7d 0a  ;.  }.} {1 4 4}.
2dc0: 0a 23 20 54 68 65 72 65 20 77 61 73 20 61 20 70  .# There was a p
2dd0: 72 6f 62 6c 65 6d 20 77 69 74 68 20 72 65 61 6c  roblem with real
2de0: 6c 6f 63 28 29 20 69 6e 20 74 68 65 20 4f 50 5f  loc() in the OP_
2df0: 4d 65 6d 53 74 6f 72 65 20 6f 70 65 72 61 74 69  MemStore operati
2e00: 6f 6e 20 6f 66 0a 23 20 74 68 65 20 56 44 42 45  on of.# the VDBE
2e10: 2e 20 20 41 20 62 75 66 66 65 72 20 77 61 73 20  .  A buffer was 
2e20: 62 65 69 6e 67 20 72 65 61 6c 6c 6f 63 61 74 65  being reallocate
2e30: 64 20 62 75 74 20 73 6f 6d 65 20 70 6f 69 6e 74  d but some point
2e40: 65 72 73 20 69 6e 74 6f 20 0a 23 20 74 68 65 20  ers into .# the 
2e50: 6f 6c 64 20 63 6f 70 79 20 6f 66 20 74 68 65 20  old copy of the 
2e60: 62 75 66 66 65 72 20 77 65 72 65 20 6e 6f 74 20  buffer were not 
2e70: 62 65 69 6e 67 20 6d 6f 76 65 64 20 6f 76 65 72  being moved over
2e80: 20 74 6f 20 74 68 65 20 6e 65 77 20 63 6f 70 79   to the new copy
2e90: 2e 0a 23 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e  ..# The followin
2ea0: 67 20 63 6f 64 65 20 74 65 73 74 73 20 66 6f 72  g code tests for
2eb0: 20 74 68 65 20 70 72 6f 62 6c 65 6d 2e 0a 23 0a   the problem..#.
2ec0: 69 66 63 61 70 61 62 6c 65 20 73 75 62 71 75 65  ifcapable subque
2ed0: 72 79 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 6d  ry {.  do_test m
2ee0: 69 73 63 31 2d 31 33 2e 31 20 7b 0a 20 20 20 20  isc1-13.1 {.    
2ef0: 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20   execsql {.     
2f00: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
2f10: 39 28 78 2c 79 29 3b 0a 20 20 20 20 20 20 20 49  9(x,y);.       I
2f20: 4e 53 45 52 54 20 49 4e 54 4f 20 74 39 20 56 41  NSERT INTO t9 VA
2f30: 4c 55 45 53 28 27 6f 6e 65 27 2c 31 29 3b 0a 20  LUES('one',1);. 
2f40: 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54        INSERT INT
2f50: 4f 20 74 39 20 56 41 4c 55 45 53 28 27 74 77 6f  O t9 VALUES('two
2f60: 27 2c 32 29 3b 0a 20 20 20 20 20 20 20 49 4e 53  ',2);.       INS
2f70: 45 52 54 20 49 4e 54 4f 20 74 39 20 56 41 4c 55  ERT INTO t9 VALU
2f80: 45 53 28 27 74 68 72 65 65 27 2c 33 29 3b 0a 20  ES('three',3);. 
2f90: 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54        INSERT INT
2fa0: 4f 20 74 39 20 56 41 4c 55 45 53 28 27 66 6f 75  O t9 VALUES('fou
2fb0: 72 27 2c 34 29 3b 0a 20 20 20 20 20 20 20 49 4e  r',4);.       IN
2fc0: 53 45 52 54 20 49 4e 54 4f 20 74 39 20 56 41 4c  SERT INTO t9 VAL
2fd0: 55 45 53 28 27 66 69 76 65 27 2c 35 29 3b 0a 20  UES('five',5);. 
2fe0: 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54        INSERT INT
2ff0: 4f 20 74 39 20 56 41 4c 55 45 53 28 27 73 69 78  O t9 VALUES('six
3000: 27 2c 36 29 3b 0a 20 20 20 20 20 20 20 49 4e 53  ',6);.       INS
3010: 45 52 54 20 49 4e 54 4f 20 74 39 20 56 41 4c 55  ERT INTO t9 VALU
3020: 45 53 28 27 73 65 76 65 6e 27 2c 37 29 3b 0a 20  ES('seven',7);. 
3030: 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54        INSERT INT
3040: 4f 20 74 39 20 56 41 4c 55 45 53 28 27 65 69 67  O t9 VALUES('eig
3050: 68 74 27 2c 38 29 3b 0a 20 20 20 20 20 20 20 49  ht',8);.       I
3060: 4e 53 45 52 54 20 49 4e 54 4f 20 74 39 20 56 41  NSERT INTO t9 VA
3070: 4c 55 45 53 28 27 6e 69 6e 65 27 2c 39 29 3b 0a  LUES('nine',9);.
3080: 20 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e         INSERT IN
3090: 54 4f 20 74 39 20 56 41 4c 55 45 53 28 27 74 65  TO t9 VALUES('te
30a0: 6e 27 2c 31 30 29 3b 0a 20 20 20 20 20 20 20 49  n',10);.       I
30b0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 39 20 56 41  NSERT INTO t9 VA
30c0: 4c 55 45 53 28 27 65 6c 65 76 65 6e 27 2c 31 31  LUES('eleven',11
30d0: 29 3b 0a 20 20 20 20 20 20 20 53 45 4c 45 43 54  );.       SELECT
30e0: 20 79 20 46 52 4f 4d 20 74 39 0a 20 20 20 20 20   y FROM t9.     
30f0: 20 20 57 48 45 52 45 20 78 3d 28 53 45 4c 45 43    WHERE x=(SELEC
3100: 54 20 78 20 46 52 4f 4d 20 74 39 20 57 48 45 52  T x FROM t9 WHER
3110: 45 20 79 3d 31 29 0a 20 20 20 20 20 20 20 20 20  E y=1).         
3120: 20 4f 52 20 78 3d 28 53 45 4c 45 43 54 20 78 20   OR x=(SELECT x 
3130: 46 52 4f 4d 20 74 39 20 57 48 45 52 45 20 79 3d  FROM t9 WHERE y=
3140: 32 29 0a 20 20 20 20 20 20 20 20 20 20 4f 52 20  2).          OR 
3150: 78 3d 28 53 45 4c 45 43 54 20 78 20 46 52 4f 4d  x=(SELECT x FROM
3160: 20 74 39 20 57 48 45 52 45 20 79 3d 33 29 0a 20   t9 WHERE y=3). 
3170: 20 20 20 20 20 20 20 20 20 4f 52 20 78 3d 28 53           OR x=(S
3180: 45 4c 45 43 54 20 78 20 46 52 4f 4d 20 74 39 20  ELECT x FROM t9 
3190: 57 48 45 52 45 20 79 3d 34 29 0a 20 20 20 20 20  WHERE y=4).     
31a0: 20 20 20 20 20 4f 52 20 78 3d 28 53 45 4c 45 43       OR x=(SELEC
31b0: 54 20 78 20 46 52 4f 4d 20 74 39 20 57 48 45 52  T x FROM t9 WHER
31c0: 45 20 79 3d 35 29 0a 20 20 20 20 20 20 20 20 20  E y=5).         
31d0: 20 4f 52 20 78 3d 28 53 45 4c 45 43 54 20 78 20   OR x=(SELECT x 
31e0: 46 52 4f 4d 20 74 39 20 57 48 45 52 45 20 79 3d  FROM t9 WHERE y=
31f0: 36 29 0a 20 20 20 20 20 20 20 20 20 20 4f 52 20  6).          OR 
3200: 78 3d 28 53 45 4c 45 43 54 20 78 20 46 52 4f 4d  x=(SELECT x FROM
3210: 20 74 39 20 57 48 45 52 45 20 79 3d 37 29 0a 20   t9 WHERE y=7). 
3220: 20 20 20 20 20 20 20 20 20 4f 52 20 78 3d 28 53           OR x=(S
3230: 45 4c 45 43 54 20 78 20 46 52 4f 4d 20 74 39 20  ELECT x FROM t9 
3240: 57 48 45 52 45 20 79 3d 38 29 0a 20 20 20 20 20  WHERE y=8).     
3250: 20 20 20 20 20 4f 52 20 78 3d 28 53 45 4c 45 43       OR x=(SELEC
3260: 54 20 78 20 46 52 4f 4d 20 74 39 20 57 48 45 52  T x FROM t9 WHER
3270: 45 20 79 3d 39 29 0a 20 20 20 20 20 20 20 20 20  E y=9).         
3280: 20 4f 52 20 78 3d 28 53 45 4c 45 43 54 20 78 20   OR x=(SELECT x 
3290: 46 52 4f 4d 20 74 39 20 57 48 45 52 45 20 79 3d  FROM t9 WHERE y=
32a0: 31 30 29 0a 20 20 20 20 20 20 20 20 20 20 4f 52  10).          OR
32b0: 20 78 3d 28 53 45 4c 45 43 54 20 78 20 46 52 4f   x=(SELECT x FRO
32c0: 4d 20 74 39 20 57 48 45 52 45 20 79 3d 31 31 29  M t9 WHERE y=11)
32d0: 0a 20 20 20 20 20 20 20 20 20 20 4f 52 20 78 3d  .          OR x=
32e0: 28 53 45 4c 45 43 54 20 78 20 46 52 4f 4d 20 74  (SELECT x FROM t
32f0: 39 20 57 48 45 52 45 20 79 3d 31 32 29 0a 20 20  9 WHERE y=12).  
3300: 20 20 20 20 20 20 20 20 4f 52 20 78 3d 28 53 45          OR x=(SE
3310: 4c 45 43 54 20 78 20 46 52 4f 4d 20 74 39 20 57  LECT x FROM t9 W
3320: 48 45 52 45 20 79 3d 31 33 29 0a 20 20 20 20 20  HERE y=13).     
3330: 20 20 20 20 20 4f 52 20 78 3d 28 53 45 4c 45 43       OR x=(SELEC
3340: 54 20 78 20 46 52 4f 4d 20 74 39 20 57 48 45 52  T x FROM t9 WHER
3350: 45 20 79 3d 31 34 29 0a 20 20 20 20 20 20 20 3b  E y=14).       ;
3360: 0a 20 20 20 20 20 7d 0a 20 20 7d 20 7b 31 20 32  .     }.  } {1 2
3370: 20 33 20 34 20 35 20 36 20 37 20 38 20 39 20 31   3 4 5 6 7 8 9 1
3380: 30 20 31 31 7d 0a 7d 0a 0a 23 0a 23 20 54 68 65  0 11}.}..#.# The
3390: 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 65 73 74 73   following tests
33a0: 20 63 61 6e 20 6f 6e 6c 79 20 77 6f 72 6b 20 69   can only work i
33b0: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 53 51  f the current SQ
33c0: 4c 69 74 65 20 56 46 53 20 68 61 73 20 74 68 65  Lite VFS has the
33d0: 20 63 6f 6e 63 65 70 74 0a 23 20 6f 66 20 61 20   concept.# of a 
33e0: 63 75 72 72 65 6e 74 20 64 69 72 65 63 74 6f 72  current director
33f0: 79 2e 0a 23 0a 69 66 63 61 70 61 62 6c 65 20 63  y..#.ifcapable c
3400: 75 72 64 69 72 20 7b 0a 23 20 4d 61 6b 65 20 73  urdir {.# Make s
3410: 75 72 65 20 61 20 64 61 74 61 62 61 73 65 20 63  ure a database c
3420: 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 69 6c 6c 20  onnection still 
3430: 77 6f 72 6b 73 20 61 66 74 65 72 20 63 68 61 6e  works after chan
3440: 67 69 6e 67 20 74 68 65 0a 23 20 77 6f 72 6b 69  ging the.# worki
3450: 6e 67 20 64 69 72 65 63 74 6f 72 79 2e 0a 23 0a  ng directory..#.
3460: 64 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d 31 34  do_test misc1-14
3470: 2e 31 20 7b 0a 20 20 66 69 6c 65 20 6d 6b 64 69  .1 {.  file mkdi
3480: 72 20 74 65 6d 70 64 69 72 0a 20 20 63 64 20 74  r tempdir.  cd t
3490: 65 6d 70 64 69 72 0a 20 20 65 78 65 63 73 71 6c  empdir.  execsql
34a0: 20 7b 42 45 47 49 4e 7d 0a 20 20 66 69 6c 65 20   {BEGIN}.  file 
34b0: 65 78 69 73 74 73 20 2e 2f 74 65 73 74 2e 64 62  exists ./test.db
34c0: 2d 6a 6f 75 72 6e 61 6c 0a 7d 20 7b 30 7d 0a 64  -journal.} {0}.d
34d0: 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d 31 34 2e  o_test misc1-14.
34e0: 32 61 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b  2a {.  execsql {
34f0: 55 50 44 41 54 45 20 74 31 20 53 45 54 20 61 3d  UPDATE t1 SET a=
3500: 61 7c 7c 27 78 27 20 57 48 45 52 45 20 30 7d 0a  a||'x' WHERE 0}.
3510: 20 20 66 69 6c 65 20 65 78 69 73 74 73 20 2e 2e    file exists ..
3520: 2f 74 65 73 74 2e 64 62 2d 6a 6f 75 72 6e 61 6c  /test.db-journal
3530: 0a 7d 20 7b 30 7d 0a 64 6f 5f 74 65 73 74 20 6d  .} {0}.do_test m
3540: 69 73 63 31 2d 31 34 2e 32 62 20 7b 0a 20 20 65  isc1-14.2b {.  e
3550: 78 65 63 73 71 6c 20 7b 55 50 44 41 54 45 20 74  xecsql {UPDATE t
3560: 31 20 53 45 54 20 61 3d 61 7c 7c 27 79 27 20 57  1 SET a=a||'y' W
3570: 48 45 52 45 20 31 7d 0a 20 20 66 69 6c 65 20 65  HERE 1}.  file e
3580: 78 69 73 74 73 20 2e 2e 2f 74 65 73 74 2e 64 62  xists ../test.db
3590: 2d 6a 6f 75 72 6e 61 6c 0a 7d 20 7b 31 7d 0a 64  -journal.} {1}.d
35a0: 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d 31 34 2e  o_test misc1-14.
35b0: 33 20 7b 0a 20 20 63 64 20 2e 2e 0a 20 20 66 6f  3 {.  cd ...  fo
35c0: 72 63 65 64 65 6c 65 74 65 20 74 65 6d 70 64 69  rcedelete tempdi
35d0: 72 0a 20 20 65 78 65 63 73 71 6c 20 7b 43 4f 4d  r.  execsql {COM
35e0: 4d 49 54 7d 0a 20 20 66 69 6c 65 20 65 78 69 73  MIT}.  file exis
35f0: 74 73 20 2e 2f 74 65 73 74 2e 64 62 2d 6a 6f 75  ts ./test.db-jou
3600: 72 6e 61 6c 0a 7d 20 7b 30 7d 0a 7d 0a 0a 23 20  rnal.} {0}.}..# 
3610: 41 20 66 61 69 6c 65 64 20 63 72 65 61 74 65 20  A failed create 
3620: 74 61 62 6c 65 20 73 68 6f 75 6c 64 20 6e 6f 74  table should not
3630: 20 6c 65 61 76 65 20 74 68 65 20 74 61 62 6c 65   leave the table
3640: 20 69 6e 20 74 68 65 20 69 6e 74 65 72 6e 61 6c   in the internal
3650: 0a 23 20 64 61 74 61 20 73 74 72 75 63 74 75 72  .# data structur
3660: 65 73 2e 20 20 54 69 63 6b 65 74 20 23 32 33 38  es.  Ticket #238
3670: 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 6d 69 73 63  ..#.do_test misc
3680: 31 2d 31 35 2e 31 2e 31 20 7b 0a 20 20 63 61 74  1-15.1.1 {.  cat
3690: 63 68 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41  chsql {.    CREA
36a0: 54 45 20 54 41 42 4c 45 20 74 31 30 20 41 53 20  TE TABLE t10 AS 
36b0: 53 45 4c 45 43 54 20 63 31 3b 0a 20 20 7d 0a 7d  SELECT c1;.  }.}
36c0: 20 7b 31 20 7b 6e 6f 20 73 75 63 68 20 63 6f 6c   {1 {no such col
36d0: 75 6d 6e 3a 20 63 31 7d 7d 0a 64 6f 5f 74 65 73  umn: c1}}.do_tes
36e0: 74 20 6d 69 73 63 31 2d 31 35 2e 31 2e 32 20 7b  t misc1-15.1.2 {
36f0: 0a 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20 20  .  catchsql {.  
3700: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
3710: 31 30 20 41 53 20 53 45 4c 45 43 54 20 74 39 2e  10 AS SELECT t9.
3720: 63 31 3b 0a 20 20 7d 0a 7d 20 7b 31 20 7b 6e 6f  c1;.  }.} {1 {no
3730: 20 73 75 63 68 20 63 6f 6c 75 6d 6e 3a 20 74 39   such column: t9
3740: 2e 63 31 7d 7d 0a 64 6f 5f 74 65 73 74 20 6d 69  .c1}}.do_test mi
3750: 73 63 31 2d 31 35 2e 31 2e 33 20 7b 0a 20 20 63  sc1-15.1.3 {.  c
3760: 61 74 63 68 73 71 6c 20 7b 0a 20 20 20 20 43 52  atchsql {.    CR
3770: 45 41 54 45 20 54 41 42 4c 45 20 74 31 30 20 41  EATE TABLE t10 A
3780: 53 20 53 45 4c 45 43 54 20 6d 61 69 6e 2e 74 39  S SELECT main.t9
3790: 2e 63 31 3b 0a 20 20 7d 0a 7d 20 7b 31 20 7b 6e  .c1;.  }.} {1 {n
37a0: 6f 20 73 75 63 68 20 63 6f 6c 75 6d 6e 3a 20 6d  o such column: m
37b0: 61 69 6e 2e 74 39 2e 63 31 7d 7d 0a 64 6f 5f 74  ain.t9.c1}}.do_t
37c0: 65 73 74 20 6d 69 73 63 31 2d 31 35 2e 32 20 7b  est misc1-15.2 {
37d0: 0a 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20 20  .  catchsql {.  
37e0: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
37f0: 31 30 20 41 53 20 53 45 4c 45 43 54 20 31 3b 0a  10 AS SELECT 1;.
3800: 20 20 7d 0a 20 20 23 20 54 68 65 20 62 75 67 20    }.  # The bug 
3810: 69 6e 20 74 69 63 6b 65 74 20 23 32 33 38 20 63  in ticket #238 c
3820: 61 75 73 65 73 20 74 68 65 20 73 74 61 74 65 6d  auses the statem
3830: 65 6e 74 20 61 62 6f 76 65 20 74 6f 20 66 61 69  ent above to fai
3840: 6c 20 77 69 74 68 0a 20 20 23 20 74 68 65 20 65  l with.  # the e
3850: 72 72 6f 72 20 22 74 61 62 6c 65 20 74 31 30 20  rror "table t10 
3860: 61 6c 72 65 61 64 20 65 78 69 73 74 73 22 0a 7d  alread exists".}
3870: 20 7b 30 20 7b 7d 7d 0a 0a 23 20 54 65 73 74 20   {0 {}}..# Test 
3880: 66 6f 72 20 6d 65 6d 6f 72 79 20 6c 65 61 6b 73  for memory leaks
3890: 20 77 68 65 6e 20 61 20 43 52 45 41 54 45 20 54   when a CREATE T
38a0: 41 42 4c 45 20 63 6f 6e 74 61 69 6e 69 6e 67 20  ABLE containing 
38b0: 61 20 70 72 69 6d 61 72 79 20 6b 65 79 0a 23 20  a primary key.# 
38c0: 66 61 69 6c 73 2e 20 20 54 69 63 6b 65 74 20 23  fails.  Ticket #
38d0: 32 34 39 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 6d  249..#.do_test m
38e0: 69 73 63 31 2d 31 36 2e 31 20 7b 0a 20 20 63 61  isc1-16.1 {.  ca
38f0: 74 63 68 73 71 6c 20 7b 53 45 4c 45 43 54 20 6e  tchsql {SELECT n
3900: 61 6d 65 20 46 52 4f 4d 20 73 71 6c 69 74 65 5f  ame FROM sqlite_
3910: 6d 61 73 74 65 72 20 4c 49 4d 49 54 20 31 7d 0a  master LIMIT 1}.
3920: 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20 20 20    catchsql {.   
3930: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 65   CREATE TABLE te
3940: 73 74 28 61 20 69 6e 74 65 67 65 72 2c 20 70 72  st(a integer, pr
3950: 69 6d 61 72 79 20 6b 65 79 28 61 29 29 3b 0a 20  imary key(a));. 
3960: 20 7d 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f 74   }.} {0 {}}.do_t
3970: 65 73 74 20 6d 69 73 63 31 2d 31 36 2e 32 20 7b  est misc1-16.2 {
3980: 0a 20 20 63 61 74 63 68 73 71 6c 20 7b 0a 20 20  .  catchsql {.  
3990: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
39a0: 65 73 74 28 61 20 69 6e 74 65 67 65 72 2c 20 70  est(a integer, p
39b0: 72 69 6d 61 72 79 20 6b 65 79 28 61 29 29 3b 0a  rimary key(a));.
39c0: 20 20 7d 0a 7d 20 7b 31 20 7b 74 61 62 6c 65 20    }.} {1 {table 
39d0: 74 65 73 74 20 61 6c 72 65 61 64 79 20 65 78 69  test already exi
39e0: 73 74 73 7d 7d 0a 64 6f 5f 74 65 73 74 20 6d 69  sts}}.do_test mi
39f0: 73 63 31 2d 31 36 2e 33 20 7b 0a 20 20 63 61 74  sc1-16.3 {.  cat
3a00: 63 68 73 71 6c 20 7b 0a 20 20 20 20 43 52 45 41  chsql {.    CREA
3a10: 54 45 20 54 41 42 4c 45 20 74 65 73 74 32 28 61  TE TABLE test2(a
3a20: 20 74 65 78 74 20 70 72 69 6d 61 72 79 20 6b 65   text primary ke
3a30: 79 2c 20 62 20 74 65 78 74 2c 20 70 72 69 6d 61  y, b text, prima
3a40: 72 79 20 6b 65 79 28 61 2c 62 29 29 3b 0a 20 20  ry key(a,b));.  
3a50: 7d 0a 7d 20 7b 31 20 7b 74 61 62 6c 65 20 22 74  }.} {1 {table "t
3a60: 65 73 74 32 22 20 68 61 73 20 6d 6f 72 65 20 74  est2" has more t
3a70: 68 61 6e 20 6f 6e 65 20 70 72 69 6d 61 72 79 20  han one primary 
3a80: 6b 65 79 7d 7d 0a 64 6f 5f 74 65 73 74 20 6d 69  key}}.do_test mi
3a90: 73 63 31 2d 31 36 2e 34 20 7b 0a 20 20 65 78 65  sc1-16.4 {.  exe
3aa0: 63 73 71 6c 20 7b 0a 20 20 20 20 49 4e 53 45 52  csql {.    INSER
3ab0: 54 20 49 4e 54 4f 20 74 65 73 74 20 56 41 4c 55  T INTO test VALU
3ac0: 45 53 28 31 29 3b 0a 20 20 20 20 53 45 4c 45 43  ES(1);.    SELEC
3ad0: 54 20 72 6f 77 69 64 2c 20 61 20 46 52 4f 4d 20  T rowid, a FROM 
3ae0: 74 65 73 74 3b 0a 20 20 7d 0a 7d 20 7b 31 20 31  test;.  }.} {1 1
3af0: 7d 0a 64 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d  }.do_test misc1-
3b00: 31 36 2e 35 20 7b 0a 20 20 65 78 65 63 73 71 6c  16.5 {.  execsql
3b10: 20 7b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e   {.    INSERT IN
3b20: 54 4f 20 74 65 73 74 20 56 41 4c 55 45 53 28 35  TO test VALUES(5
3b30: 29 3b 0a 20 20 20 20 53 45 4c 45 43 54 20 72 6f  );.    SELECT ro
3b40: 77 69 64 2c 20 61 20 46 52 4f 4d 20 74 65 73 74  wid, a FROM test
3b50: 3b 0a 20 20 7d 0a 7d 20 7b 31 20 31 20 35 20 35  ;.  }.} {1 1 5 5
3b60: 7d 0a 64 6f 5f 74 65 73 74 20 6d 69 73 63 31 2d  }.do_test misc1-
3b70: 31 36 2e 36 20 7b 0a 20 20 65 78 65 63 73 71 6c  16.6 {.  execsql
3b80: 20 7b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e   {.    INSERT IN
3b90: 54 4f 20 74 65 73 74 20 56 41 4c 55 45 53 28 4e  TO test VALUES(N
3ba0: 55 4c 4c 29 3b 0a 20 20 20 20 53 45 4c 45 43 54  ULL);.    SELECT
3bb0: 20 72 6f 77 69 64 2c 20 61 20 46 52 4f 4d 20 74   rowid, a FROM t
3bc0: 65 73 74 3b 0a 20 20 7d 0a 7d 20 7b 31 20 31 20  est;.  }.} {1 1 
3bd0: 35 20 35 20 36 20 36 7d 0a 0a 69 66 63 61 70 61  5 5 6 6}..ifcapa
3be0: 62 6c 65 20 74 72 69 67 67 65 72 26 26 74 65 6d  ble trigger&&tem
3bf0: 70 64 62 20 7b 0a 23 20 54 69 63 6b 65 74 20 23  pdb {.# Ticket #
3c00: 33 33 33 3a 20 54 65 6d 70 20 74 72 69 67 67 65  333: Temp trigge
3c10: 72 73 20 74 68 61 74 20 6d 6f 64 69 66 79 20 70  rs that modify p
3c20: 65 72 73 69 73 74 65 6e 74 20 74 61 62 6c 65 73  ersistent tables
3c30: 2e 0a 23 0a 64 6f 5f 74 65 73 74 20 6d 69 73 63  ..#.do_test misc
3c40: 31 2d 31 37 2e 31 20 7b 0a 20 20 65 78 65 63 73  1-17.1 {.  execs
3c50: 71 6c 20 7b 0a 20 20 20 20 42 45 47 49 4e 3b 0a  ql {.    BEGIN;.
3c60: 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45      CREATE TABLE
3c70: 20 52 65 61 6c 54 61 62 6c 65 28 54 65 73 74 49   RealTable(TestI
3c80: 44 20 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52  D INTEGER PRIMAR
3c90: 59 20 4b 45 59 2c 20 54 65 73 74 53 74 72 69 6e  Y KEY, TestStrin
3ca0: 67 20 54 45 58 54 29 3b 0a 20 20 20 20 43 52 45  g TEXT);.    CRE
3cb0: 41 54 45 20 54 45 4d 50 20 54 41 42 4c 45 20 54  ATE TEMP TABLE T
3cc0: 65 6d 70 54 61 62 6c 65 28 54 65 73 74 49 44 20  empTable(TestID 
3cd0: 49 4e 54 45 47 45 52 20 50 52 49 4d 41 52 59 20  INTEGER PRIMARY 
3ce0: 4b 45 59 2c 20 54 65 73 74 53 74 72 69 6e 67 20  KEY, TestString 
3cf0: 54 45 58 54 29 3b 0a 20 20 20 20 43 52 45 41 54  TEXT);.    CREAT
3d00: 45 20 54 45 4d 50 20 54 52 49 47 47 45 52 20 74  E TEMP TRIGGER t
3d10: 72 69 67 54 65 73 74 5f 31 20 41 46 54 45 52 20  rigTest_1 AFTER 
3d20: 55 50 44 41 54 45 20 4f 4e 20 54 65 6d 70 54 61  UPDATE ON TempTa
3d30: 62 6c 65 20 42 45 47 49 4e 0a 20 20 20 20 20 20  ble BEGIN.      
3d40: 49 4e 53 45 52 54 20 49 4e 54 4f 20 52 65 61 6c  INSERT INTO Real
3d50: 54 61 62 6c 65 28 54 65 73 74 53 74 72 69 6e 67  Table(TestString
3d60: 29 20 0a 20 20 20 20 20 20 20 20 20 53 45 4c 45  ) .         SELE
3d70: 43 54 20 6e 65 77 2e 54 65 73 74 53 74 72 69 6e  CT new.TestStrin
3d80: 67 20 46 52 4f 4d 20 54 65 6d 70 54 61 62 6c 65  g FROM TempTable
3d90: 20 4c 49 4d 49 54 20 31 3b 0a 20 20 20 20 45 4e   LIMIT 1;.    EN
3da0: 44 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  D;.    INSERT IN
3db0: 54 4f 20 54 65 6d 70 54 61 62 6c 65 28 54 65 73  TO TempTable(Tes
3dc0: 74 53 74 72 69 6e 67 29 20 56 41 4c 55 45 53 20  tString) VALUES 
3dd0: 28 27 31 27 29 3b 0a 20 20 20 20 49 4e 53 45 52  ('1');.    INSER
3de0: 54 20 49 4e 54 4f 20 54 65 6d 70 54 61 62 6c 65  T INTO TempTable
3df0: 28 54 65 73 74 53 74 72 69 6e 67 29 20 56 41 4c  (TestString) VAL
3e00: 55 45 53 20 28 27 32 27 29 3b 0a 20 20 20 20 55  UES ('2');.    U
3e10: 50 44 41 54 45 20 54 65 6d 70 54 61 62 6c 65 20  PDATE TempTable 
3e20: 53 45 54 20 54 65 73 74 53 74 72 69 6e 67 20 3d  SET TestString =
3e30: 20 54 65 73 74 53 74 72 69 6e 67 20 2b 20 31 20   TestString + 1 
3e40: 57 48 45 52 45 20 54 65 73 74 49 44 3d 31 20 4f  WHERE TestID=1 O
3e50: 52 20 54 65 73 74 49 64 3d 32 3b 0a 20 20 20 20  R TestId=2;.    
3e60: 43 4f 4d 4d 49 54 3b 0a 20 20 20 20 53 45 4c 45  COMMIT;.    SELE
3e70: 43 54 20 54 65 73 74 53 74 72 69 6e 67 20 46 52  CT TestString FR
3e80: 4f 4d 20 52 65 61 6c 54 61 62 6c 65 20 4f 52 44  OM RealTable ORD
3e90: 45 52 20 42 59 20 31 3b 0a 20 20 7d 0a 7d 20 7b  ER BY 1;.  }.} {
3ea0: 32 20 33 7d 0a 7d 0a 0a 64 6f 5f 74 65 73 74 20  2 3}.}..do_test 
3eb0: 6d 69 73 63 31 2d 31 38 2e 31 20 7b 0a 20 20 73  misc1-18.1 {.  s
3ec0: 65 74 20 6e 20 5b 73 71 6c 69 74 65 33 5f 73 6c  et n [sqlite3_sl
3ed0: 65 65 70 20 31 30 30 5d 0a 20 20 65 78 70 72 20  eep 100].  expr 
3ee0: 7b 24 6e 3e 3d 31 30 30 7d 0a 7d 20 7b 31 7d 0a  {$n>=100}.} {1}.
3ef0: 0a 23 20 32 30 31 34 2d 30 31 2d 31 30 3a 20 20  .# 2014-01-10:  
3f00: 49 6e 20 61 20 43 52 45 41 54 45 20 54 41 42 4c  In a CREATE TABL
3f10: 45 20 41 53 2c 20 69 66 20 6f 6e 65 20 6f 72 20  E AS, if one or 
3f20: 6d 6f 72 65 20 6f 66 20 74 68 65 20 63 6f 6c 75  more of the colu
3f30: 6d 6e 20 6e 61 6d 65 73 0a 23 20 61 72 65 20 61  mn names.# are a
3f40: 6e 20 65 6d 70 74 79 20 73 74 72 69 6e 67 2c 20  n empty string, 
3f50: 74 68 61 74 20 69 73 20 73 74 69 6c 6c 20 4f 4b  that is still OK
3f60: 2e 0a 23 0a 64 6f 5f 65 78 65 63 73 71 6c 5f 74  ..#.do_execsql_t
3f70: 65 73 74 20 6d 69 73 63 31 2d 31 39 2e 31 20 7b  est misc1-19.1 {
3f80: 0a 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20  .  CREATE TABLE 
3f90: 74 31 39 20 41 53 20 53 45 4c 45 43 54 20 31 2c  t19 AS SELECT 1,
3fa0: 20 32 20 41 53 20 27 27 2c 20 33 3b 0a 20 20 53   2 AS '', 3;.  S
3fb0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 39  ELECT * FROM t19
3fc0: 3b 0a 7d 20 7b 31 20 32 20 33 7d 0a 64 6f 5f 65  ;.} {1 2 3}.do_e
3fd0: 78 65 63 73 71 6c 5f 74 65 73 74 20 6d 69 73 63  xecsql_test misc
3fe0: 31 2d 31 39 2e 32 20 7b 0a 20 20 43 52 45 41 54  1-19.2 {.  CREAT
3ff0: 45 20 54 41 42 4c 45 20 74 31 39 62 20 41 53 20  E TABLE t19b AS 
4000: 53 45 4c 45 43 54 20 34 20 41 53 20 27 27 2c 20  SELECT 4 AS '', 
4010: 35 20 41 53 20 27 27 2c 20 20 36 20 41 53 20 27  5 AS '',  6 AS '
4020: 27 3b 0a 20 20 53 45 4c 45 43 54 20 2a 20 46 52  ';.  SELECT * FR
4030: 4f 4d 20 74 31 39 62 3b 0a 7d 20 7b 34 20 35 20  OM t19b;.} {4 5 
4040: 36 7d 0a 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74  6}...finish_test
4050: 0a                                               .