/ Hex Artifact Content
Login

Artifact 6cd35462394bdbf5928ad3f80f6fc43eab0be5ba:


0000: 23 20 32 30 30 33 20 53 65 70 74 65 6d 62 65 72  # 2003 September
0010: 20 36 0a 23 0a 23 20 54 68 65 20 61 75 74 68 6f   6.#.# The autho
0020: 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70 79  r disclaims copy
0030: 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73 6f  right to this so
0040: 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20 70  urce code.  In p
0050: 6c 61 63 65 20 6f 66 0a 23 20 61 20 6c 65 67 61  lace of.# a lega
0060: 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65 20 69  l notice, here i
0070: 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a 23 0a  s a blessing:.#.
0080: 23 20 20 20 20 4d 61 79 20 79 6f 75 20 64 6f 20  #    May you do 
0090: 67 6f 6f 64 20 61 6e 64 20 6e 6f 74 20 65 76 69  good and not evi
00a0: 6c 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20  l..#    May you 
00b0: 66 69 6e 64 20 66 6f 72 67 69 76 65 6e 65 73 73  find forgiveness
00c0: 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 61 6e   for yourself an
00d0: 64 20 66 6f 72 67 69 76 65 20 6f 74 68 65 72 73  d forgive others
00e0: 2e 0a 23 20 20 20 20 4d 61 79 20 79 6f 75 20 73  ..#    May you s
00f0: 68 61 72 65 20 66 72 65 65 6c 79 2c 20 6e 65 76  hare freely, nev
0100: 65 72 20 74 61 6b 69 6e 67 20 6d 6f 72 65 20 74  er taking more t
0110: 68 61 6e 20 79 6f 75 20 67 69 76 65 2e 0a 23 0a  han you give..#.
0120: 23 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  #***************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 0a 23 20 54 68 69 73 20  ********.# This 
0170: 66 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20  file implements 
0180: 72 65 67 72 65 73 73 69 6f 6e 20 74 65 73 74 73  regression tests
0190: 20 66 6f 72 20 53 51 4c 69 74 65 20 6c 69 62 72   for SQLite libr
01a0: 61 72 79 2e 20 20 54 68 65 0a 23 20 66 6f 63 75  ary.  The.# focu
01b0: 73 20 6f 66 20 74 68 69 73 20 73 63 72 69 70 74  s of this script
01c0: 20 74 65 73 74 69 6e 67 20 74 68 65 20 73 71 6c   testing the sql
01d0: 69 74 65 5f 62 69 6e 64 20 41 50 49 2e 0a 23 0a  ite_bind API..#.
01e0: 23 20 24 49 64 3a 20 62 69 6e 64 2e 74 65 73 74  # $Id: bind.test
01f0: 2c 76 20 31 2e 34 33 20 32 30 30 38 2f 30 37 2f  ,v 1.43 2008/07/
0200: 30 38 20 30 30 3a 30 36 3a 35 31 20 64 72 68 20  08 00:06:51 drh 
0210: 45 78 70 20 24 0a 23 0a 0a 73 65 74 20 74 65 73  Exp $.#..set tes
0220: 74 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61  tdir [file dirna
0230: 6d 65 20 24 61 72 67 76 30 5d 0a 73 6f 75 72 63  me $argv0].sourc
0240: 65 20 24 74 65 73 74 64 69 72 2f 74 65 73 74 65  e $testdir/teste
0250: 72 2e 74 63 6c 0a 0a 70 72 6f 63 20 73 71 6c 69  r.tcl..proc sqli
0260: 74 65 5f 73 74 65 70 20 7b 73 74 6d 74 20 4e 20  te_step {stmt N 
0270: 56 41 4c 53 20 43 4f 4c 53 7d 20 7b 0a 20 20 75  VALS COLS} {.  u
0280: 70 76 61 72 20 56 41 4c 53 20 76 61 6c 73 0a 20  pvar VALS vals. 
0290: 20 75 70 76 61 72 20 43 4f 4c 53 20 63 6f 6c 73   upvar COLS cols
02a0: 0a 20 20 73 65 74 20 76 61 6c 73 20 5b 6c 69 73  .  set vals [lis
02b0: 74 5d 0a 20 20 73 65 74 20 63 6f 6c 73 20 5b 6c  t].  set cols [l
02c0: 69 73 74 5d 0a 0a 20 20 73 65 74 20 72 63 20 5b  ist]..  set rc [
02d0: 73 71 6c 69 74 65 33 5f 73 74 65 70 20 24 73 74  sqlite3_step $st
02e0: 6d 74 5d 0a 20 20 66 6f 72 20 7b 73 65 74 20 69  mt].  for {set i
02f0: 20 30 7d 20 7b 24 69 20 3c 20 5b 73 71 6c 69 74   0} {$i < [sqlit
0300: 65 33 5f 63 6f 6c 75 6d 6e 5f 63 6f 75 6e 74 20  e3_column_count 
0310: 24 73 74 6d 74 5d 7d 20 7b 69 6e 63 72 20 69 7d  $stmt]} {incr i}
0320: 20 7b 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 63   {.    lappend c
0330: 6f 6c 73 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c  ols [sqlite3_col
0340: 75 6d 6e 5f 6e 61 6d 65 20 24 73 74 6d 74 20 24  umn_name $stmt $
0350: 69 5d 0a 20 20 7d 0a 20 20 66 6f 72 20 7b 73 65  i].  }.  for {se
0360: 74 20 69 20 30 7d 20 7b 24 69 20 3c 20 5b 73 71  t i 0} {$i < [sq
0370: 6c 69 74 65 33 5f 64 61 74 61 5f 63 6f 75 6e 74  lite3_data_count
0380: 20 24 73 74 6d 74 5d 7d 20 7b 69 6e 63 72 20 69   $stmt]} {incr i
0390: 7d 20 7b 0a 20 20 20 20 6c 61 70 70 65 6e 64 20  } {.    lappend 
03a0: 76 61 6c 73 20 5b 73 71 6c 69 74 65 33 5f 63 6f  vals [sqlite3_co
03b0: 6c 75 6d 6e 5f 74 65 78 74 20 24 73 74 6d 74 20  lumn_text $stmt 
03c0: 24 69 5d 0a 20 20 7d 0a 0a 20 20 72 65 74 75 72  $i].  }..  retur
03d0: 6e 20 24 72 63 0a 7d 0a 0a 64 6f 5f 74 65 73 74  n $rc.}..do_test
03e0: 20 62 69 6e 64 2d 31 2e 31 20 7b 0a 20 20 73 65   bind-1.1 {.  se
03f0: 74 20 44 42 20 5b 73 71 6c 69 74 65 33 5f 63 6f  t DB [sqlite3_co
0400: 6e 6e 65 63 74 69 6f 6e 5f 70 6f 69 6e 74 65 72  nnection_pointer
0410: 20 64 62 5d 0a 20 20 65 78 65 63 73 71 6c 20 7b   db].  execsql {
0420: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31 28  CREATE TABLE t1(
0430: 61 2c 62 2c 63 29 3b 7d 0a 20 20 73 65 74 20 56  a,b,c);}.  set V
0440: 4d 20 5b 73 71 6c 69 74 65 33 5f 70 72 65 70 61  M [sqlite3_prepa
0450: 72 65 20 24 44 42 20 7b 49 4e 53 45 52 54 20 49  re $DB {INSERT I
0460: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 3a 31  NTO t1 VALUES(:1
0470: 2c 3f 2c 3a 61 62 63 29 7d 20 2d 31 20 54 41 49  ,?,:abc)} -1 TAI
0480: 4c 5d 0a 20 20 73 65 74 20 54 41 49 4c 0a 7d 20  L].  set TAIL.} 
0490: 7b 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d  {}.do_test bind-
04a0: 31 2e 31 2e 31 20 7b 0a 20 20 73 71 6c 69 74 65  1.1.1 {.  sqlite
04b0: 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
04c0: 5f 63 6f 75 6e 74 20 24 56 4d 0a 7d 20 33 0a 64  _count $VM.} 3.d
04d0: 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 2e 31 2e  o_test bind-1.1.
04e0: 32 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 62 69  2 {.  sqlite3_bi
04f0: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d  nd_parameter_nam
0500: 65 20 24 56 4d 20 31 0a 7d 20 7b 3a 31 7d 0a 64  e $VM 1.} {:1}.d
0510: 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 2e 31 2e  o_test bind-1.1.
0520: 33 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 62 69  3 {.  sqlite3_bi
0530: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d  nd_parameter_nam
0540: 65 20 24 56 4d 20 32 0a 7d 20 7b 7d 0a 64 6f 5f  e $VM 2.} {}.do_
0550: 74 65 73 74 20 62 69 6e 64 2d 31 2e 31 2e 34 20  test bind-1.1.4 
0560: 7b 0a 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  {.  sqlite3_bind
0570: 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 20  _parameter_name 
0580: 24 56 4d 20 33 0a 7d 20 7b 3a 61 62 63 7d 0a 64  $VM 3.} {:abc}.d
0590: 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 2e 32 20  o_test bind-1.2 
05a0: 7b 0a 20 20 73 71 6c 69 74 65 5f 73 74 65 70 20  {.  sqlite_step 
05b0: 24 56 4d 20 4e 20 56 41 4c 55 45 53 20 43 4f 4c  $VM N VALUES COL
05c0: 4e 41 4d 45 53 0a 7d 20 7b 53 51 4c 49 54 45 5f  NAMES.} {SQLITE_
05d0: 44 4f 4e 45 7d 0a 64 6f 5f 74 65 73 74 20 62 69  DONE}.do_test bi
05e0: 6e 64 2d 31 2e 33 20 7b 0a 20 20 65 78 65 63 73  nd-1.3 {.  execs
05f0: 71 6c 20 7b 53 45 4c 45 43 54 20 72 6f 77 69 64  ql {SELECT rowid
0600: 2c 20 2a 20 46 52 4f 4d 20 74 31 7d 0a 7d 20 7b  , * FROM t1}.} {
0610: 31 20 7b 7d 20 7b 7d 20 7b 7d 7d 0a 64 6f 5f 74  1 {} {} {}}.do_t
0620: 65 73 74 20 62 69 6e 64 2d 31 2e 34 20 7b 0a 20  est bind-1.4 {. 
0630: 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 20 24   sqlite3_reset $
0640: 56 4d 0a 20 20 73 71 6c 69 74 65 5f 62 69 6e 64  VM.  sqlite_bind
0650: 20 24 56 4d 20 31 20 7b 74 65 73 74 20 76 61 6c   $VM 1 {test val
0660: 75 65 20 31 7d 20 6e 6f 72 6d 61 6c 0a 20 20 73  ue 1} normal.  s
0670: 71 6c 69 74 65 5f 73 74 65 70 20 24 56 4d 20 4e  qlite_step $VM N
0680: 20 56 41 4c 55 45 53 20 43 4f 4c 4e 41 4d 45 53   VALUES COLNAMES
0690: 0a 7d 20 53 51 4c 49 54 45 5f 44 4f 4e 45 0a 64  .} SQLITE_DONE.d
06a0: 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 2e 35 20  o_test bind-1.5 
06b0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c  {.  execsql {SEL
06c0: 45 43 54 20 72 6f 77 69 64 2c 20 2a 20 46 52 4f  ECT rowid, * FRO
06d0: 4d 20 74 31 7d 0a 7d 20 7b 31 20 7b 7d 20 7b 7d  M t1}.} {1 {} {}
06e0: 20 7b 7d 20 32 20 7b 74 65 73 74 20 76 61 6c 75   {} 2 {test valu
06f0: 65 20 31 7d 20 7b 7d 20 7b 7d 7d 0a 64 6f 5f 74  e 1} {} {}}.do_t
0700: 65 73 74 20 62 69 6e 64 2d 31 2e 36 20 7b 0a 20  est bind-1.6 {. 
0710: 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 20 24   sqlite3_reset $
0720: 56 4d 0a 20 20 73 71 6c 69 74 65 5f 62 69 6e 64  VM.  sqlite_bind
0730: 20 24 56 4d 20 33 20 7b 27 74 65 73 74 20 76 61   $VM 3 {'test va
0740: 6c 75 65 20 32 27 7d 20 6e 6f 72 6d 61 6c 0a 20  lue 2'} normal. 
0750: 20 73 71 6c 69 74 65 5f 73 74 65 70 20 24 56 4d   sqlite_step $VM
0760: 20 4e 20 56 41 4c 55 45 53 20 43 4f 4c 4e 41 4d   N VALUES COLNAM
0770: 45 53 0a 7d 20 53 51 4c 49 54 45 5f 44 4f 4e 45  ES.} SQLITE_DONE
0780: 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 2e  .do_test bind-1.
0790: 37 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53  7 {.  execsql {S
07a0: 45 4c 45 43 54 20 72 6f 77 69 64 2c 20 2a 20 46  ELECT rowid, * F
07b0: 52 4f 4d 20 74 31 7d 0a 7d 20 7b 31 20 7b 7d 20  ROM t1}.} {1 {} 
07c0: 7b 7d 20 7b 7d 20 32 20 7b 74 65 73 74 20 76 61  {} {} 2 {test va
07d0: 6c 75 65 20 31 7d 20 7b 7d 20 7b 7d 20 33 20 7b  lue 1} {} {} 3 {
07e0: 74 65 73 74 20 76 61 6c 75 65 20 31 7d 20 7b 7d  test value 1} {}
07f0: 20 7b 27 74 65 73 74 20 76 61 6c 75 65 20 32 27   {'test value 2'
0800: 7d 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d  }}.do_test bind-
0810: 31 2e 38 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f  1.8 {.  sqlite3_
0820: 72 65 73 65 74 20 24 56 4d 0a 20 20 73 65 74 20  reset $VM.  set 
0830: 73 71 6c 69 74 65 5f 73 74 61 74 69 63 5f 62 69  sqlite_static_bi
0840: 6e 64 5f 76 61 6c 75 65 20 31 32 33 0a 20 20 73  nd_value 123.  s
0850: 71 6c 69 74 65 5f 62 69 6e 64 20 24 56 4d 20 31  qlite_bind $VM 1
0860: 20 7b 7d 20 73 74 61 74 69 63 0a 20 20 73 71 6c   {} static.  sql
0870: 69 74 65 5f 62 69 6e 64 20 24 56 4d 20 32 20 7b  ite_bind $VM 2 {
0880: 61 62 63 64 65 66 67 7d 20 6e 6f 72 6d 61 6c 0a  abcdefg} normal.
0890: 20 20 73 71 6c 69 74 65 5f 62 69 6e 64 20 24 56    sqlite_bind $V
08a0: 4d 20 33 20 7b 7d 20 6e 75 6c 6c 0a 20 20 65 78  M 3 {} null.  ex
08b0: 65 63 73 71 6c 20 7b 44 45 4c 45 54 45 20 46 52  ecsql {DELETE FR
08c0: 4f 4d 20 74 31 7d 0a 20 20 73 71 6c 69 74 65 5f  OM t1}.  sqlite_
08d0: 73 74 65 70 20 24 56 4d 20 4e 20 56 41 4c 55 45  step $VM N VALUE
08e0: 53 20 43 4f 4c 4e 41 4d 45 53 0a 20 20 65 78 65  S COLNAMES.  exe
08f0: 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 72 6f 77  csql {SELECT row
0900: 69 64 2c 20 2a 20 46 52 4f 4d 20 74 31 7d 0a 7d  id, * FROM t1}.}
0910: 20 7b 31 20 31 32 33 20 61 62 63 64 65 66 67 20   {1 123 abcdefg 
0920: 7b 7d 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64  {}}.do_test bind
0930: 2d 31 2e 39 20 7b 0a 20 20 73 71 6c 69 74 65 33  -1.9 {.  sqlite3
0940: 5f 72 65 73 65 74 20 24 56 4d 0a 20 20 73 71 6c  _reset $VM.  sql
0950: 69 74 65 5f 62 69 6e 64 20 24 56 4d 20 31 20 7b  ite_bind $VM 1 {
0960: 34 35 36 7d 20 6e 6f 72 6d 61 6c 0a 20 20 73 71  456} normal.  sq
0970: 6c 69 74 65 5f 73 74 65 70 20 24 56 4d 20 4e 20  lite_step $VM N 
0980: 56 41 4c 55 45 53 20 43 4f 4c 4e 41 4d 45 53 0a  VALUES COLNAMES.
0990: 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43    execsql {SELEC
09a0: 54 20 72 6f 77 69 64 2c 20 2a 20 46 52 4f 4d 20  T rowid, * FROM 
09b0: 74 31 7d 0a 7d 20 7b 31 20 31 32 33 20 61 62 63  t1}.} {1 123 abc
09c0: 64 65 66 67 20 7b 7d 20 32 20 34 35 36 20 61 62  defg {} 2 456 ab
09d0: 63 64 65 66 67 20 7b 7d 7d 0a 0a 64 6f 5f 74 65  cdefg {}}..do_te
09e0: 73 74 20 62 69 6e 64 2d 31 2e 31 30 20 7b 0a 20  st bind-1.10 {. 
09f0: 20 20 73 65 74 20 72 63 20 5b 63 61 74 63 68 20    set rc [catch 
0a00: 7b 0a 20 20 20 20 20 73 71 6c 69 74 65 33 5f 70  {.     sqlite3_p
0a10: 72 65 70 61 72 65 20 64 62 20 7b 49 4e 53 45 52  repare db {INSER
0a20: 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53  T INTO t1 VALUES
0a30: 28 24 61 62 63 3a 31 32 33 2c 3f 2c 3a 61 62 63  ($abc:123,?,:abc
0a40: 29 7d 20 2d 31 20 54 41 49 4c 0a 20 20 20 7d 20  )} -1 TAIL.   } 
0a50: 6d 73 67 5d 0a 20 20 20 6c 61 70 70 65 6e 64 20  msg].   lappend 
0a60: 72 63 20 24 6d 73 67 0a 7d 20 7b 31 20 7b 28 31  rc $msg.} {1 {(1
0a70: 29 20 6e 65 61 72 20 22 3a 31 32 33 22 3a 20 73  ) near ":123": s
0a80: 79 6e 74 61 78 20 65 72 72 6f 72 7d 7d 0a 64 6f  yntax error}}.do
0a90: 5f 74 65 73 74 20 62 69 6e 64 2d 31 2e 31 31 20  _test bind-1.11 
0aa0: 7b 0a 20 20 20 73 65 74 20 72 63 20 5b 63 61 74  {.   set rc [cat
0ab0: 63 68 20 7b 0a 20 20 20 20 20 73 71 6c 69 74 65  ch {.     sqlite
0ac0: 33 5f 70 72 65 70 61 72 65 20 64 62 20 7b 49 4e  3_prepare db {IN
0ad0: 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56 41 4c  SERT INTO t1 VAL
0ae0: 55 45 53 28 40 61 62 63 3a 78 79 7a 2c 3f 2c 3a  UES(@abc:xyz,?,:
0af0: 61 62 63 29 7d 20 2d 31 20 54 41 49 4c 0a 20 20  abc)} -1 TAIL.  
0b00: 20 7d 20 6d 73 67 5d 0a 20 20 20 6c 61 70 70 65   } msg].   lappe
0b10: 6e 64 20 72 63 20 24 6d 73 67 0a 7d 20 7b 31 20  nd rc $msg.} {1 
0b20: 7b 28 31 29 20 6e 65 61 72 20 22 3a 78 79 7a 22  {(1) near ":xyz"
0b30: 3a 20 73 79 6e 74 61 78 20 65 72 72 6f 72 7d 7d  : syntax error}}
0b40: 0a 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31  ..do_test bind-1
0b50: 2e 39 39 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f  .99 {.  sqlite3_
0b60: 66 69 6e 61 6c 69 7a 65 20 24 56 4d 0a 7d 20 53  finalize $VM.} S
0b70: 51 4c 49 54 45 5f 4f 4b 0a 0a 23 20 50 72 65 70  QLITE_OK..# Prep
0b80: 61 72 65 20 74 68 65 20 73 74 61 74 65 6d 65 6e  are the statemen
0b90: 74 20 69 6e 20 64 69 66 66 65 72 65 6e 74 20 77  t in different w
0ba0: 61 79 73 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e  ays depending on
0bb0: 20 77 68 65 74 68 65 72 20 6f 72 20 6e 6f 74 0a   whether or not.
0bc0: 23 20 74 68 65 20 24 76 61 72 20 70 72 6f 63 65  # the $var proce
0bd0: 73 73 69 6e 67 20 69 73 20 63 6f 6d 70 69 6c 65  ssing is compile
0be0: 64 20 69 6e 74 6f 20 74 68 65 20 6c 69 62 72 61  d into the libra
0bf0: 72 79 2e 0a 23 0a 69 66 63 61 70 61 62 6c 65 20  ry..#.ifcapable 
0c00: 7b 74 63 6c 76 61 72 7d 20 7b 0a 20 20 64 6f 5f  {tclvar} {.  do_
0c10: 74 65 73 74 20 62 69 6e 64 2d 32 2e 31 20 7b 0a  test bind-2.1 {.
0c20: 20 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20      execsql {.  
0c30: 20 20 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20      DELETE FROM 
0c40: 74 31 3b 0a 20 20 20 20 7d 0a 20 20 20 20 73 65  t1;.    }.    se
0c50: 74 20 56 4d 20 5b 73 71 6c 69 74 65 33 5f 70 72  t VM [sqlite3_pr
0c60: 65 70 61 72 65 20 24 44 42 20 7b 49 4e 53 45 52  epare $DB {INSER
0c70: 54 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53  T INTO t1 VALUES
0c80: 28 24 6f 6e 65 2c 24 3a 3a 74 77 6f 2c 24 78 28  ($one,$::two,$x(
0c90: 2d 7a 2d 29 29 7d 5c 0a 20 20 20 20 20 20 20 20  -z-))}\.        
0ca0: 20 20 20 20 2d 31 20 54 58 5d 0a 20 20 20 20 73      -1 TX].    s
0cb0: 65 74 20 54 58 0a 20 20 7d 20 7b 7d 0a 20 20 73  et TX.  } {}.  s
0cc0: 65 74 20 76 31 20 7b 24 6f 6e 65 7d 0a 20 20 73  et v1 {$one}.  s
0cd0: 65 74 20 76 32 20 7b 24 3a 3a 74 77 6f 7d 0a 20  et v2 {$::two}. 
0ce0: 20 73 65 74 20 76 33 20 7b 24 78 28 2d 7a 2d 29   set v3 {$x(-z-)
0cf0: 7d 0a 7d 0a 69 66 63 61 70 61 62 6c 65 20 7b 21  }.}.ifcapable {!
0d00: 74 63 6c 76 61 72 7d 20 7b 0a 20 20 64 6f 5f 74  tclvar} {.  do_t
0d10: 65 73 74 20 62 69 6e 64 2d 32 2e 31 20 7b 0a 20  est bind-2.1 {. 
0d20: 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20     execsql {.   
0d30: 20 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 74     DELETE FROM t
0d40: 31 3b 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74  1;.    }.    set
0d50: 20 56 4d 20 5b 73 71 6c 69 74 65 33 5f 70 72 65   VM [sqlite3_pre
0d60: 70 61 72 65 20 24 44 42 20 7b 49 4e 53 45 52 54  pare $DB {INSERT
0d70: 20 49 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28   INTO t1 VALUES(
0d80: 3a 6f 6e 65 2c 3a 74 77 6f 2c 3a 5f 29 7d 20 2d  :one,:two,:_)} -
0d90: 31 20 54 58 5d 0a 20 20 20 20 73 65 74 20 54 58  1 TX].    set TX
0da0: 0a 20 20 7d 20 7b 7d 0a 20 20 73 65 74 20 76 31  .  } {}.  set v1
0db0: 20 7b 3a 6f 6e 65 7d 0a 20 20 73 65 74 20 76 32   {:one}.  set v2
0dc0: 20 7b 3a 74 77 6f 7d 0a 20 20 73 65 74 20 76 33   {:two}.  set v3
0dd0: 20 7b 3a 5f 7d 0a 7d 0a 0a 64 6f 5f 74 65 73 74   {:_}.}..do_test
0de0: 20 62 69 6e 64 2d 32 2e 31 2e 31 20 7b 0a 20 20   bind-2.1.1 {.  
0df0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
0e00: 61 6d 65 74 65 72 5f 63 6f 75 6e 74 20 24 56 4d  ameter_count $VM
0e10: 0a 7d 20 33 0a 64 6f 5f 74 65 73 74 20 62 69 6e  .} 3.do_test bin
0e20: 64 2d 32 2e 31 2e 32 20 7b 0a 20 20 73 71 6c 69  d-2.1.2 {.  sqli
0e30: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
0e40: 65 72 5f 6e 61 6d 65 20 24 56 4d 20 31 0a 7d 20  er_name $VM 1.} 
0e50: 24 76 31 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64  $v1.do_test bind
0e60: 2d 32 2e 31 2e 33 20 7b 0a 20 20 73 71 6c 69 74  -2.1.3 {.  sqlit
0e70: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
0e80: 72 5f 6e 61 6d 65 20 24 56 4d 20 32 0a 7d 20 24  r_name $VM 2.} $
0e90: 76 32 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d  v2.do_test bind-
0ea0: 32 2e 31 2e 34 20 7b 0a 20 20 73 71 6c 69 74 65  2.1.4 {.  sqlite
0eb0: 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
0ec0: 5f 6e 61 6d 65 20 24 56 4d 20 33 0a 7d 20 24 76  _name $VM 3.} $v
0ed0: 33 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 32  3.do_test bind-2
0ee0: 2e 31 2e 35 20 7b 0a 20 20 73 71 6c 69 74 65 33  .1.5 {.  sqlite3
0ef0: 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
0f00: 69 6e 64 65 78 20 24 56 4d 20 24 76 31 0a 7d 20  index $VM $v1.} 
0f10: 31 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 32  1.do_test bind-2
0f20: 2e 31 2e 36 20 7b 0a 20 20 73 71 6c 69 74 65 33  .1.6 {.  sqlite3
0f30: 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
0f40: 69 6e 64 65 78 20 24 56 4d 20 24 76 32 0a 7d 20  index $VM $v2.} 
0f50: 32 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 32  2.do_test bind-2
0f60: 2e 31 2e 37 20 7b 0a 20 20 73 71 6c 69 74 65 33  .1.7 {.  sqlite3
0f70: 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
0f80: 69 6e 64 65 78 20 24 56 4d 20 24 76 33 0a 7d 20  index $VM $v3.} 
0f90: 33 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 32  3.do_test bind-2
0fa0: 2e 31 2e 38 20 7b 0a 20 20 73 71 6c 69 74 65 33  .1.8 {.  sqlite3
0fb0: 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
0fc0: 69 6e 64 65 78 20 24 56 4d 20 7b 3a 68 69 7d 0a  index $VM {:hi}.
0fd0: 7d 20 30 0a 0a 23 20 33 32 20 62 69 74 20 49 6e  } 0..# 32 bit In
0fe0: 74 65 67 65 72 73 0a 64 6f 5f 74 65 73 74 20 62  tegers.do_test b
0ff0: 69 6e 64 2d 32 2e 32 20 7b 0a 20 20 73 71 6c 69  ind-2.2 {.  sqli
1000: 74 65 33 5f 62 69 6e 64 5f 69 6e 74 20 24 56 4d  te3_bind_int $VM
1010: 20 31 20 31 32 33 0a 20 20 73 71 6c 69 74 65 33   1 123.  sqlite3
1020: 5f 62 69 6e 64 5f 69 6e 74 20 24 56 4d 20 32 20  _bind_int $VM 2 
1030: 34 35 36 0a 20 20 73 71 6c 69 74 65 33 5f 62 69  456.  sqlite3_bi
1040: 6e 64 5f 69 6e 74 20 24 56 4d 20 33 20 37 38 39  nd_int $VM 3 789
1050: 0a 20 20 73 71 6c 69 74 65 5f 73 74 65 70 20 24  .  sqlite_step $
1060: 56 4d 20 4e 20 56 41 4c 55 45 53 20 43 4f 4c 4e  VM N VALUES COLN
1070: 41 4d 45 53 0a 20 20 73 71 6c 69 74 65 33 5f 72  AMES.  sqlite3_r
1080: 65 73 65 74 20 24 56 4d 0a 20 20 65 78 65 63 73  eset $VM.  execs
1090: 71 6c 20 7b 53 45 4c 45 43 54 20 72 6f 77 69 64  ql {SELECT rowid
10a0: 2c 20 2a 20 46 52 4f 4d 20 74 31 7d 0a 7d 20 7b  , * FROM t1}.} {
10b0: 31 20 31 32 33 20 34 35 36 20 37 38 39 7d 0a 64  1 123 456 789}.d
10c0: 6f 5f 74 65 73 74 20 62 69 6e 64 2d 32 2e 33 20  o_test bind-2.3 
10d0: 7b 0a 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  {.  sqlite3_bind
10e0: 5f 69 6e 74 20 24 56 4d 20 32 20 2d 32 30 30 30  _int $VM 2 -2000
10f0: 30 30 30 30 30 30 0a 20 20 73 71 6c 69 74 65 33  000000.  sqlite3
1100: 5f 62 69 6e 64 5f 69 6e 74 20 24 56 4d 20 33 20  _bind_int $VM 3 
1110: 32 30 30 30 30 30 30 30 30 30 0a 20 20 73 71 6c  2000000000.  sql
1120: 69 74 65 5f 73 74 65 70 20 24 56 4d 20 4e 20 56  ite_step $VM N V
1130: 41 4c 55 45 53 20 43 4f 4c 4e 41 4d 45 53 0a 20  ALUES COLNAMES. 
1140: 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 20 24   sqlite3_reset $
1150: 56 4d 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45  VM.  execsql {SE
1160: 4c 45 43 54 20 72 6f 77 69 64 2c 20 2a 20 46 52  LECT rowid, * FR
1170: 4f 4d 20 74 31 7d 0a 7d 20 7b 31 20 31 32 33 20  OM t1}.} {1 123 
1180: 34 35 36 20 37 38 39 20 32 20 31 32 33 20 2d 32  456 789 2 123 -2
1190: 30 30 30 30 30 30 30 30 30 20 32 30 30 30 30 30  000000000 200000
11a0: 30 30 30 30 7d 0a 64 6f 5f 74 65 73 74 20 62 69  0000}.do_test bi
11b0: 6e 64 2d 32 2e 34 20 7b 0a 20 20 65 78 65 63 73  nd-2.4 {.  execs
11c0: 71 6c 20 7b 53 45 4c 45 43 54 20 74 79 70 65 6f  ql {SELECT typeo
11d0: 66 28 61 29 2c 20 74 79 70 65 6f 66 28 62 29 2c  f(a), typeof(b),
11e0: 20 74 79 70 65 6f 66 28 63 29 20 46 52 4f 4d 20   typeof(c) FROM 
11f0: 74 31 7d 0a 7d 20 7b 69 6e 74 65 67 65 72 20 69  t1}.} {integer i
1200: 6e 74 65 67 65 72 20 69 6e 74 65 67 65 72 20 69  nteger integer i
1210: 6e 74 65 67 65 72 20 69 6e 74 65 67 65 72 20 69  nteger integer i
1220: 6e 74 65 67 65 72 7d 0a 64 6f 5f 74 65 73 74 20  nteger}.do_test 
1230: 62 69 6e 64 2d 32 2e 35 20 7b 0a 20 20 65 78 65  bind-2.5 {.  exe
1240: 63 73 71 6c 20 7b 0a 20 20 20 20 44 45 4c 45 54  csql {.    DELET
1250: 45 20 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a 7d  E FROM t1;.  }.}
1260: 20 7b 7d 0a 0a 23 20 36 34 20 62 69 74 20 49 6e   {}..# 64 bit In
1270: 74 65 67 65 72 73 0a 64 6f 5f 74 65 73 74 20 62  tegers.do_test b
1280: 69 6e 64 2d 33 2e 31 20 7b 0a 20 20 73 71 6c 69  ind-3.1 {.  sqli
1290: 74 65 33 5f 62 69 6e 64 5f 69 6e 74 36 34 20 24  te3_bind_int64 $
12a0: 56 4d 20 31 20 33 32 0a 20 20 73 71 6c 69 74 65  VM 1 32.  sqlite
12b0: 33 5f 62 69 6e 64 5f 69 6e 74 36 34 20 24 56 4d  3_bind_int64 $VM
12c0: 20 32 20 2d 32 30 30 30 30 30 30 30 30 30 30 30   2 -200000000000
12d0: 30 0a 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  0.  sqlite3_bind
12e0: 5f 69 6e 74 36 34 20 24 56 4d 20 33 20 32 30 30  _int64 $VM 3 200
12f0: 30 30 30 30 30 30 30 30 30 30 0a 20 20 73 71 6c  0000000000.  sql
1300: 69 74 65 5f 73 74 65 70 20 24 56 4d 20 4e 20 56  ite_step $VM N V
1310: 41 4c 55 45 53 20 43 4f 4c 4e 41 4d 45 53 0a 20  ALUES COLNAMES. 
1320: 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 20 24   sqlite3_reset $
1330: 56 4d 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45  VM.  execsql {SE
1340: 4c 45 43 54 20 72 6f 77 69 64 2c 20 2a 20 46 52  LECT rowid, * FR
1350: 4f 4d 20 74 31 7d 0a 7d 20 7b 31 20 33 32 20 2d  OM t1}.} {1 32 -
1360: 32 30 30 30 30 30 30 30 30 30 30 30 30 20 32 30  2000000000000 20
1370: 30 30 30 30 30 30 30 30 30 30 30 7d 0a 64 6f 5f  00000000000}.do_
1380: 74 65 73 74 20 62 69 6e 64 2d 33 2e 32 20 7b 0a  test bind-3.2 {.
1390: 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43    execsql {SELEC
13a0: 54 20 74 79 70 65 6f 66 28 61 29 2c 20 74 79 70  T typeof(a), typ
13b0: 65 6f 66 28 62 29 2c 20 74 79 70 65 6f 66 28 63  eof(b), typeof(c
13c0: 29 20 46 52 4f 4d 20 74 31 7d 0a 7d 20 7b 69 6e  ) FROM t1}.} {in
13d0: 74 65 67 65 72 20 69 6e 74 65 67 65 72 20 69 6e  teger integer in
13e0: 74 65 67 65 72 7d 0a 64 6f 5f 74 65 73 74 20 62  teger}.do_test b
13f0: 69 6e 64 2d 33 2e 33 20 7b 0a 20 20 65 78 65 63  ind-3.3 {.  exec
1400: 73 71 6c 20 7b 0a 20 20 20 20 44 45 4c 45 54 45  sql {.    DELETE
1410: 20 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a 7d 20   FROM t1;.  }.} 
1420: 7b 7d 0a 0a 23 20 44 6f 75 62 6c 65 73 0a 64 6f  {}..# Doubles.do
1430: 5f 74 65 73 74 20 62 69 6e 64 2d 34 2e 31 20 7b  _test bind-4.1 {
1440: 0a 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  .  sqlite3_bind_
1450: 64 6f 75 62 6c 65 20 24 56 4d 20 31 20 31 32 33  double $VM 1 123
1460: 34 2e 31 32 33 34 0a 20 20 73 71 6c 69 74 65 33  4.1234.  sqlite3
1470: 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 20 24 56 4d  _bind_double $VM
1480: 20 32 20 30 2e 30 30 30 30 31 0a 20 20 73 71 6c   2 0.00001.  sql
1490: 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65  ite3_bind_double
14a0: 20 24 56 4d 20 33 20 31 32 33 34 35 36 37 38 39   $VM 3 123456789
14b0: 0a 20 20 73 71 6c 69 74 65 5f 73 74 65 70 20 24  .  sqlite_step $
14c0: 56 4d 20 4e 20 56 41 4c 55 45 53 20 43 4f 4c 4e  VM N VALUES COLN
14d0: 41 4d 45 53 0a 20 20 73 71 6c 69 74 65 33 5f 72  AMES.  sqlite3_r
14e0: 65 73 65 74 20 24 56 4d 0a 20 20 73 65 74 20 78  eset $VM.  set x
14f0: 20 5b 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43   [execsql {SELEC
1500: 54 20 72 6f 77 69 64 2c 20 2a 20 46 52 4f 4d 20  T rowid, * FROM 
1510: 74 31 7d 5d 0a 20 20 72 65 67 73 75 62 20 7b 31  t1}].  regsub {1
1520: 65 2d 30 30 35 7d 20 24 78 20 7b 31 65 2d 30 35  e-005} $x {1e-05
1530: 7d 20 79 0a 20 20 73 65 74 20 79 0a 7d 20 7b 31  } y.  set y.} {1
1540: 20 31 32 33 34 2e 31 32 33 34 20 31 65 2d 30 35   1234.1234 1e-05
1550: 20 31 32 33 34 35 36 37 38 39 2e 30 7d 0a 64 6f   123456789.0}.do
1560: 5f 74 65 73 74 20 62 69 6e 64 2d 34 2e 32 20 7b  _test bind-4.2 {
1570: 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45  .  execsql {SELE
1580: 43 54 20 74 79 70 65 6f 66 28 61 29 2c 20 74 79  CT typeof(a), ty
1590: 70 65 6f 66 28 62 29 2c 20 74 79 70 65 6f 66 28  peof(b), typeof(
15a0: 63 29 20 46 52 4f 4d 20 74 31 7d 0a 7d 20 7b 72  c) FROM t1}.} {r
15b0: 65 61 6c 20 72 65 61 6c 20 72 65 61 6c 7d 0a 64  eal real real}.d
15c0: 6f 5f 74 65 73 74 20 62 69 6e 64 2d 34 2e 33 20  o_test bind-4.3 
15d0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20  {.  execsql {.  
15e0: 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31    DELETE FROM t1
15f0: 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 64 6f 5f 74 65  ;.  }.} {}.do_te
1600: 73 74 20 62 69 6e 64 2d 34 2e 34 20 7b 0a 20 20  st bind-4.4 {.  
1610: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75  sqlite3_bind_dou
1620: 62 6c 65 20 24 56 4d 20 31 20 4e 61 4e 0a 20 20  ble $VM 1 NaN.  
1630: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75  sqlite3_bind_dou
1640: 62 6c 65 20 24 56 4d 20 32 20 31 65 33 30 30 0a  ble $VM 2 1e300.
1650: 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64    sqlite3_bind_d
1660: 6f 75 62 6c 65 20 24 56 4d 20 33 20 2d 31 65 2d  ouble $VM 3 -1e-
1670: 33 30 30 0a 20 20 73 71 6c 69 74 65 5f 73 74 65  300.  sqlite_ste
1680: 70 20 24 56 4d 20 4e 20 56 41 4c 55 45 53 20 43  p $VM N VALUES C
1690: 4f 4c 4e 41 4d 45 53 0a 20 20 73 71 6c 69 74 65  OLNAMES.  sqlite
16a0: 33 5f 72 65 73 65 74 20 24 56 4d 0a 20 20 73 65  3_reset $VM.  se
16b0: 74 20 78 20 5b 65 78 65 63 73 71 6c 20 7b 53 45  t x [execsql {SE
16c0: 4c 45 43 54 20 72 6f 77 69 64 2c 20 2a 20 46 52  LECT rowid, * FR
16d0: 4f 4d 20 74 31 7d 5d 0a 20 20 72 65 67 73 75 62  OM t1}].  regsub
16e0: 20 7b 31 65 2d 30 30 35 7d 20 24 78 20 7b 31 65   {1e-005} $x {1e
16f0: 2d 30 35 7d 20 79 0a 20 20 73 65 74 20 79 0a 7d  -05} y.  set y.}
1700: 20 7b 31 20 7b 7d 20 31 65 2b 33 30 30 20 2d 31   {1 {} 1e+300 -1
1710: 65 2d 33 30 30 7d 0a 64 6f 5f 74 65 73 74 20 62  e-300}.do_test b
1720: 69 6e 64 2d 34 2e 35 20 7b 0a 20 20 65 78 65 63  ind-4.5 {.  exec
1730: 73 71 6c 20 7b 53 45 4c 45 43 54 20 74 79 70 65  sql {SELECT type
1740: 6f 66 28 61 29 2c 20 74 79 70 65 6f 66 28 62 29  of(a), typeof(b)
1750: 2c 20 74 79 70 65 6f 66 28 63 29 20 46 52 4f 4d  , typeof(c) FROM
1760: 20 74 31 7d 0a 7d 20 7b 6e 75 6c 6c 20 72 65 61   t1}.} {null rea
1770: 6c 20 72 65 61 6c 7d 0a 64 6f 5f 74 65 73 74 20  l real}.do_test 
1780: 62 69 6e 64 2d 34 2e 36 20 7b 0a 20 20 65 78 65  bind-4.6 {.  exe
1790: 63 73 71 6c 20 7b 0a 20 20 20 20 44 45 4c 45 54  csql {.    DELET
17a0: 45 20 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a 7d  E FROM t1;.  }.}
17b0: 20 7b 7d 0a 0a 23 20 4e 55 4c 4c 0a 64 6f 5f 74   {}..# NULL.do_t
17c0: 65 73 74 20 62 69 6e 64 2d 35 2e 31 20 7b 0a 20  est bind-5.1 {. 
17d0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75   sqlite3_bind_nu
17e0: 6c 6c 20 24 56 4d 20 31 0a 20 20 73 71 6c 69 74  ll $VM 1.  sqlit
17f0: 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c 20 24 56 4d  e3_bind_null $VM
1800: 20 32 0a 20 20 73 71 6c 69 74 65 33 5f 62 69 6e   2.  sqlite3_bin
1810: 64 5f 6e 75 6c 6c 20 24 56 4d 20 33 20 0a 20 20  d_null $VM 3 .  
1820: 73 71 6c 69 74 65 5f 73 74 65 70 20 24 56 4d 20  sqlite_step $VM 
1830: 4e 20 56 41 4c 55 45 53 20 43 4f 4c 4e 41 4d 45  N VALUES COLNAME
1840: 53 0a 20 20 73 71 6c 69 74 65 33 5f 72 65 73 65  S.  sqlite3_rese
1850: 74 20 24 56 4d 0a 20 20 65 78 65 63 73 71 6c 20  t $VM.  execsql 
1860: 7b 53 45 4c 45 43 54 20 72 6f 77 69 64 2c 20 2a  {SELECT rowid, *
1870: 20 46 52 4f 4d 20 74 31 7d 0a 7d 20 7b 31 20 7b   FROM t1}.} {1 {
1880: 7d 20 7b 7d 20 7b 7d 7d 0a 64 6f 5f 74 65 73 74  } {} {}}.do_test
1890: 20 62 69 6e 64 2d 35 2e 32 20 7b 0a 20 20 65 78   bind-5.2 {.  ex
18a0: 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 74 79  ecsql {SELECT ty
18b0: 70 65 6f 66 28 61 29 2c 20 74 79 70 65 6f 66 28  peof(a), typeof(
18c0: 62 29 2c 20 74 79 70 65 6f 66 28 63 29 20 46 52  b), typeof(c) FR
18d0: 4f 4d 20 74 31 7d 0a 7d 20 7b 6e 75 6c 6c 20 6e  OM t1}.} {null n
18e0: 75 6c 6c 20 6e 75 6c 6c 7d 0a 64 6f 5f 74 65 73  ull null}.do_tes
18f0: 74 20 62 69 6e 64 2d 35 2e 33 20 7b 0a 20 20 65  t bind-5.3 {.  e
1900: 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 44 45 4c  xecsql {.    DEL
1910: 45 54 45 20 46 52 4f 4d 20 74 31 3b 0a 20 20 7d  ETE FROM t1;.  }
1920: 0a 7d 20 7b 7d 0a 0a 23 20 55 54 46 2d 38 20 74  .} {}..# UTF-8 t
1930: 65 78 74 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64  ext.do_test bind
1940: 2d 36 2e 31 20 7b 0a 20 20 73 71 6c 69 74 65 33  -6.1 {.  sqlite3
1950: 5f 62 69 6e 64 5f 74 65 78 74 20 24 56 4d 20 31  _bind_text $VM 1
1960: 20 68 65 6c 6c 6f 74 68 65 72 65 20 35 0a 20 20   hellothere 5.  
1970: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78  sqlite3_bind_tex
1980: 74 20 24 56 4d 20 32 20 22 2e 2e 22 20 31 0a 20  t $VM 2 ".." 1. 
1990: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65   sqlite3_bind_te
19a0: 78 74 20 24 56 4d 20 33 20 77 6f 72 6c 64 5c 30  xt $VM 3 world\0
19b0: 30 30 20 2d 31 0a 20 20 73 71 6c 69 74 65 5f 73  00 -1.  sqlite_s
19c0: 74 65 70 20 24 56 4d 20 4e 20 56 41 4c 55 45 53  tep $VM N VALUES
19d0: 20 43 4f 4c 4e 41 4d 45 53 0a 20 20 73 71 6c 69   COLNAMES.  sqli
19e0: 74 65 33 5f 72 65 73 65 74 20 24 56 4d 0a 20 20  te3_reset $VM.  
19f0: 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20  execsql {SELECT 
1a00: 72 6f 77 69 64 2c 20 2a 20 46 52 4f 4d 20 74 31  rowid, * FROM t1
1a10: 7d 0a 7d 20 7b 31 20 68 65 6c 6c 6f 20 2e 20 77  }.} {1 hello . w
1a20: 6f 72 6c 64 7d 0a 64 6f 5f 74 65 73 74 20 62 69  orld}.do_test bi
1a30: 6e 64 2d 36 2e 32 20 7b 0a 20 20 65 78 65 63 73  nd-6.2 {.  execs
1a40: 71 6c 20 7b 53 45 4c 45 43 54 20 74 79 70 65 6f  ql {SELECT typeo
1a50: 66 28 61 29 2c 20 74 79 70 65 6f 66 28 62 29 2c  f(a), typeof(b),
1a60: 20 74 79 70 65 6f 66 28 63 29 20 46 52 4f 4d 20   typeof(c) FROM 
1a70: 74 31 7d 0a 7d 20 7b 74 65 78 74 20 74 65 78 74  t1}.} {text text
1a80: 20 74 65 78 74 7d 0a 64 6f 5f 74 65 73 74 20 62   text}.do_test b
1a90: 69 6e 64 2d 36 2e 33 20 7b 0a 20 20 65 78 65 63  ind-6.3 {.  exec
1aa0: 73 71 6c 20 7b 0a 20 20 20 20 44 45 4c 45 54 45  sql {.    DELETE
1ab0: 20 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a 7d 20   FROM t1;.  }.} 
1ac0: 7b 7d 0a 0a 23 20 4d 61 6b 65 20 73 75 72 65 20  {}..# Make sure 
1ad0: 7a 65 72 6f 73 20 69 6e 20 61 20 73 74 72 69 6e  zeros in a strin
1ae0: 67 20 77 6f 72 6b 2e 0a 23 0a 64 6f 5f 74 65 73  g work..#.do_tes
1af0: 74 20 62 69 6e 64 2d 36 2e 34 20 7b 0a 20 20 64  t bind-6.4 {.  d
1b00: 62 20 65 76 61 6c 20 7b 44 45 4c 45 54 45 20 46  b eval {DELETE F
1b10: 52 4f 4d 20 74 31 7d 0a 20 20 73 71 6c 69 74 65  ROM t1}.  sqlite
1b20: 33 5f 62 69 6e 64 5f 74 65 78 74 20 24 56 4d 20  3_bind_text $VM 
1b30: 31 20 68 65 6c 6c 6f 5c 30 30 30 74 68 65 72 65  1 hello\000there
1b40: 5c 30 30 30 20 31 32 0a 20 20 73 71 6c 69 74 65  \000 12.  sqlite
1b50: 33 5f 62 69 6e 64 5f 74 65 78 74 20 24 56 4d 20  3_bind_text $VM 
1b60: 32 20 68 65 6c 6c 6f 5c 30 30 30 74 68 65 72 65  2 hello\000there
1b70: 5c 30 30 30 20 31 31 0a 20 20 73 71 6c 69 74 65  \000 11.  sqlite
1b80: 33 5f 62 69 6e 64 5f 74 65 78 74 20 24 56 4d 20  3_bind_text $VM 
1b90: 33 20 68 65 6c 6c 6f 5c 30 30 30 74 68 65 72 65  3 hello\000there
1ba0: 5c 30 30 30 20 2d 31 0a 20 20 73 71 6c 69 74 65  \000 -1.  sqlite
1bb0: 5f 73 74 65 70 20 24 56 4d 20 4e 20 56 41 4c 55  _step $VM N VALU
1bc0: 45 53 20 43 4f 4c 4e 41 4d 45 53 0a 20 20 73 71  ES COLNAMES.  sq
1bd0: 6c 69 74 65 33 5f 72 65 73 65 74 20 24 56 4d 0a  lite3_reset $VM.
1be0: 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43    execsql {SELEC
1bf0: 54 20 2a 20 46 52 4f 4d 20 74 31 7d 0a 7d 20 7b  T * FROM t1}.} {
1c00: 68 65 6c 6c 6f 20 68 65 6c 6c 6f 20 68 65 6c 6c  hello hello hell
1c10: 6f 7d 0a 73 65 74 20 65 6e 63 20 5b 64 62 20 65  o}.set enc [db e
1c20: 76 61 6c 20 7b 50 52 41 47 4d 41 20 65 6e 63 6f  val {PRAGMA enco
1c30: 64 69 6e 67 7d 5d 0a 69 66 20 7b 24 65 6e 63 3d  ding}].if {$enc=
1c40: 3d 22 55 54 46 2d 38 22 7d 20 7b 0a 20 20 64 6f  ="UTF-8"} {.  do
1c50: 5f 74 65 73 74 20 62 69 6e 64 2d 36 2e 35 20 7b  _test bind-6.5 {
1c60: 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 53 45  .    execsql {SE
1c70: 4c 45 43 54 20 20 68 65 78 28 61 29 2c 20 68 65  LECT  hex(a), he
1c80: 78 28 62 29 2c 20 68 65 78 28 63 29 20 46 52 4f  x(b), hex(c) FRO
1c90: 4d 20 74 31 7d 0a 20 20 7d 20 7b 36 38 36 35 36  M t1}.  } {68656
1ca0: 43 36 43 36 46 30 30 37 34 36 38 36 35 37 32 36  C6C6F00746865726
1cb0: 35 30 30 20 36 38 36 35 36 43 36 43 36 46 30 30  500 68656C6C6F00
1cc0: 37 34 36 38 36 35 37 32 36 35 20 36 38 36 35 36  7468657265 68656
1cd0: 43 36 43 36 46 7d 0a 7d 20 65 6c 73 65 69 66 20  C6C6F}.} elseif 
1ce0: 7b 24 65 6e 63 3d 3d 22 55 54 46 2d 31 36 6c 65  {$enc=="UTF-16le
1cf0: 22 7d 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 62  "} {.  do_test b
1d00: 69 6e 64 2d 36 2e 35 20 7b 0a 20 20 20 20 65 78  ind-6.5 {.    ex
1d10: 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 20 68  ecsql {SELECT  h
1d20: 65 78 28 61 29 2c 20 68 65 78 28 62 29 2c 20 68  ex(a), hex(b), h
1d30: 65 78 28 63 29 20 46 52 4f 4d 20 74 31 7d 0a 20  ex(c) FROM t1}. 
1d40: 20 7d 20 7b 36 38 30 30 36 35 30 30 36 43 30 30   } {680065006C00
1d50: 36 43 30 30 36 46 30 30 30 30 30 30 37 34 30 30  6C006F0000007400
1d60: 36 38 30 30 36 35 30 30 37 32 30 30 36 35 30 30  6800650072006500
1d70: 30 30 30 30 20 36 38 30 30 36 35 30 30 36 43 30  0000 680065006C0
1d80: 30 36 43 30 30 36 46 30 30 30 30 30 30 37 34 30  06C006F000000740
1d90: 30 36 38 30 30 36 35 30 30 37 32 30 30 36 35 30  0680065007200650
1da0: 30 20 36 38 30 30 36 35 30 30 36 43 30 30 36 43  0 680065006C006C
1db0: 30 30 36 46 30 30 7d 0a 7d 20 65 6c 73 65 69 66  006F00}.} elseif
1dc0: 20 7b 24 65 6e 63 3d 3d 22 55 54 46 2d 31 36 62   {$enc=="UTF-16b
1dd0: 65 22 7d 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20  e"} {.  do_test 
1de0: 62 69 6e 64 2d 36 2e 35 20 7b 0a 20 20 20 20 65  bind-6.5 {.    e
1df0: 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 20  xecsql {SELECT  
1e00: 68 65 78 28 61 29 2c 20 68 65 78 28 62 29 2c 20  hex(a), hex(b), 
1e10: 68 65 78 28 63 29 20 46 52 4f 4d 20 74 31 7d 0a  hex(c) FROM t1}.
1e20: 20 20 7d 20 7b 30 30 36 38 30 30 36 35 30 30 36    } {00680065006
1e30: 43 30 30 36 43 30 30 36 46 30 30 30 30 30 30 37  C006C006F0000007
1e40: 34 30 30 36 38 30 30 36 35 30 30 37 32 30 30 36  4006800650072006
1e50: 35 30 30 30 30 20 30 30 36 38 30 30 36 35 30 30  50000 0068006500
1e60: 36 43 30 30 36 43 30 30 36 46 30 30 30 30 30 30  6C006C006F000000
1e70: 37 34 30 30 36 38 30 30 36 35 30 30 37 32 30 30  7400680065007200
1e80: 36 35 20 30 30 36 38 30 30 36 35 30 30 36 43 30  65 00680065006C0
1e90: 30 36 43 30 30 36 46 7d 0a 7d 20 65 6c 73 65 20  06C006F}.} else 
1ea0: 7b 0a 20 20 64 6f 5f 74 65 73 74 20 62 69 6e 64  {.  do_test bind
1eb0: 2d 36 2e 35 20 7b 0a 20 20 20 20 73 65 74 20 22  -6.5 {.    set "
1ec0: 55 6e 6b 6e 6f 77 6e 20 64 61 74 61 62 61 73 65  Unknown database
1ed0: 20 65 6e 63 6f 64 69 6e 67 3a 20 24 3a 3a 65 6e   encoding: $::en
1ee0: 63 22 0a 20 20 7d 20 7b 7d 0a 7d 0a 64 6f 5f 74  c".  } {}.}.do_t
1ef0: 65 73 74 20 62 69 6e 64 2d 36 2e 36 20 7b 0a 20  est bind-6.6 {. 
1f00: 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54   execsql {SELECT
1f10: 20 74 79 70 65 6f 66 28 61 29 2c 20 74 79 70 65   typeof(a), type
1f20: 6f 66 28 62 29 2c 20 74 79 70 65 6f 66 28 63 29  of(b), typeof(c)
1f30: 20 46 52 4f 4d 20 74 31 7d 0a 7d 20 7b 74 65 78   FROM t1}.} {tex
1f40: 74 20 74 65 78 74 20 74 65 78 74 7d 0a 64 6f 5f  t text text}.do_
1f50: 74 65 73 74 20 62 69 6e 64 2d 36 2e 37 20 7b 0a  test bind-6.7 {.
1f60: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
1f70: 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 3b 0a  DELETE FROM t1;.
1f80: 20 20 7d 0a 7d 20 7b 7d 0a 0a 23 20 55 54 46 2d    }.} {}..# UTF-
1f90: 31 36 20 74 65 78 74 0a 69 66 63 61 70 61 62 6c  16 text.ifcapabl
1fa0: 65 20 7b 75 74 66 31 36 7d 20 7b 0a 20 20 64 6f  e {utf16} {.  do
1fb0: 5f 74 65 73 74 20 62 69 6e 64 2d 37 2e 31 20 7b  _test bind-7.1 {
1fc0: 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 62 69 6e  .    sqlite3_bin
1fd0: 64 5f 74 65 78 74 31 36 20 24 56 4d 20 31 20 5b  d_text16 $VM 1 [
1fe0: 65 6e 63 6f 64 69 6e 67 20 63 6f 6e 76 65 72 74  encoding convert
1ff0: 74 6f 20 75 6e 69 63 6f 64 65 20 68 65 6c 6c 6f  to unicode hello
2000: 74 68 65 72 65 5d 20 31 30 0a 20 20 20 20 73 71  there] 10.    sq
2010: 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
2020: 36 20 24 56 4d 20 32 20 5b 65 6e 63 6f 64 69 6e  6 $VM 2 [encodin
2030: 67 20 63 6f 6e 76 65 72 74 74 6f 20 75 6e 69 63  g convertto unic
2040: 6f 64 65 20 22 22 5d 20 30 0a 20 20 20 20 73 71  ode ""] 0.    sq
2050: 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
2060: 36 20 24 56 4d 20 33 20 5b 65 6e 63 6f 64 69 6e  6 $VM 3 [encodin
2070: 67 20 63 6f 6e 76 65 72 74 74 6f 20 75 6e 69 63  g convertto unic
2080: 6f 64 65 20 77 6f 72 6c 64 5d 20 31 30 0a 20 20  ode world] 10.  
2090: 20 20 73 71 6c 69 74 65 5f 73 74 65 70 20 24 56    sqlite_step $V
20a0: 4d 20 4e 20 56 41 4c 55 45 53 20 43 4f 4c 4e 41  M N VALUES COLNA
20b0: 4d 45 53 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  MES.    sqlite3_
20c0: 72 65 73 65 74 20 24 56 4d 0a 20 20 20 20 65 78  reset $VM.    ex
20d0: 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 72 6f  ecsql {SELECT ro
20e0: 77 69 64 2c 20 2a 20 46 52 4f 4d 20 74 31 7d 0a  wid, * FROM t1}.
20f0: 20 20 7d 20 7b 31 20 68 65 6c 6c 6f 20 7b 7d 20    } {1 hello {} 
2100: 77 6f 72 6c 64 7d 0a 20 20 64 6f 5f 74 65 73 74  world}.  do_test
2110: 20 62 69 6e 64 2d 37 2e 32 20 7b 0a 20 20 20 20   bind-7.2 {.    
2120: 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20  execsql {SELECT 
2130: 74 79 70 65 6f 66 28 61 29 2c 20 74 79 70 65 6f  typeof(a), typeo
2140: 66 28 62 29 2c 20 74 79 70 65 6f 66 28 63 29 20  f(b), typeof(c) 
2150: 46 52 4f 4d 20 74 31 7d 0a 20 20 7d 20 7b 74 65  FROM t1}.  } {te
2160: 78 74 20 74 65 78 74 20 74 65 78 74 7d 0a 20 20  xt text text}.  
2170: 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 37 2e 33  do_test bind-7.3
2180: 20 7b 0a 20 20 20 20 64 62 20 65 76 61 6c 20 7b   {.    db eval {
2190: 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 7d 0a  DELETE FROM t1}.
21a0: 20 20 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64      sqlite3_bind
21b0: 5f 74 65 78 74 31 36 20 24 56 4d 20 31 20 5b 65  _text16 $VM 1 [e
21c0: 6e 63 6f 64 69 6e 67 20 63 6f 6e 76 65 72 74 74  ncoding convertt
21d0: 6f 20 75 6e 69 63 6f 64 65 20 68 69 5c 30 30 30  o unicode hi\000
21e0: 79 61 6c 6c 5c 30 30 30 5d 20 31 36 0a 20 20 20  yall\000] 16.   
21f0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65   sqlite3_bind_te
2200: 78 74 31 36 20 24 56 4d 20 32 20 5b 65 6e 63 6f  xt16 $VM 2 [enco
2210: 64 69 6e 67 20 63 6f 6e 76 65 72 74 74 6f 20 75  ding convertto u
2220: 6e 69 63 6f 64 65 20 68 69 5c 30 30 30 79 61 6c  nicode hi\000yal
2230: 6c 5c 30 30 30 5d 20 31 34 0a 20 20 20 20 73 71  l\000] 14.    sq
2240: 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 31  lite3_bind_text1
2250: 36 20 24 56 4d 20 33 20 5b 65 6e 63 6f 64 69 6e  6 $VM 3 [encodin
2260: 67 20 63 6f 6e 76 65 72 74 74 6f 20 75 6e 69 63  g convertto unic
2270: 6f 64 65 20 68 69 5c 30 30 30 79 61 6c 6c 5c 30  ode hi\000yall\0
2280: 30 30 5d 20 2d 31 0a 20 20 20 20 73 71 6c 69 74  00] -1.    sqlit
2290: 65 5f 73 74 65 70 20 24 56 4d 20 4e 20 56 41 4c  e_step $VM N VAL
22a0: 55 45 53 20 43 4f 4c 4e 41 4d 45 53 0a 20 20 20  UES COLNAMES.   
22b0: 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 20 24   sqlite3_reset $
22c0: 56 4d 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b  VM.    execsql {
22d0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
22e0: 7d 0a 20 20 7d 20 7b 68 69 20 68 69 20 68 69 7d  }.  } {hi hi hi}
22f0: 0a 20 20 69 66 20 7b 24 65 6e 63 3d 3d 22 55 54  .  if {$enc=="UT
2300: 46 2d 38 22 7d 20 7b 0a 20 20 20 20 64 6f 5f 74  F-8"} {.    do_t
2310: 65 73 74 20 62 69 6e 64 2d 37 2e 34 20 7b 0a 20  est bind-7.4 {. 
2320: 20 20 20 20 20 65 78 65 63 73 71 6c 20 7b 53 45       execsql {SE
2330: 4c 45 43 54 20 68 65 78 28 61 29 2c 20 68 65 78  LECT hex(a), hex
2340: 28 62 29 2c 20 68 65 78 28 63 29 20 46 52 4f 4d  (b), hex(c) FROM
2350: 20 74 31 7d 0a 20 20 20 20 7d 20 7b 36 38 36 39   t1}.    } {6869
2360: 30 30 37 39 36 31 36 43 36 43 30 30 20 36 38 36  0079616C6C00 686
2370: 39 30 30 37 39 36 31 36 43 36 43 20 36 38 36 39  90079616C6C 6869
2380: 7d 0a 20 20 7d 20 65 6c 73 65 69 66 20 7b 24 65  }.  } elseif {$e
2390: 6e 63 3d 3d 22 55 54 46 2d 31 36 6c 65 22 7d 20  nc=="UTF-16le"} 
23a0: 7b 0a 20 20 20 20 64 6f 5f 74 65 73 74 20 62 69  {.    do_test bi
23b0: 6e 64 2d 37 2e 34 20 7b 0a 20 20 20 20 20 20 65  nd-7.4 {.      e
23c0: 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 68  xecsql {SELECT h
23d0: 65 78 28 61 29 2c 20 68 65 78 28 62 29 2c 20 68  ex(a), hex(b), h
23e0: 65 78 28 63 29 20 46 52 4f 4d 20 74 31 7d 0a 20  ex(c) FROM t1}. 
23f0: 20 20 20 7d 20 7b 36 38 30 30 36 39 30 30 30 30     } {6800690000
2400: 30 30 37 39 30 30 36 31 30 30 36 43 30 30 36 43  00790061006C006C
2410: 30 30 30 30 30 30 20 36 38 30 30 36 39 30 30 30  000000 680069000
2420: 30 30 30 37 39 30 30 36 31 30 30 36 43 30 30 36  000790061006C006
2430: 43 30 30 20 36 38 30 30 36 39 30 30 7d 0a 20 20  C00 68006900}.  
2440: 7d 20 65 6c 73 65 69 66 20 7b 24 65 6e 63 3d 3d  } elseif {$enc==
2450: 22 55 54 46 2d 31 36 62 65 22 7d 20 7b 0a 20 20  "UTF-16be"} {.  
2460: 20 20 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 37    do_test bind-7
2470: 2e 34 20 7b 0a 20 20 20 20 20 20 65 78 65 63 73  .4 {.      execs
2480: 71 6c 20 7b 53 45 4c 45 43 54 20 68 65 78 28 61  ql {SELECT hex(a
2490: 29 2c 20 68 65 78 28 62 29 2c 20 68 65 78 28 63  ), hex(b), hex(c
24a0: 29 20 46 52 4f 4d 20 74 31 7d 0a 20 20 20 20 7d  ) FROM t1}.    }
24b0: 20 7b 30 30 36 38 30 30 36 39 30 30 30 30 30 30   {00680069000000
24c0: 37 39 30 30 36 31 30 30 36 43 30 30 36 43 30 30  790061006C006C00
24d0: 30 30 20 30 30 36 38 30 30 36 39 30 30 30 30 30  00 0068006900000
24e0: 30 37 39 30 30 36 31 30 30 36 43 30 30 36 43 20  0790061006C006C 
24f0: 30 30 36 38 30 30 36 39 7d 0a 20 20 7d 0a 20 20  00680069}.  }.  
2500: 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 37 2e 35  do_test bind-7.5
2510: 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b   {.    execsql {
2520: 53 45 4c 45 43 54 20 74 79 70 65 6f 66 28 61 29  SELECT typeof(a)
2530: 2c 20 74 79 70 65 6f 66 28 62 29 2c 20 74 79 70  , typeof(b), typ
2540: 65 6f 66 28 63 29 20 46 52 4f 4d 20 74 31 7d 0a  eof(c) FROM t1}.
2550: 20 20 7d 20 7b 74 65 78 74 20 74 65 78 74 20 74    } {text text t
2560: 65 78 74 7d 0a 7d 0a 64 6f 5f 74 65 73 74 20 62  ext}.}.do_test b
2570: 69 6e 64 2d 37 2e 39 39 20 7b 0a 20 20 65 78 65  ind-7.99 {.  exe
2580: 63 73 71 6c 20 7b 44 45 4c 45 54 45 20 46 52 4f  csql {DELETE FRO
2590: 4d 20 74 31 3b 7d 0a 7d 20 7b 7d 0a 0a 23 20 54  M t1;}.} {}..# T
25a0: 65 73 74 20 74 68 61 74 20 74 68 65 20 27 6f 75  est that the 'ou
25b0: 74 20 6f 66 20 72 61 6e 67 65 27 20 65 72 72 6f  t of range' erro
25c0: 72 20 77 6f 72 6b 73 2e 0a 64 6f 5f 74 65 73 74  r works..do_test
25d0: 20 62 69 6e 64 2d 38 2e 31 20 7b 0a 20 20 63 61   bind-8.1 {.  ca
25e0: 74 63 68 20 7b 20 73 71 6c 69 74 65 33 5f 62 69  tch { sqlite3_bi
25f0: 6e 64 5f 6e 75 6c 6c 20 24 56 4d 20 30 20 7d 0a  nd_null $VM 0 }.
2600: 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 62 69  } {1}.do_test bi
2610: 6e 64 2d 38 2e 32 20 7b 0a 20 20 73 71 6c 69 74  nd-8.2 {.  sqlit
2620: 65 33 5f 65 72 72 6d 73 67 20 24 44 42 0a 7d 20  e3_errmsg $DB.} 
2630: 7b 62 69 6e 64 20 6f 72 20 63 6f 6c 75 6d 6e 20  {bind or column 
2640: 69 6e 64 65 78 20 6f 75 74 20 6f 66 20 72 61 6e  index out of ran
2650: 67 65 7d 0a 69 66 63 61 70 61 62 6c 65 20 7b 75  ge}.ifcapable {u
2660: 74 66 31 36 7d 20 7b 0a 20 20 64 6f 5f 74 65 73  tf16} {.  do_tes
2670: 74 20 62 69 6e 64 2d 38 2e 33 20 7b 0a 20 20 20  t bind-8.3 {.   
2680: 20 65 6e 63 6f 64 69 6e 67 20 63 6f 6e 76 65 72   encoding conver
2690: 74 66 72 6f 6d 20 75 6e 69 63 6f 64 65 20 5b 73  tfrom unicode [s
26a0: 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 31 36 20  qlite3_errmsg16 
26b0: 24 44 42 5d 0a 20 20 7d 20 7b 62 69 6e 64 20 6f  $DB].  } {bind o
26c0: 72 20 63 6f 6c 75 6d 6e 20 69 6e 64 65 78 20 6f  r column index o
26d0: 75 74 20 6f 66 20 72 61 6e 67 65 7d 0a 7d 0a 64  ut of range}.}.d
26e0: 6f 5f 74 65 73 74 20 62 69 6e 64 2d 38 2e 34 20  o_test bind-8.4 
26f0: 7b 0a 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  {.  sqlite3_bind
2700: 5f 6e 75 6c 6c 20 24 56 4d 20 31 20 0a 20 20 73  _null $VM 1 .  s
2710: 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 20 24 44  qlite3_errmsg $D
2720: 42 0a 7d 20 7b 6e 6f 74 20 61 6e 20 65 72 72 6f  B.} {not an erro
2730: 72 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d  r}.do_test bind-
2740: 38 2e 35 20 7b 0a 20 20 63 61 74 63 68 20 7b 20  8.5 {.  catch { 
2750: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c  sqlite3_bind_nul
2760: 6c 20 24 56 4d 20 34 20 7d 0a 7d 20 7b 31 7d 0a  l $VM 4 }.} {1}.
2770: 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 38 2e 36  do_test bind-8.6
2780: 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 65 72 72   {.  sqlite3_err
2790: 6d 73 67 20 24 44 42 0a 7d 20 7b 62 69 6e 64 20  msg $DB.} {bind 
27a0: 6f 72 20 63 6f 6c 75 6d 6e 20 69 6e 64 65 78 20  or column index 
27b0: 6f 75 74 20 6f 66 20 72 61 6e 67 65 7d 0a 69 66  out of range}.if
27c0: 63 61 70 61 62 6c 65 20 7b 75 74 66 31 36 7d 20  capable {utf16} 
27d0: 7b 0a 20 20 64 6f 5f 74 65 73 74 20 62 69 6e 64  {.  do_test bind
27e0: 2d 38 2e 37 20 7b 0a 20 20 20 20 65 6e 63 6f 64  -8.7 {.    encod
27f0: 69 6e 67 20 63 6f 6e 76 65 72 74 66 72 6f 6d 20  ing convertfrom 
2800: 75 6e 69 63 6f 64 65 20 5b 73 71 6c 69 74 65 33  unicode [sqlite3
2810: 5f 65 72 72 6d 73 67 31 36 20 24 44 42 5d 0a 20  _errmsg16 $DB]. 
2820: 20 7d 20 7b 62 69 6e 64 20 6f 72 20 63 6f 6c 75   } {bind or colu
2830: 6d 6e 20 69 6e 64 65 78 20 6f 75 74 20 6f 66 20  mn index out of 
2840: 72 61 6e 67 65 7d 0a 7d 0a 0a 64 6f 5f 74 65 73  range}.}..do_tes
2850: 74 20 62 69 6e 64 2d 38 2e 38 20 7b 0a 20 20 63  t bind-8.8 {.  c
2860: 61 74 63 68 20 7b 20 73 71 6c 69 74 65 33 5f 62  atch { sqlite3_b
2870: 69 6e 64 5f 62 6c 6f 62 20 24 56 4d 20 30 20 22  ind_blob $VM 0 "
2880: 61 62 63 22 20 33 20 7d 0a 7d 20 7b 31 7d 0a 64  abc" 3 }.} {1}.d
2890: 6f 5f 74 65 73 74 20 62 69 6e 64 2d 38 2e 39 20  o_test bind-8.9 
28a0: 7b 0a 20 20 63 61 74 63 68 20 7b 20 73 71 6c 69  {.  catch { sqli
28b0: 74 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 20 24 56  te3_bind_blob $V
28c0: 4d 20 34 20 22 61 62 63 22 20 33 20 7d 0a 7d 20  M 4 "abc" 3 }.} 
28d0: 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64  {1}.do_test bind
28e0: 2d 38 2e 31 30 20 7b 0a 20 20 63 61 74 63 68 20  -8.10 {.  catch 
28f0: 7b 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74  { sqlite3_bind_t
2900: 65 78 74 20 24 56 4d 20 30 20 22 61 62 63 22 20  ext $VM 0 "abc" 
2910: 33 20 7d 0a 7d 20 7b 31 7d 0a 69 66 63 61 70 61  3 }.} {1}.ifcapa
2920: 62 6c 65 20 7b 75 74 66 31 36 7d 20 7b 0a 20 20  ble {utf16} {.  
2930: 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 38 2e 31  do_test bind-8.1
2940: 31 20 7b 0a 20 20 20 20 63 61 74 63 68 20 7b 20  1 {.    catch { 
2950: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78  sqlite3_bind_tex
2960: 74 31 36 20 24 56 4d 20 34 20 22 61 62 63 22 20  t16 $VM 4 "abc" 
2970: 32 20 7d 0a 20 20 7d 20 7b 31 7d 0a 7d 0a 64 6f  2 }.  } {1}.}.do
2980: 5f 74 65 73 74 20 62 69 6e 64 2d 38 2e 31 32 20  _test bind-8.12 
2990: 7b 0a 20 20 63 61 74 63 68 20 7b 20 73 71 6c 69  {.  catch { sqli
29a0: 74 65 33 5f 62 69 6e 64 5f 69 6e 74 20 24 56 4d  te3_bind_int $VM
29b0: 20 30 20 35 20 7d 0a 7d 20 7b 31 7d 0a 64 6f 5f   0 5 }.} {1}.do_
29c0: 74 65 73 74 20 62 69 6e 64 2d 38 2e 31 33 20 7b  test bind-8.13 {
29d0: 0a 20 20 63 61 74 63 68 20 7b 20 73 71 6c 69 74  .  catch { sqlit
29e0: 65 33 5f 62 69 6e 64 5f 69 6e 74 20 24 56 4d 20  e3_bind_int $VM 
29f0: 34 20 35 20 7d 0a 7d 20 7b 31 7d 0a 64 6f 5f 74  4 5 }.} {1}.do_t
2a00: 65 73 74 20 62 69 6e 64 2d 38 2e 31 34 20 7b 0a  est bind-8.14 {.
2a10: 20 20 63 61 74 63 68 20 7b 20 73 71 6c 69 74 65    catch { sqlite
2a20: 33 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 20 24 56  3_bind_double $V
2a30: 4d 20 30 20 35 2e 30 20 7d 0a 7d 20 7b 31 7d 0a  M 0 5.0 }.} {1}.
2a40: 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 38 2e 31  do_test bind-8.1
2a50: 35 20 7b 0a 20 20 63 61 74 63 68 20 7b 20 73 71  5 {.  catch { sq
2a60: 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c  lite3_bind_doubl
2a70: 65 20 24 56 4d 20 34 20 36 2e 30 20 7d 0a 7d 20  e $VM 4 6.0 }.} 
2a80: 7b 31 7d 0a 0a 64 6f 5f 74 65 73 74 20 62 69 6e  {1}..do_test bin
2a90: 64 2d 38 2e 39 39 20 7b 0a 20 20 73 71 6c 69 74  d-8.99 {.  sqlit
2aa0: 65 33 5f 66 69 6e 61 6c 69 7a 65 20 24 56 4d 0a  e3_finalize $VM.
2ab0: 7d 20 53 51 4c 49 54 45 5f 4f 4b 0a 0a 64 6f 5f  } SQLITE_OK..do_
2ac0: 74 65 73 74 20 62 69 6e 64 2d 39 2e 31 20 7b 0a  test bind-9.1 {.
2ad0: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
2ae0: 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 32 28  CREATE TABLE t2(
2af0: 61 2c 62 2c 63 2c 64 2c 65 2c 66 29 3b 0a 20 20  a,b,c,d,e,f);.  
2b00: 7d 0a 20 20 73 65 74 20 72 63 20 5b 63 61 74 63  }.  set rc [catc
2b10: 68 20 7b 0a 20 20 20 20 73 71 6c 69 74 65 33 5f  h {.    sqlite3_
2b20: 70 72 65 70 61 72 65 20 24 44 42 20 7b 0a 20 20  prepare $DB {.  
2b30: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
2b40: 74 32 28 61 29 20 56 41 4c 55 45 53 28 3f 30 29  t2(a) VALUES(?0)
2b50: 0a 20 20 20 20 7d 20 2d 31 20 54 41 49 4c 0a 20  .    } -1 TAIL. 
2b60: 20 7d 20 6d 73 67 5d 0a 20 20 6c 61 70 70 65 6e   } msg].  lappen
2b70: 64 20 72 63 20 24 6d 73 67 0a 7d 20 7b 31 20 7b  d rc $msg.} {1 {
2b80: 28 31 29 20 76 61 72 69 61 62 6c 65 20 6e 75 6d  (1) variable num
2b90: 62 65 72 20 6d 75 73 74 20 62 65 20 62 65 74 77  ber must be betw
2ba0: 65 65 6e 20 3f 31 20 61 6e 64 20 3f 39 39 39 7d  een ?1 and ?999}
2bb0: 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 39  }.do_test bind-9
2bc0: 2e 32 20 7b 0a 20 20 73 65 74 20 72 63 20 5b 63  .2 {.  set rc [c
2bd0: 61 74 63 68 20 7b 0a 20 20 20 20 73 71 6c 69 74  atch {.    sqlit
2be0: 65 33 5f 70 72 65 70 61 72 65 20 24 44 42 20 7b  e3_prepare $DB {
2bf0: 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e  .      INSERT IN
2c00: 54 4f 20 74 32 28 61 29 20 56 41 4c 55 45 53 28  TO t2(a) VALUES(
2c10: 3f 31 30 30 30 29 0a 20 20 20 20 7d 20 2d 31 20  ?1000).    } -1 
2c20: 54 41 49 4c 0a 20 20 7d 20 6d 73 67 5d 0a 20 20  TAIL.  } msg].  
2c30: 6c 61 70 70 65 6e 64 20 72 63 20 24 6d 73 67 0a  lappend rc $msg.
2c40: 7d 20 7b 31 20 7b 28 31 29 20 76 61 72 69 61 62  } {1 {(1) variab
2c50: 6c 65 20 6e 75 6d 62 65 72 20 6d 75 73 74 20 62  le number must b
2c60: 65 20 62 65 74 77 65 65 6e 20 3f 31 20 61 6e 64  e between ?1 and
2c70: 20 3f 39 39 39 7d 7d 0a 64 6f 5f 74 65 73 74 20   ?999}}.do_test 
2c80: 62 69 6e 64 2d 39 2e 33 20 7b 0a 20 20 73 65 74  bind-9.3 {.  set
2c90: 20 56 4d 20 5b 0a 20 20 20 20 73 71 6c 69 74 65   VM [.    sqlite
2ca0: 33 5f 70 72 65 70 61 72 65 20 24 44 42 20 7b 0a  3_prepare $DB {.
2cb0: 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54        INSERT INT
2cc0: 4f 20 74 32 28 61 2c 62 29 20 56 41 4c 55 45 53  O t2(a,b) VALUES
2cd0: 28 3f 31 2c 3f 39 39 39 29 0a 20 20 20 20 7d 20  (?1,?999).    } 
2ce0: 2d 31 20 54 41 49 4c 0a 20 20 5d 0a 20 20 73 71  -1 TAIL.  ].  sq
2cf0: 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
2d00: 65 74 65 72 5f 63 6f 75 6e 74 20 24 56 4d 0a 7d  eter_count $VM.}
2d10: 20 7b 39 39 39 7d 0a 63 61 74 63 68 20 7b 73 71   {999}.catch {sq
2d20: 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 20 24  lite3_finalize $
2d30: 56 4d 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64  VM}.do_test bind
2d40: 2d 39 2e 34 20 7b 0a 20 20 73 65 74 20 56 4d 20  -9.4 {.  set VM 
2d50: 5b 0a 20 20 20 20 73 71 6c 69 74 65 33 5f 70 72  [.    sqlite3_pr
2d60: 65 70 61 72 65 20 24 44 42 20 7b 0a 20 20 20 20  epare $DB {.    
2d70: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32    INSERT INTO t2
2d80: 28 61 2c 62 2c 63 2c 64 29 20 56 41 4c 55 45 53  (a,b,c,d) VALUES
2d90: 28 3f 31 2c 3f 39 39 37 2c 3f 2c 3f 29 0a 20 20  (?1,?997,?,?).  
2da0: 20 20 7d 20 2d 31 20 54 41 49 4c 0a 20 20 5d 0a    } -1 TAIL.  ].
2db0: 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70    sqlite3_bind_p
2dc0: 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 20 24  arameter_count $
2dd0: 56 4d 0a 7d 20 7b 39 39 39 7d 0a 64 6f 5f 74 65  VM.} {999}.do_te
2de0: 73 74 20 62 69 6e 64 2d 39 2e 35 20 7b 0a 20 20  st bind-9.5 {.  
2df0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
2e00: 20 24 56 4d 20 31 20 31 0a 20 20 73 71 6c 69 74   $VM 1 1.  sqlit
2e10: 65 33 5f 62 69 6e 64 5f 69 6e 74 20 24 56 4d 20  e3_bind_int $VM 
2e20: 39 39 37 20 39 39 39 0a 20 20 73 71 6c 69 74 65  997 999.  sqlite
2e30: 33 5f 62 69 6e 64 5f 69 6e 74 20 24 56 4d 20 39  3_bind_int $VM 9
2e40: 39 38 20 31 30 30 30 0a 20 20 73 71 6c 69 74 65  98 1000.  sqlite
2e50: 33 5f 62 69 6e 64 5f 69 6e 74 20 24 56 4d 20 39  3_bind_int $VM 9
2e60: 39 39 20 31 30 30 31 0a 20 20 73 71 6c 69 74 65  99 1001.  sqlite
2e70: 33 5f 73 74 65 70 20 24 56 4d 0a 7d 20 53 51 4c  3_step $VM.} SQL
2e80: 49 54 45 5f 44 4f 4e 45 0a 64 6f 5f 74 65 73 74  ITE_DONE.do_test
2e90: 20 62 69 6e 64 2d 39 2e 36 20 7b 0a 20 20 73 71   bind-9.6 {.  sq
2ea0: 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 20 24  lite3_finalize $
2eb0: 56 4d 0a 7d 20 53 51 4c 49 54 45 5f 4f 4b 0a 64  VM.} SQLITE_OK.d
2ec0: 6f 5f 74 65 73 74 20 62 69 6e 64 2d 39 2e 37 20  o_test bind-9.7 
2ed0: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c  {.  execsql {SEL
2ee0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 32 7d 0a 7d  ECT * FROM t2}.}
2ef0: 20 7b 31 20 39 39 39 20 31 30 30 30 20 31 30 30   {1 999 1000 100
2f00: 31 20 7b 7d 20 7b 7d 7d 0a 0a 69 66 63 61 70 61  1 {} {}}..ifcapa
2f10: 62 6c 65 20 7b 74 63 6c 76 61 72 7d 20 7b 0a 20  ble {tclvar} {. 
2f20: 20 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 30   do_test bind-10
2f30: 2e 31 20 7b 0a 20 20 20 20 73 65 74 20 56 4d 20  .1 {.    set VM 
2f40: 5b 0a 20 20 20 20 20 20 73 71 6c 69 74 65 33 5f  [.      sqlite3_
2f50: 70 72 65 70 61 72 65 20 24 44 42 20 7b 0a 20 20  prepare $DB {.  
2f60: 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54        INSERT INT
2f70: 4f 20 74 32 28 61 2c 62 2c 63 2c 64 2c 65 2c 66  O t2(a,b,c,d,e,f
2f80: 29 20 56 41 4c 55 45 53 28 3a 61 62 63 2c 24 61  ) VALUES(:abc,$a
2f90: 62 63 2c 3a 61 62 63 2c 24 61 62 2c 24 61 62 63  bc,:abc,$ab,$abc
2fa0: 2c 3a 61 62 63 29 0a 20 20 20 20 20 20 7d 20 2d  ,:abc).      } -
2fb0: 31 20 54 41 49 4c 0a 20 20 20 20 5d 0a 20 20 20  1 TAIL.    ].   
2fc0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
2fd0: 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 20 24 56  rameter_count $V
2fe0: 4d 0a 20 20 7d 20 33 0a 20 20 73 65 74 20 76 31  M.  } 3.  set v1
2ff0: 20 7b 24 61 62 63 7d 0a 20 20 73 65 74 20 76 32   {$abc}.  set v2
3000: 20 7b 24 61 62 7d 0a 7d 0a 69 66 63 61 70 61 62   {$ab}.}.ifcapab
3010: 6c 65 20 7b 21 74 63 6c 76 61 72 7d 20 7b 0a 20  le {!tclvar} {. 
3020: 20 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 30   do_test bind-10
3030: 2e 31 20 7b 0a 20 20 20 20 73 65 74 20 56 4d 20  .1 {.    set VM 
3040: 5b 0a 20 20 20 20 20 20 73 71 6c 69 74 65 33 5f  [.      sqlite3_
3050: 70 72 65 70 61 72 65 20 24 44 42 20 7b 0a 20 20  prepare $DB {.  
3060: 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54        INSERT INT
3070: 4f 20 74 32 28 61 2c 62 2c 63 2c 64 2c 65 2c 66  O t2(a,b,c,d,e,f
3080: 29 20 56 41 4c 55 45 53 28 3a 61 62 63 2c 3a 78  ) VALUES(:abc,:x
3090: 79 7a 2c 3a 61 62 63 2c 3a 78 79 2c 3a 78 79 7a  yz,:abc,:xy,:xyz
30a0: 2c 3a 61 62 63 29 0a 20 20 20 20 20 20 7d 20 2d  ,:abc).      } -
30b0: 31 20 54 41 49 4c 0a 20 20 20 20 5d 0a 20 20 20  1 TAIL.    ].   
30c0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
30d0: 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 20 24 56  rameter_count $V
30e0: 4d 0a 20 20 7d 20 33 0a 20 20 73 65 74 20 76 31  M.  } 3.  set v1
30f0: 20 7b 3a 78 79 7a 7d 0a 20 20 73 65 74 20 76 32   {:xyz}.  set v2
3100: 20 7b 3a 78 79 7d 0a 7d 0a 64 6f 5f 74 65 73 74   {:xy}.}.do_test
3110: 20 62 69 6e 64 2d 31 30 2e 32 20 7b 0a 20 20 73   bind-10.2 {.  s
3120: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
3130: 6d 65 74 65 72 5f 69 6e 64 65 78 20 24 56 4d 20  meter_index $VM 
3140: 3a 61 62 63 0a 7d 20 31 0a 64 6f 5f 74 65 73 74  :abc.} 1.do_test
3150: 20 62 69 6e 64 2d 31 30 2e 33 20 7b 0a 20 20 73   bind-10.3 {.  s
3160: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
3170: 6d 65 74 65 72 5f 69 6e 64 65 78 20 24 56 4d 20  meter_index $VM 
3180: 24 76 31 0a 7d 20 32 0a 64 6f 5f 74 65 73 74 20  $v1.} 2.do_test 
3190: 62 69 6e 64 2d 31 30 2e 34 20 7b 0a 20 20 73 71  bind-10.4 {.  sq
31a0: 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
31b0: 65 74 65 72 5f 69 6e 64 65 78 20 24 56 4d 20 24  eter_index $VM $
31c0: 76 32 0a 7d 20 33 0a 64 6f 5f 74 65 73 74 20 62  v2.} 3.do_test b
31d0: 69 6e 64 2d 31 30 2e 35 20 7b 0a 20 20 73 71 6c  ind-10.5 {.  sql
31e0: 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
31f0: 74 65 72 5f 6e 61 6d 65 20 24 56 4d 20 31 0a 7d  ter_name $VM 1.}
3200: 20 3a 61 62 63 0a 64 6f 5f 74 65 73 74 20 62 69   :abc.do_test bi
3210: 6e 64 2d 31 30 2e 36 20 7b 0a 20 20 73 71 6c 69  nd-10.6 {.  sqli
3220: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
3230: 65 72 5f 6e 61 6d 65 20 24 56 4d 20 32 0a 7d 20  er_name $VM 2.} 
3240: 24 76 31 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64  $v1.do_test bind
3250: 2d 31 30 2e 37 20 7b 0a 20 20 73 71 6c 69 74 65  -10.7 {.  sqlite
3260: 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
3270: 5f 6e 61 6d 65 20 24 56 4d 20 33 0a 7d 20 24 76  _name $VM 3.} $v
3280: 32 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31  2.do_test bind-1
3290: 30 2e 37 2e 31 20 7b 0a 20 20 73 71 6c 69 74 65  0.7.1 {.  sqlite
32a0: 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
32b0: 5f 6e 61 6d 65 20 30 20 31 20 20 20 3b 23 20 49  _name 0 1   ;# I
32c0: 67 6e 6f 72 65 20 69 66 20 56 4d 20 69 73 20 4e  gnore if VM is N
32d0: 55 4c 4c 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74  ULL.} {}.do_test
32e0: 20 62 69 6e 64 2d 31 30 2e 37 2e 32 20 7b 0a 20   bind-10.7.2 {. 
32f0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
3300: 72 61 6d 65 74 65 72 5f 6e 61 6d 65 20 24 56 4d  rameter_name $VM
3310: 20 30 20 3b 23 20 49 67 6e 6f 72 65 20 69 66 20   0 ;# Ignore if 
3320: 69 6e 64 65 78 20 74 6f 6f 20 73 6d 61 6c 6c 0a  index too small.
3330: 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e  } {}.do_test bin
3340: 64 2d 31 30 2e 37 2e 33 20 7b 0a 20 20 73 71 6c  d-10.7.3 {.  sql
3350: 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65  ite3_bind_parame
3360: 74 65 72 5f 6e 61 6d 65 20 24 56 4d 20 34 20 3b  ter_name $VM 4 ;
3370: 23 20 49 67 6e 6f 72 65 20 69 66 20 69 6e 64 65  # Ignore if inde
3380: 78 20 69 73 20 74 6f 6f 20 62 69 67 0a 7d 20 7b  x is too big.} {
3390: 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31  }.do_test bind-1
33a0: 30 2e 38 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f  0.8 {.  sqlite3_
33b0: 62 69 6e 64 5f 69 6e 74 20 24 56 4d 20 31 20 31  bind_int $VM 1 1
33c0: 0a 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  .  sqlite3_bind_
33d0: 69 6e 74 20 24 56 4d 20 32 20 32 0a 20 20 73 71  int $VM 2 2.  sq
33e0: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 20 24  lite3_bind_int $
33f0: 56 4d 20 33 20 33 0a 20 20 73 71 6c 69 74 65 33  VM 3 3.  sqlite3
3400: 5f 73 74 65 70 20 24 56 4d 0a 7d 20 53 51 4c 49  _step $VM.} SQLI
3410: 54 45 5f 44 4f 4e 45 0a 64 6f 5f 74 65 73 74 20  TE_DONE.do_test 
3420: 62 69 6e 64 2d 31 30 2e 38 2e 31 20 7b 0a 20 20  bind-10.8.1 {.  
3430: 23 20 42 69 6e 64 69 6e 67 20 61 74 74 65 6d 70  # Binding attemp
3440: 74 73 20 61 66 74 65 72 20 70 72 6f 67 72 61 6d  ts after program
3450: 20 73 74 61 72 74 20 73 68 6f 75 6c 64 20 66 61   start should fa
3460: 69 6c 0a 20 20 73 65 74 20 72 63 20 5b 63 61 74  il.  set rc [cat
3470: 63 68 20 7b 0a 20 20 20 20 73 71 6c 69 74 65 33  ch {.    sqlite3
3480: 5f 62 69 6e 64 5f 69 6e 74 20 24 56 4d 20 31 20  _bind_int $VM 1 
3490: 31 0a 20 20 7d 20 6d 73 67 5d 0a 20 20 6c 61 70  1.  } msg].  lap
34a0: 70 65 6e 64 20 72 63 20 24 6d 73 67 0a 7d 20 7b  pend rc $msg.} {
34b0: 31 20 7b 7d 7d 0a 64 6f 5f 74 65 73 74 20 62 69  1 {}}.do_test bi
34c0: 6e 64 2d 31 30 2e 39 20 7b 0a 20 20 73 71 6c 69  nd-10.9 {.  sqli
34d0: 74 65 33 5f 66 69 6e 61 6c 69 7a 65 20 24 56 4d  te3_finalize $VM
34e0: 0a 7d 20 53 51 4c 49 54 45 5f 4f 4b 0a 64 6f 5f  .} SQLITE_OK.do_
34f0: 74 65 73 74 20 62 69 6e 64 2d 31 30 2e 31 30 20  test bind-10.10 
3500: 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c  {.  execsql {SEL
3510: 45 43 54 20 2a 20 46 52 4f 4d 20 74 32 7d 0a 7d  ECT * FROM t2}.}
3520: 20 7b 31 20 39 39 39 20 31 30 30 30 20 31 30 30   {1 999 1000 100
3530: 31 20 7b 7d 20 7b 7d 20 31 20 32 20 31 20 33 20  1 {} {} 1 2 1 3 
3540: 32 20 31 7d 0a 0a 23 20 54 69 63 6b 65 74 20 23  2 1}..# Ticket #
3550: 39 31 38 0a 23 0a 64 6f 5f 74 65 73 74 20 62 69  918.#.do_test bi
3560: 6e 64 2d 31 30 2e 31 31 20 7b 0a 20 20 23 20 63  nd-10.11 {.  # c
3570: 61 74 63 68 20 7b 73 71 6c 69 74 65 33 5f 66 69  atch {sqlite3_fi
3580: 6e 61 6c 69 7a 65 20 24 56 4d 7d 0a 20 20 73 65  nalize $VM}.  se
3590: 74 20 56 4d 20 5b 0a 20 20 20 20 73 71 6c 69 74  t VM [.    sqlit
35a0: 65 33 5f 70 72 65 70 61 72 65 20 24 44 42 20 7b  e3_prepare $DB {
35b0: 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e  .      INSERT IN
35c0: 54 4f 20 74 32 28 61 2c 62 2c 63 2c 64 2c 65 2c  TO t2(a,b,c,d,e,
35d0: 66 29 20 56 41 4c 55 45 53 28 3a 61 62 63 2c 3f  f) VALUES(:abc,?
35e0: 2c 3f 34 2c 3a 70 71 72 2c 3a 61 62 63 2c 3f 34  ,?4,:pqr,:abc,?4
35f0: 29 0a 20 20 20 20 7d 20 2d 31 20 54 41 49 4c 0a  ).    } -1 TAIL.
3600: 20 20 5d 0a 20 20 73 71 6c 69 74 65 33 5f 62 69    ].  sqlite3_bi
3610: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75  nd_parameter_cou
3620: 6e 74 20 24 56 4d 0a 7d 20 35 0a 64 6f 5f 74 65  nt $VM.} 5.do_te
3630: 73 74 20 62 69 6e 64 2d 31 30 2e 31 31 2e 31 20  st bind-10.11.1 
3640: 7b 0a 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  {.  sqlite3_bind
3650: 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e 64 65 78  _parameter_index
3660: 20 30 20 3a 78 79 7a 20 20 3b 23 20 69 67 6e 6f   0 :xyz  ;# igno
3670: 72 65 20 4e 55 4c 4c 20 56 4d 20 61 72 67 75 6d  re NULL VM argum
3680: 65 6e 74 73 0a 7d 20 30 0a 64 6f 5f 74 65 73 74  ents.} 0.do_test
3690: 20 62 69 6e 64 2d 31 30 2e 31 32 20 7b 0a 20 20   bind-10.12 {.  
36a0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
36b0: 61 6d 65 74 65 72 5f 69 6e 64 65 78 20 24 56 4d  ameter_index $VM
36c0: 20 3a 78 79 7a 0a 7d 20 30 0a 64 6f 5f 74 65 73   :xyz.} 0.do_tes
36d0: 74 20 62 69 6e 64 2d 31 30 2e 31 33 20 7b 0a 20  t bind-10.13 {. 
36e0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
36f0: 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 20 24 56  rameter_index $V
3700: 4d 20 7b 7d 0a 7d 20 30 0a 64 6f 5f 74 65 73 74  M {}.} 0.do_test
3710: 20 62 69 6e 64 2d 31 30 2e 31 34 20 7b 0a 20 20   bind-10.14 {.  
3720: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
3730: 61 6d 65 74 65 72 5f 69 6e 64 65 78 20 24 56 4d  ameter_index $VM
3740: 20 3a 70 71 72 0a 7d 20 35 0a 64 6f 5f 74 65 73   :pqr.} 5.do_tes
3750: 74 20 62 69 6e 64 2d 31 30 2e 31 35 20 7b 0a 20  t bind-10.15 {. 
3760: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
3770: 72 61 6d 65 74 65 72 5f 69 6e 64 65 78 20 24 56  rameter_index $V
3780: 4d 20 3f 34 0a 7d 20 34 0a 64 6f 5f 74 65 73 74  M ?4.} 4.do_test
3790: 20 62 69 6e 64 2d 31 30 2e 31 36 20 7b 0a 20 20   bind-10.16 {.  
37a0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
37b0: 61 6d 65 74 65 72 5f 6e 61 6d 65 20 24 56 4d 20  ameter_name $VM 
37c0: 31 0a 7d 20 3a 61 62 63 0a 64 6f 5f 74 65 73 74  1.} :abc.do_test
37d0: 20 62 69 6e 64 2d 31 30 2e 31 37 20 7b 0a 20 20   bind-10.17 {.  
37e0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
37f0: 61 6d 65 74 65 72 5f 6e 61 6d 65 20 24 56 4d 20  ameter_name $VM 
3800: 32 0a 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 62  2.} {}.do_test b
3810: 69 6e 64 2d 31 30 2e 31 38 20 7b 0a 20 20 73 71  ind-10.18 {.  sq
3820: 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d  lite3_bind_param
3830: 65 74 65 72 5f 6e 61 6d 65 20 24 56 4d 20 33 0a  eter_name $VM 3.
3840: 7d 20 7b 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e  } {}.do_test bin
3850: 64 2d 31 30 2e 31 39 20 7b 0a 20 20 73 71 6c 69  d-10.19 {.  sqli
3860: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
3870: 65 72 5f 6e 61 6d 65 20 24 56 4d 20 34 0a 7d 20  er_name $VM 4.} 
3880: 7b 3f 34 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e  {?4}.do_test bin
3890: 64 2d 31 30 2e 32 30 20 7b 0a 20 20 73 71 6c 69  d-10.20 {.  sqli
38a0: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
38b0: 65 72 5f 6e 61 6d 65 20 24 56 4d 20 35 0a 7d 20  er_name $VM 5.} 
38c0: 3a 70 71 72 0a 63 61 74 63 68 20 7b 73 71 6c 69  :pqr.catch {sqli
38d0: 74 65 33 5f 66 69 6e 61 6c 69 7a 65 20 24 56 4d  te3_finalize $VM
38e0: 7d 0a 0a 23 20 4d 61 6b 65 20 73 75 72 65 20 77  }..# Make sure w
38f0: 65 20 63 61 74 63 68 20 61 6e 20 75 6e 74 65 72  e catch an unter
3900: 6d 69 6e 61 74 65 64 20 22 28 22 20 69 6e 20 61  minated "(" in a
3910: 20 54 63 6c 2d 73 74 79 6c 65 20 76 61 72 69 61   Tcl-style varia
3920: 62 6c 65 20 6e 61 6d 65 0a 23 0a 69 66 63 61 70  ble name.#.ifcap
3930: 61 62 6c 65 20 74 63 6c 76 61 72 20 7b 0a 20 20  able tclvar {.  
3940: 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 31 2e  do_test bind-11.
3950: 31 20 7b 0a 20 20 20 20 63 61 74 63 68 73 71 6c  1 {.    catchsql
3960: 20 7b 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20   {SELECT * FROM 
3970: 73 71 6c 69 74 65 5f 6d 61 73 74 65 72 20 57 48  sqlite_master WH
3980: 45 52 45 20 6e 61 6d 65 3d 24 61 62 63 28 31 32  ERE name=$abc(12
3990: 33 20 61 6e 64 20 73 71 6c 20 4e 4f 54 20 4e 55  3 and sql NOT NU
39a0: 4c 4c 3b 7d 0a 20 20 7d 20 7b 31 20 7b 75 6e 72  LL;}.  } {1 {unr
39b0: 65 63 6f 67 6e 69 7a 65 64 20 74 6f 6b 65 6e 3a  ecognized token:
39c0: 20 22 24 61 62 63 28 31 32 33 22 7d 7d 0a 7d 0a   "$abc(123"}}.}.
39d0: 0a 69 66 20 7b 5b 65 78 65 63 73 71 6c 20 7b 70  .if {[execsql {p
39e0: 72 61 67 6d 61 20 65 6e 63 6f 64 69 6e 67 7d 5d  ragma encoding}]
39f0: 3d 3d 22 55 54 46 2d 38 22 7d 20 7b 0a 20 20 23  =="UTF-8"} {.  #
3a00: 20 54 65 73 74 20 74 68 65 20 61 62 69 6c 69 74   Test the abilit
3a10: 79 20 74 6f 20 62 69 6e 64 20 74 65 78 74 20 74  y to bind text t
3a20: 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 65 6d 62  hat contains emb
3a30: 65 64 64 65 64 20 27 5c 30 30 30 27 20 63 68 61  edded '\000' cha
3a40: 72 61 63 74 65 72 73 2e 0a 20 20 23 20 4d 61 6b  racters..  # Mak
3a50: 65 20 73 75 72 65 20 77 65 20 63 61 6e 20 72 65  e sure we can re
3a60: 63 6f 76 65 72 20 74 68 65 20 65 6e 74 69 72 65  cover the entire
3a70: 20 69 6e 70 75 74 20 73 74 72 69 6e 67 2e 0a 20   input string.. 
3a80: 20 23 0a 20 20 64 6f 5f 74 65 73 74 20 62 69 6e   #.  do_test bin
3a90: 64 2d 31 32 2e 31 20 7b 0a 20 20 20 20 65 78 65  d-12.1 {.    exe
3aa0: 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 43 52 45  csql {.      CRE
3ab0: 41 54 45 20 54 41 42 4c 45 20 74 33 28 78 20 42  ATE TABLE t3(x B
3ac0: 4c 4f 42 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20  LOB);.    }.    
3ad0: 73 65 74 20 56 4d 20 5b 73 71 6c 69 74 65 33 5f  set VM [sqlite3_
3ae0: 70 72 65 70 61 72 65 20 24 44 42 20 7b 49 4e 53  prepare $DB {INS
3af0: 45 52 54 20 49 4e 54 4f 20 74 33 20 56 41 4c 55  ERT INTO t3 VALU
3b00: 45 53 28 3f 29 7d 20 2d 31 20 54 41 49 4c 5d 0a  ES(?)} -1 TAIL].
3b10: 20 20 20 20 73 71 6c 69 74 65 5f 62 69 6e 64 20      sqlite_bind 
3b20: 20 24 56 4d 20 31 20 6e 6f 74 2d 75 73 65 64 20   $VM 1 not-used 
3b30: 62 6c 6f 62 31 30 0a 20 20 20 20 73 71 6c 69 74  blob10.    sqlit
3b40: 65 33 5f 73 74 65 70 20 24 56 4d 0a 20 20 20 20  e3_step $VM.    
3b50: 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65  sqlite3_finalize
3b60: 20 24 56 4d 0a 20 20 20 20 65 78 65 63 73 71 6c   $VM.    execsql
3b70: 20 7b 0a 20 20 20 20 20 20 53 45 4c 45 43 54 20   {.      SELECT 
3b80: 74 79 70 65 6f 66 28 78 29 2c 20 6c 65 6e 67 74  typeof(x), lengt
3b90: 68 28 78 29 2c 20 71 75 6f 74 65 28 78 29 2c 0a  h(x), quote(x),.
3ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e               len
3bb0: 67 74 68 28 63 61 73 74 28 78 20 41 53 20 42 4c  gth(cast(x AS BL
3bc0: 4f 42 29 29 2c 20 71 75 6f 74 65 28 63 61 73 74  OB)), quote(cast
3bd0: 28 78 20 41 53 20 42 4c 4f 42 29 29 20 46 52 4f  (x AS BLOB)) FRO
3be0: 4d 20 74 33 0a 20 20 20 20 7d 0a 20 20 7d 20 7b  M t3.    }.  } {
3bf0: 74 65 78 74 20 33 20 27 61 62 63 27 20 31 30 20  text 3 'abc' 10 
3c00: 58 27 36 31 36 32 36 33 30 30 37 38 37 39 37 41  X'6162630078797A
3c10: 30 30 37 30 37 31 27 7d 0a 20 20 64 6f 5f 74 65  007071'}.  do_te
3c20: 73 74 20 62 69 6e 64 2d 31 32 2e 32 20 7b 0a 20  st bind-12.2 {. 
3c30: 20 20 20 73 71 6c 69 74 65 33 5f 63 72 65 61 74     sqlite3_creat
3c40: 65 5f 66 75 6e 63 74 69 6f 6e 20 24 44 42 0a 20  e_function $DB. 
3c50: 20 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20     execsql {.   
3c60: 20 20 20 53 45 4c 45 43 54 20 71 75 6f 74 65 28     SELECT quote(
3c70: 63 61 73 74 28 78 5f 63 6f 61 6c 65 73 63 65 28  cast(x_coalesce(
3c80: 78 29 20 41 53 20 62 6c 6f 62 29 29 20 46 52 4f  x) AS blob)) FRO
3c90: 4d 20 74 33 0a 20 20 20 20 7d 0a 20 20 7d 20 7b  M t3.    }.  } {
3ca0: 58 27 36 31 36 32 36 33 30 30 37 38 37 39 37 41  X'6162630078797A
3cb0: 30 30 37 30 37 31 27 7d 0a 7d 0a 0a 23 20 54 65  007071'}.}..# Te
3cc0: 73 74 20 74 68 65 20 6f 70 65 72 61 74 69 6f 6e  st the operation
3cd0: 20 6f 66 20 73 71 6c 69 74 65 33 5f 63 6c 65 61   of sqlite3_clea
3ce0: 72 5f 62 69 6e 64 69 6e 67 73 0a 23 0a 64 6f 5f  r_bindings.#.do_
3cf0: 74 65 73 74 20 62 69 6e 64 2d 31 33 2e 31 20 7b  test bind-13.1 {
3d00: 0a 20 20 73 65 74 20 56 4d 20 5b 73 71 6c 69 74  .  set VM [sqlit
3d10: 65 33 5f 70 72 65 70 61 72 65 20 24 44 42 20 7b  e3_prepare $DB {
3d20: 53 45 4c 45 43 54 20 3f 2c 3f 2c 3f 7d 20 2d 31  SELECT ?,?,?} -1
3d30: 20 54 41 49 4c 5d 0a 20 20 73 71 6c 69 74 65 33   TAIL].  sqlite3
3d40: 5f 73 74 65 70 20 24 56 4d 0a 20 20 6c 69 73 74  _step $VM.  list
3d50: 20 5b 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e   [sqlite3_column
3d60: 5f 74 79 70 65 20 24 56 4d 20 30 5d 20 5b 73 71  _type $VM 0] [sq
3d70: 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70  lite3_column_typ
3d80: 65 20 24 56 4d 20 31 5d 20 5c 0a 20 20 20 20 20  e $VM 1] \.     
3d90: 20 20 20 20 20 20 20 20 20 20 5b 73 71 6c 69 74            [sqlit
3da0: 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 20 24  e3_column_type $
3db0: 56 4d 20 32 5d 0a 7d 20 7b 4e 55 4c 4c 20 4e 55  VM 2].} {NULL NU
3dc0: 4c 4c 20 4e 55 4c 4c 7d 0a 64 6f 5f 74 65 73 74  LL NULL}.do_test
3dd0: 20 62 69 6e 64 2d 31 33 2e 32 20 7b 0a 20 20 73   bind-13.2 {.  s
3de0: 71 6c 69 74 65 33 5f 72 65 73 65 74 20 24 56 4d  qlite3_reset $VM
3df0: 0a 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  .  sqlite3_bind_
3e00: 69 6e 74 20 24 56 4d 20 31 20 31 0a 20 20 73 71  int $VM 1 1.  sq
3e10: 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 20 24  lite3_bind_int $
3e20: 56 4d 20 32 20 32 0a 20 20 73 71 6c 69 74 65 33  VM 2 2.  sqlite3
3e30: 5f 62 69 6e 64 5f 69 6e 74 20 24 56 4d 20 33 20  _bind_int $VM 3 
3e40: 33 0a 20 20 73 71 6c 69 74 65 33 5f 73 74 65 70  3.  sqlite3_step
3e50: 20 24 56 4d 0a 20 20 6c 69 73 74 20 5b 73 71 6c   $VM.  list [sql
3e60: 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65  ite3_column_type
3e70: 20 24 56 4d 20 30 5d 20 5b 73 71 6c 69 74 65 33   $VM 0] [sqlite3
3e80: 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 20 24 56 4d  _column_type $VM
3e90: 20 31 5d 20 5c 0a 20 20 20 20 20 20 20 20 20 20   1] \.          
3ea0: 20 20 20 20 20 5b 73 71 6c 69 74 65 33 5f 63 6f       [sqlite3_co
3eb0: 6c 75 6d 6e 5f 74 79 70 65 20 24 56 4d 20 32 5d  lumn_type $VM 2]
3ec0: 0a 7d 20 7b 49 4e 54 45 47 45 52 20 49 4e 54 45  .} {INTEGER INTE
3ed0: 47 45 52 20 49 4e 54 45 47 45 52 7d 0a 64 6f 5f  GER INTEGER}.do_
3ee0: 74 65 73 74 20 62 69 6e 64 2d 31 33 2e 33 20 7b  test bind-13.3 {
3ef0: 0a 20 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74  .  sqlite3_reset
3f00: 20 24 56 4d 0a 20 20 73 71 6c 69 74 65 33 5f 73   $VM.  sqlite3_s
3f10: 74 65 70 20 24 56 4d 0a 20 20 6c 69 73 74 20 5b  tep $VM.  list [
3f20: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
3f30: 79 70 65 20 24 56 4d 20 30 5d 20 5b 73 71 6c 69  ype $VM 0] [sqli
3f40: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 20  te3_column_type 
3f50: 24 56 4d 20 31 5d 20 5c 0a 20 20 20 20 20 20 20  $VM 1] \.       
3f60: 20 20 20 20 20 20 20 20 5b 73 71 6c 69 74 65 33          [sqlite3
3f70: 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 20 24 56 4d  _column_type $VM
3f80: 20 32 5d 0a 7d 20 7b 49 4e 54 45 47 45 52 20 49   2].} {INTEGER I
3f90: 4e 54 45 47 45 52 20 49 4e 54 45 47 45 52 7d 0a  NTEGER INTEGER}.
3fa0: 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 33 2e  do_test bind-13.
3fb0: 34 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 72 65  4 {.  sqlite3_re
3fc0: 73 65 74 20 24 56 4d 0a 20 20 73 71 6c 69 74 65  set $VM.  sqlite
3fd0: 33 5f 63 6c 65 61 72 5f 62 69 6e 64 69 6e 67 73  3_clear_bindings
3fe0: 20 24 56 4d 0a 20 20 73 71 6c 69 74 65 33 5f 73   $VM.  sqlite3_s
3ff0: 74 65 70 20 24 56 4d 0a 20 20 6c 69 73 74 20 5b  tep $VM.  list [
4000: 73 71 6c 69 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74  sqlite3_column_t
4010: 79 70 65 20 24 56 4d 20 30 5d 20 5b 73 71 6c 69  ype $VM 0] [sqli
4020: 74 65 33 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 20  te3_column_type 
4030: 24 56 4d 20 31 5d 20 5c 0a 20 20 20 20 20 20 20  $VM 1] \.       
4040: 20 20 20 20 20 20 20 20 5b 73 71 6c 69 74 65 33          [sqlite3
4050: 5f 63 6f 6c 75 6d 6e 5f 74 79 70 65 20 24 56 4d  _column_type $VM
4060: 20 32 5d 0a 7d 20 7b 4e 55 4c 4c 20 4e 55 4c 4c   2].} {NULL NULL
4070: 20 4e 55 4c 4c 7d 0a 73 71 6c 69 74 65 33 5f 66   NULL}.sqlite3_f
4080: 69 6e 61 6c 69 7a 65 20 24 56 4d 0a 0a 66 69 6e  inalize $VM..fin
4090: 69 73 68 5f 74 65 73 74 0a                       ish_test.