/ Hex Artifact Content
Login

Artifact 3635ddfe0fb15ecfd158708feff6ef707e15c0a9:


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 32 33 20 32 30 30 34 2f 31 31 2f  ,v 1.23 2004/11/
0200: 32 30 20 32 30 3a 31 38 3a 35 35 20 64 72 68 20  20 20:18:55 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 64 62   bind-1.1 {.  db
03f0: 20 63 6c 6f 73 65 0a 20 20 73 65 74 20 44 42 20   close.  set DB 
0400: 5b 73 71 6c 69 74 65 33 20 64 62 20 74 65 73 74  [sqlite3 db test
0410: 2e 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 39 39 20 7b 0a 20  st bind-1.99 {. 
09f0: 20 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a   sqlite3_finaliz
0a00: 65 20 24 56 4d 0a 7d 20 53 51 4c 49 54 45 5f 4f  e $VM.} SQLITE_O
0a10: 4b 0a 0a 23 20 50 72 65 70 61 72 65 20 74 68 65  K..# Prepare the
0a20: 20 73 74 61 74 65 6d 65 6e 74 20 69 6e 20 64 69   statement in di
0a30: 66 66 65 72 65 6e 74 20 77 61 79 73 20 64 65 70  fferent ways dep
0a40: 65 6e 64 69 6e 67 20 6f 6e 20 77 68 65 74 68 65  ending on whethe
0a50: 72 20 6f 72 20 6e 6f 74 0a 23 20 74 68 65 20 24  r or not.# the $
0a60: 76 61 72 20 70 72 6f 63 65 73 73 69 6e 67 20 69  var processing i
0a70: 73 20 63 6f 6d 70 69 6c 65 64 20 69 6e 74 6f 20  s compiled into 
0a80: 74 68 65 20 6c 69 62 72 61 72 79 2e 0a 23 0a 69  the library..#.i
0a90: 66 63 61 70 61 62 6c 65 20 7b 74 63 6c 76 61 72  fcapable {tclvar
0aa0: 7d 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20 62 69  } {.  do_test bi
0ab0: 6e 64 2d 32 2e 31 20 7b 0a 20 20 20 20 65 78 65  nd-2.1 {.    exe
0ac0: 63 73 71 6c 20 7b 0a 20 20 20 20 20 20 44 45 4c  csql {.      DEL
0ad0: 45 54 45 20 46 52 4f 4d 20 74 31 3b 0a 20 20 20  ETE FROM t1;.   
0ae0: 20 7d 0a 20 20 20 20 73 65 74 20 56 4d 20 5b 73   }.    set VM [s
0af0: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 20 24  qlite3_prepare $
0b00: 44 42 20 7b 49 4e 53 45 52 54 20 49 4e 54 4f 20  DB {INSERT INTO 
0b10: 74 31 20 56 41 4c 55 45 53 28 24 6f 6e 65 2c 24  t1 VALUES($one,$
0b20: 3a 3a 74 77 6f 2c 24 7b 78 7d 29 7d 20 2d 31 20  ::two,${x})} -1 
0b30: 54 58 5d 0a 20 20 20 20 73 65 74 20 54 58 0a 20  TX].    set TX. 
0b40: 20 7d 20 7b 7d 0a 20 20 73 65 74 20 76 31 20 7b   } {}.  set v1 {
0b50: 24 6f 6e 65 7d 0a 20 20 73 65 74 20 76 32 20 7b  $one}.  set v2 {
0b60: 24 3a 3a 74 77 6f 7d 0a 20 20 73 65 74 20 76 33  $::two}.  set v3
0b70: 20 7b 24 7b 78 7d 7d 0a 7d 0a 69 66 63 61 70 61   {${x}}.}.ifcapa
0b80: 62 6c 65 20 7b 21 74 63 6c 76 61 72 7d 20 7b 0a  ble {!tclvar} {.
0b90: 20 20 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 32    do_test bind-2
0ba0: 2e 31 20 7b 0a 20 20 20 20 65 78 65 63 73 71 6c  .1 {.    execsql
0bb0: 20 7b 0a 20 20 20 20 20 20 44 45 4c 45 54 45 20   {.      DELETE 
0bc0: 46 52 4f 4d 20 74 31 3b 0a 20 20 20 20 7d 0a 20  FROM t1;.    }. 
0bd0: 20 20 20 73 65 74 20 56 4d 20 5b 73 71 6c 69 74     set VM [sqlit
0be0: 65 33 5f 70 72 65 70 61 72 65 20 24 44 42 20 7b  e3_prepare $DB {
0bf0: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 56  INSERT INTO t1 V
0c00: 41 4c 55 45 53 28 3a 6f 6e 65 2c 3a 74 77 6f 2c  ALUES(:one,:two,
0c10: 3a 5f 29 7d 20 2d 31 20 54 58 5d 0a 20 20 20 20  :_)} -1 TX].    
0c20: 73 65 74 20 54 58 0a 20 20 7d 20 7b 7d 0a 20 20  set TX.  } {}.  
0c30: 73 65 74 20 76 31 20 7b 3a 6f 6e 65 7d 0a 20 20  set v1 {:one}.  
0c40: 73 65 74 20 76 32 20 7b 3a 74 77 6f 7d 0a 20 20  set v2 {:two}.  
0c50: 73 65 74 20 76 33 20 7b 3a 5f 7d 0a 7d 0a 0a 64  set v3 {:_}.}..d
0c60: 6f 5f 74 65 73 74 20 62 69 6e 64 2d 32 2e 31 2e  o_test bind-2.1.
0c70: 31 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 62 69  1 {.  sqlite3_bi
0c80: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75  nd_parameter_cou
0c90: 6e 74 20 24 56 4d 0a 7d 20 33 0a 64 6f 5f 74 65  nt $VM.} 3.do_te
0ca0: 73 74 20 62 69 6e 64 2d 32 2e 31 2e 32 20 7b 0a  st bind-2.1.2 {.
0cb0: 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70    sqlite3_bind_p
0cc0: 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 20 24 56  arameter_name $V
0cd0: 4d 20 31 0a 7d 20 24 76 31 0a 64 6f 5f 74 65 73  M 1.} $v1.do_tes
0ce0: 74 20 62 69 6e 64 2d 32 2e 31 2e 33 20 7b 0a 20  t bind-2.1.3 {. 
0cf0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61   sqlite3_bind_pa
0d00: 72 61 6d 65 74 65 72 5f 6e 61 6d 65 20 24 56 4d  rameter_name $VM
0d10: 20 32 0a 7d 20 24 76 32 0a 64 6f 5f 74 65 73 74   2.} $v2.do_test
0d20: 20 62 69 6e 64 2d 32 2e 31 2e 34 20 7b 0a 20 20   bind-2.1.4 {.  
0d30: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72  sqlite3_bind_par
0d40: 61 6d 65 74 65 72 5f 6e 61 6d 65 20 24 56 4d 20  ameter_name $VM 
0d50: 33 0a 7d 20 24 76 33 0a 64 6f 5f 74 65 73 74 20  3.} $v3.do_test 
0d60: 62 69 6e 64 2d 32 2e 31 2e 35 20 7b 0a 20 20 73  bind-2.1.5 {.  s
0d70: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
0d80: 6d 65 74 65 72 5f 69 6e 64 65 78 20 24 56 4d 20  meter_index $VM 
0d90: 24 76 31 0a 7d 20 31 0a 64 6f 5f 74 65 73 74 20  $v1.} 1.do_test 
0da0: 62 69 6e 64 2d 32 2e 31 2e 36 20 7b 0a 20 20 73  bind-2.1.6 {.  s
0db0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
0dc0: 6d 65 74 65 72 5f 69 6e 64 65 78 20 24 56 4d 20  meter_index $VM 
0dd0: 24 76 32 0a 7d 20 32 0a 64 6f 5f 74 65 73 74 20  $v2.} 2.do_test 
0de0: 62 69 6e 64 2d 32 2e 31 2e 37 20 7b 0a 20 20 73  bind-2.1.7 {.  s
0df0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
0e00: 6d 65 74 65 72 5f 69 6e 64 65 78 20 24 56 4d 20  meter_index $VM 
0e10: 24 76 33 0a 7d 20 33 0a 64 6f 5f 74 65 73 74 20  $v3.} 3.do_test 
0e20: 62 69 6e 64 2d 32 2e 31 2e 38 20 7b 0a 20 20 73  bind-2.1.8 {.  s
0e30: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
0e40: 6d 65 74 65 72 5f 69 6e 64 65 78 20 24 56 4d 20  meter_index $VM 
0e50: 7b 3a 68 69 7d 0a 7d 20 30 0a 0a 23 20 33 32 20  {:hi}.} 0..# 32 
0e60: 62 69 74 20 49 6e 74 65 67 65 72 73 0a 64 6f 5f  bit Integers.do_
0e70: 74 65 73 74 20 62 69 6e 64 2d 32 2e 32 20 7b 0a  test bind-2.2 {.
0e80: 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69    sqlite3_bind_i
0e90: 6e 74 20 24 56 4d 20 31 20 31 32 33 0a 20 20 73  nt $VM 1 123.  s
0ea0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 20  qlite3_bind_int 
0eb0: 24 56 4d 20 32 20 34 35 36 0a 20 20 73 71 6c 69  $VM 2 456.  sqli
0ec0: 74 65 33 5f 62 69 6e 64 5f 69 6e 74 20 24 56 4d  te3_bind_int $VM
0ed0: 20 33 20 37 38 39 0a 20 20 73 71 6c 69 74 65 5f   3 789.  sqlite_
0ee0: 73 74 65 70 20 24 56 4d 20 4e 20 56 41 4c 55 45  step $VM N VALUE
0ef0: 53 20 43 4f 4c 4e 41 4d 45 53 0a 20 20 73 71 6c  S COLNAMES.  sql
0f00: 69 74 65 33 5f 72 65 73 65 74 20 24 56 4d 0a 20  ite3_reset $VM. 
0f10: 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54   execsql {SELECT
0f20: 20 72 6f 77 69 64 2c 20 2a 20 46 52 4f 4d 20 74   rowid, * FROM t
0f30: 31 7d 0a 7d 20 7b 31 20 31 32 33 20 34 35 36 20  1}.} {1 123 456 
0f40: 37 38 39 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e  789}.do_test bin
0f50: 64 2d 32 2e 33 20 7b 0a 20 20 73 71 6c 69 74 65  d-2.3 {.  sqlite
0f60: 33 5f 62 69 6e 64 5f 69 6e 74 20 24 56 4d 20 32  3_bind_int $VM 2
0f70: 20 2d 32 30 30 30 30 30 30 30 30 30 0a 20 20 73   -2000000000.  s
0f80: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 20  qlite3_bind_int 
0f90: 24 56 4d 20 33 20 32 30 30 30 30 30 30 30 30 30  $VM 3 2000000000
0fa0: 0a 20 20 73 71 6c 69 74 65 5f 73 74 65 70 20 24  .  sqlite_step $
0fb0: 56 4d 20 4e 20 56 41 4c 55 45 53 20 43 4f 4c 4e  VM N VALUES COLN
0fc0: 41 4d 45 53 0a 20 20 73 71 6c 69 74 65 33 5f 72  AMES.  sqlite3_r
0fd0: 65 73 65 74 20 24 56 4d 0a 20 20 65 78 65 63 73  eset $VM.  execs
0fe0: 71 6c 20 7b 53 45 4c 45 43 54 20 72 6f 77 69 64  ql {SELECT rowid
0ff0: 2c 20 2a 20 46 52 4f 4d 20 74 31 7d 0a 7d 20 7b  , * FROM t1}.} {
1000: 31 20 31 32 33 20 34 35 36 20 37 38 39 20 32 20  1 123 456 789 2 
1010: 31 32 33 20 2d 32 30 30 30 30 30 30 30 30 30 20  123 -2000000000 
1020: 32 30 30 30 30 30 30 30 30 30 7d 0a 64 6f 5f 74  2000000000}.do_t
1030: 65 73 74 20 62 69 6e 64 2d 32 2e 34 20 7b 0a 20  est bind-2.4 {. 
1040: 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54   execsql {SELECT
1050: 20 74 79 70 65 6f 66 28 61 29 2c 20 74 79 70 65   typeof(a), type
1060: 6f 66 28 62 29 2c 20 74 79 70 65 6f 66 28 63 29  of(b), typeof(c)
1070: 20 46 52 4f 4d 20 74 31 7d 0a 7d 20 7b 69 6e 74   FROM t1}.} {int
1080: 65 67 65 72 20 69 6e 74 65 67 65 72 20 69 6e 74  eger integer int
1090: 65 67 65 72 20 69 6e 74 65 67 65 72 20 69 6e 74  eger integer int
10a0: 65 67 65 72 20 69 6e 74 65 67 65 72 7d 0a 64 6f  eger integer}.do
10b0: 5f 74 65 73 74 20 62 69 6e 64 2d 32 2e 35 20 7b  _test bind-2.5 {
10c0: 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20  .  execsql {.   
10d0: 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 3b   DELETE FROM t1;
10e0: 0a 20 20 7d 0a 7d 20 7b 7d 0a 0a 23 20 36 34 20  .  }.} {}..# 64 
10f0: 62 69 74 20 49 6e 74 65 67 65 72 73 0a 64 6f 5f  bit Integers.do_
1100: 74 65 73 74 20 62 69 6e 64 2d 33 2e 31 20 7b 0a  test bind-3.1 {.
1110: 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69    sqlite3_bind_i
1120: 6e 74 36 34 20 24 56 4d 20 31 20 33 32 0a 20 20  nt64 $VM 1 32.  
1130: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
1140: 36 34 20 24 56 4d 20 32 20 2d 32 30 30 30 30 30  64 $VM 2 -200000
1150: 30 30 30 30 30 30 30 0a 20 20 73 71 6c 69 74 65  0000000.  sqlite
1160: 33 5f 62 69 6e 64 5f 69 6e 74 36 34 20 24 56 4d  3_bind_int64 $VM
1170: 20 33 20 32 30 30 30 30 30 30 30 30 30 30 30 30   3 2000000000000
1180: 0a 20 20 73 71 6c 69 74 65 5f 73 74 65 70 20 24  .  sqlite_step $
1190: 56 4d 20 4e 20 56 41 4c 55 45 53 20 43 4f 4c 4e  VM N VALUES COLN
11a0: 41 4d 45 53 0a 20 20 73 71 6c 69 74 65 33 5f 72  AMES.  sqlite3_r
11b0: 65 73 65 74 20 24 56 4d 0a 20 20 65 78 65 63 73  eset $VM.  execs
11c0: 71 6c 20 7b 53 45 4c 45 43 54 20 72 6f 77 69 64  ql {SELECT rowid
11d0: 2c 20 2a 20 46 52 4f 4d 20 74 31 7d 0a 7d 20 7b  , * FROM t1}.} {
11e0: 31 20 33 32 20 2d 32 30 30 30 30 30 30 30 30 30  1 32 -2000000000
11f0: 30 30 30 20 32 30 30 30 30 30 30 30 30 30 30 30  000 200000000000
1200: 30 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d  0}.do_test bind-
1210: 33 2e 32 20 7b 0a 20 20 65 78 65 63 73 71 6c 20  3.2 {.  execsql 
1220: 7b 53 45 4c 45 43 54 20 74 79 70 65 6f 66 28 61  {SELECT typeof(a
1230: 29 2c 20 74 79 70 65 6f 66 28 62 29 2c 20 74 79  ), typeof(b), ty
1240: 70 65 6f 66 28 63 29 20 46 52 4f 4d 20 74 31 7d  peof(c) FROM t1}
1250: 0a 7d 20 7b 69 6e 74 65 67 65 72 20 69 6e 74 65  .} {integer inte
1260: 67 65 72 20 69 6e 74 65 67 65 72 7d 0a 64 6f 5f  ger integer}.do_
1270: 74 65 73 74 20 62 69 6e 64 2d 33 2e 33 20 7b 0a  test bind-3.3 {.
1280: 20 20 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20    execsql {.    
1290: 44 45 4c 45 54 45 20 46 52 4f 4d 20 74 31 3b 0a  DELETE FROM t1;.
12a0: 20 20 7d 0a 7d 20 7b 7d 0a 0a 23 20 44 6f 75 62    }.} {}..# Doub
12b0: 6c 65 73 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64  les.do_test bind
12c0: 2d 34 2e 31 20 7b 0a 20 20 73 71 6c 69 74 65 33  -4.1 {.  sqlite3
12d0: 5f 62 69 6e 64 5f 64 6f 75 62 6c 65 20 24 56 4d  _bind_double $VM
12e0: 20 31 20 31 32 33 34 2e 31 32 33 34 0a 20 20 73   1 1234.1234.  s
12f0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62  qlite3_bind_doub
1300: 6c 65 20 24 56 4d 20 32 20 30 2e 30 30 30 30 31  le $VM 2 0.00001
1310: 0a 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  .  sqlite3_bind_
1320: 64 6f 75 62 6c 65 20 24 56 4d 20 33 20 31 32 33  double $VM 3 123
1330: 34 35 36 37 38 39 0a 20 20 73 71 6c 69 74 65 5f  456789.  sqlite_
1340: 73 74 65 70 20 24 56 4d 20 4e 20 56 41 4c 55 45  step $VM N VALUE
1350: 53 20 43 4f 4c 4e 41 4d 45 53 0a 20 20 73 71 6c  S COLNAMES.  sql
1360: 69 74 65 33 5f 72 65 73 65 74 20 24 56 4d 0a 20  ite3_reset $VM. 
1370: 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54   execsql {SELECT
1380: 20 72 6f 77 69 64 2c 20 2a 20 46 52 4f 4d 20 74   rowid, * FROM t
1390: 31 7d 0a 7d 20 7b 31 20 31 32 33 34 2e 31 32 33  1}.} {1 1234.123
13a0: 34 20 31 65 2d 30 35 20 31 32 33 34 35 36 37 38  4 1e-05 12345678
13b0: 39 2e 30 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e  9.0}.do_test bin
13c0: 64 2d 34 2e 32 20 7b 0a 20 20 65 78 65 63 73 71  d-4.2 {.  execsq
13d0: 6c 20 7b 53 45 4c 45 43 54 20 74 79 70 65 6f 66  l {SELECT typeof
13e0: 28 61 29 2c 20 74 79 70 65 6f 66 28 62 29 2c 20  (a), typeof(b), 
13f0: 74 79 70 65 6f 66 28 63 29 20 46 52 4f 4d 20 74  typeof(c) FROM t
1400: 31 7d 0a 7d 20 7b 72 65 61 6c 20 72 65 61 6c 20  1}.} {real real 
1410: 72 65 61 6c 7d 0a 64 6f 5f 74 65 73 74 20 62 69  real}.do_test bi
1420: 6e 64 2d 34 2e 33 20 7b 0a 20 20 65 78 65 63 73  nd-4.3 {.  execs
1430: 71 6c 20 7b 0a 20 20 20 20 44 45 4c 45 54 45 20  ql {.    DELETE 
1440: 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a 7d 20 7b  FROM t1;.  }.} {
1450: 7d 0a 0a 23 20 4e 55 4c 4c 0a 64 6f 5f 74 65 73  }..# NULL.do_tes
1460: 74 20 62 69 6e 64 2d 35 2e 31 20 7b 0a 20 20 73  t bind-5.1 {.  s
1470: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 6e 75 6c 6c  qlite3_bind_null
1480: 20 24 56 4d 20 31 0a 20 20 73 71 6c 69 74 65 33   $VM 1.  sqlite3
1490: 5f 62 69 6e 64 5f 6e 75 6c 6c 20 24 56 4d 20 32  _bind_null $VM 2
14a0: 0a 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  .  sqlite3_bind_
14b0: 6e 75 6c 6c 20 24 56 4d 20 33 20 0a 20 20 73 71  null $VM 3 .  sq
14c0: 6c 69 74 65 5f 73 74 65 70 20 24 56 4d 20 4e 20  lite_step $VM N 
14d0: 56 41 4c 55 45 53 20 43 4f 4c 4e 41 4d 45 53 0a  VALUES COLNAMES.
14e0: 20 20 73 71 6c 69 74 65 33 5f 72 65 73 65 74 20    sqlite3_reset 
14f0: 24 56 4d 0a 20 20 65 78 65 63 73 71 6c 20 7b 53  $VM.  execsql {S
1500: 45 4c 45 43 54 20 72 6f 77 69 64 2c 20 2a 20 46  ELECT rowid, * F
1510: 52 4f 4d 20 74 31 7d 0a 7d 20 7b 31 20 7b 7d 20  ROM t1}.} {1 {} 
1520: 7b 7d 20 7b 7d 7d 0a 64 6f 5f 74 65 73 74 20 62  {} {}}.do_test b
1530: 69 6e 64 2d 35 2e 32 20 7b 0a 20 20 65 78 65 63  ind-5.2 {.  exec
1540: 73 71 6c 20 7b 53 45 4c 45 43 54 20 74 79 70 65  sql {SELECT type
1550: 6f 66 28 61 29 2c 20 74 79 70 65 6f 66 28 62 29  of(a), typeof(b)
1560: 2c 20 74 79 70 65 6f 66 28 63 29 20 46 52 4f 4d  , typeof(c) FROM
1570: 20 74 31 7d 0a 7d 20 7b 6e 75 6c 6c 20 6e 75 6c   t1}.} {null nul
1580: 6c 20 6e 75 6c 6c 7d 0a 64 6f 5f 74 65 73 74 20  l null}.do_test 
1590: 62 69 6e 64 2d 35 2e 33 20 7b 0a 20 20 65 78 65  bind-5.3 {.  exe
15a0: 63 73 71 6c 20 7b 0a 20 20 20 20 44 45 4c 45 54  csql {.    DELET
15b0: 45 20 46 52 4f 4d 20 74 31 3b 0a 20 20 7d 0a 7d  E FROM t1;.  }.}
15c0: 20 7b 7d 0a 0a 23 20 55 54 46 2d 38 20 74 65 78   {}..# UTF-8 tex
15d0: 74 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 36  t.do_test bind-6
15e0: 2e 31 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 62  .1 {.  sqlite3_b
15f0: 69 6e 64 5f 74 65 78 74 20 24 56 4d 20 31 20 68  ind_text $VM 1 h
1600: 65 6c 6c 6f 74 68 65 72 65 20 35 0a 20 20 73 71  ellothere 5.  sq
1610: 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74 20  lite3_bind_text 
1620: 24 56 4d 20 32 20 22 2e 2e 22 20 31 0a 20 20 73  $VM 2 ".." 1.  s
1630: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74 65 78 74  qlite3_bind_text
1640: 20 24 56 4d 20 33 20 77 6f 72 6c 64 20 2d 31 0a   $VM 3 world -1.
1650: 20 20 73 71 6c 69 74 65 5f 73 74 65 70 20 24 56    sqlite_step $V
1660: 4d 20 4e 20 56 41 4c 55 45 53 20 43 4f 4c 4e 41  M N VALUES COLNA
1670: 4d 45 53 0a 20 20 73 71 6c 69 74 65 33 5f 72 65  MES.  sqlite3_re
1680: 73 65 74 20 24 56 4d 0a 20 20 65 78 65 63 73 71  set $VM.  execsq
1690: 6c 20 7b 53 45 4c 45 43 54 20 72 6f 77 69 64 2c  l {SELECT rowid,
16a0: 20 2a 20 46 52 4f 4d 20 74 31 7d 0a 7d 20 7b 31   * FROM t1}.} {1
16b0: 20 68 65 6c 6c 6f 20 2e 20 77 6f 72 6c 64 7d 0a   hello . world}.
16c0: 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 36 2e 32  do_test bind-6.2
16d0: 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 53 45   {.  execsql {SE
16e0: 4c 45 43 54 20 74 79 70 65 6f 66 28 61 29 2c 20  LECT typeof(a), 
16f0: 74 79 70 65 6f 66 28 62 29 2c 20 74 79 70 65 6f  typeof(b), typeo
1700: 66 28 63 29 20 46 52 4f 4d 20 74 31 7d 0a 7d 20  f(c) FROM t1}.} 
1710: 7b 74 65 78 74 20 74 65 78 74 20 74 65 78 74 7d  {text text text}
1720: 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 36 2e  .do_test bind-6.
1730: 33 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  3 {.  execsql {.
1740: 20 20 20 20 44 45 4c 45 54 45 20 46 52 4f 4d 20      DELETE FROM 
1750: 74 31 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a 0a 23 20  t1;.  }.} {}..# 
1760: 55 54 46 2d 31 36 20 74 65 78 74 0a 69 66 63 61  UTF-16 text.ifca
1770: 70 61 62 6c 65 20 7b 75 74 66 31 36 7d 20 7b 0a  pable {utf16} {.
1780: 20 20 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 37    do_test bind-7
1790: 2e 31 20 7b 0a 20 20 20 20 73 71 6c 69 74 65 33  .1 {.    sqlite3
17a0: 5f 62 69 6e 64 5f 74 65 78 74 31 36 20 24 56 4d  _bind_text16 $VM
17b0: 20 31 20 5b 65 6e 63 6f 64 69 6e 67 20 63 6f 6e   1 [encoding con
17c0: 76 65 72 74 74 6f 20 75 6e 69 63 6f 64 65 20 68  vertto unicode h
17d0: 65 6c 6c 6f 74 68 65 72 65 5d 20 31 30 0a 20 20  ellothere] 10.  
17e0: 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74    sqlite3_bind_t
17f0: 65 78 74 31 36 20 24 56 4d 20 32 20 5b 65 6e 63  ext16 $VM 2 [enc
1800: 6f 64 69 6e 67 20 63 6f 6e 76 65 72 74 74 6f 20  oding convertto 
1810: 75 6e 69 63 6f 64 65 20 22 22 5d 20 30 0a 20 20  unicode ""] 0.  
1820: 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 74    sqlite3_bind_t
1830: 65 78 74 31 36 20 24 56 4d 20 33 20 5b 65 6e 63  ext16 $VM 3 [enc
1840: 6f 64 69 6e 67 20 63 6f 6e 76 65 72 74 74 6f 20  oding convertto 
1850: 75 6e 69 63 6f 64 65 20 77 6f 72 6c 64 5d 20 31  unicode world] 1
1860: 30 0a 20 20 20 20 73 71 6c 69 74 65 5f 73 74 65  0.    sqlite_ste
1870: 70 20 24 56 4d 20 4e 20 56 41 4c 55 45 53 20 43  p $VM N VALUES C
1880: 4f 4c 4e 41 4d 45 53 0a 20 20 20 20 73 71 6c 69  OLNAMES.    sqli
1890: 74 65 33 5f 72 65 73 65 74 20 24 56 4d 0a 20 20  te3_reset $VM.  
18a0: 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c 45 43    execsql {SELEC
18b0: 54 20 72 6f 77 69 64 2c 20 2a 20 46 52 4f 4d 20  T rowid, * FROM 
18c0: 74 31 7d 0a 20 20 7d 20 7b 31 20 68 65 6c 6c 6f  t1}.  } {1 hello
18d0: 20 7b 7d 20 77 6f 72 6c 64 7d 0a 20 20 64 6f 5f   {} world}.  do_
18e0: 74 65 73 74 20 62 69 6e 64 2d 37 2e 32 20 7b 0a  test bind-7.2 {.
18f0: 20 20 20 20 65 78 65 63 73 71 6c 20 7b 53 45 4c      execsql {SEL
1900: 45 43 54 20 74 79 70 65 6f 66 28 61 29 2c 20 74  ECT typeof(a), t
1910: 79 70 65 6f 66 28 62 29 2c 20 74 79 70 65 6f 66  ypeof(b), typeof
1920: 28 63 29 20 46 52 4f 4d 20 74 31 7d 0a 20 20 7d  (c) FROM t1}.  }
1930: 20 7b 74 65 78 74 20 74 65 78 74 20 74 65 78 74   {text text text
1940: 7d 0a 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64  }.}.do_test bind
1950: 2d 37 2e 33 20 7b 0a 20 20 65 78 65 63 73 71 6c  -7.3 {.  execsql
1960: 20 7b 0a 20 20 20 20 44 45 4c 45 54 45 20 46 52   {.    DELETE FR
1970: 4f 4d 20 74 31 3b 0a 20 20 7d 0a 7d 20 7b 7d 0a  OM t1;.  }.} {}.
1980: 0a 23 20 54 65 73 74 20 74 68 61 74 20 74 68 65  .# Test that the
1990: 20 27 6f 75 74 20 6f 66 20 72 61 6e 67 65 27 20   'out of range' 
19a0: 65 72 72 6f 72 20 77 6f 72 6b 73 2e 0a 64 6f 5f  error works..do_
19b0: 74 65 73 74 20 62 69 6e 64 2d 38 2e 31 20 7b 0a  test bind-8.1 {.
19c0: 20 20 63 61 74 63 68 20 7b 20 73 71 6c 69 74 65    catch { sqlite
19d0: 33 5f 62 69 6e 64 5f 6e 75 6c 6c 20 24 56 4d 20  3_bind_null $VM 
19e0: 30 20 7d 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73  0 }.} {1}.do_tes
19f0: 74 20 62 69 6e 64 2d 38 2e 32 20 7b 0a 20 20 73  t bind-8.2 {.  s
1a00: 71 6c 69 74 65 33 5f 65 72 72 6d 73 67 20 24 44  qlite3_errmsg $D
1a10: 42 0a 7d 20 7b 62 69 6e 64 20 6f 72 20 63 6f 6c  B.} {bind or col
1a20: 75 6d 6e 20 69 6e 64 65 78 20 6f 75 74 20 6f 66  umn index out of
1a30: 20 72 61 6e 67 65 7d 0a 69 66 63 61 70 61 62 6c   range}.ifcapabl
1a40: 65 20 7b 75 74 66 31 36 7d 20 7b 0a 20 20 64 6f  e {utf16} {.  do
1a50: 5f 74 65 73 74 20 62 69 6e 64 2d 38 2e 33 20 7b  _test bind-8.3 {
1a60: 0a 20 20 20 20 65 6e 63 6f 64 69 6e 67 20 63 6f  .    encoding co
1a70: 6e 76 65 72 74 66 72 6f 6d 20 75 6e 69 63 6f 64  nvertfrom unicod
1a80: 65 20 5b 73 71 6c 69 74 65 33 5f 65 72 72 6d 73  e [sqlite3_errms
1a90: 67 31 36 20 24 44 42 5d 0a 20 20 7d 20 7b 62 69  g16 $DB].  } {bi
1aa0: 6e 64 20 6f 72 20 63 6f 6c 75 6d 6e 20 69 6e 64  nd or column ind
1ab0: 65 78 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 7d  ex out of range}
1ac0: 0a 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d  .}.do_test bind-
1ad0: 38 2e 34 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f  8.4 {.  sqlite3_
1ae0: 62 69 6e 64 5f 6e 75 6c 6c 20 24 56 4d 20 31 20  bind_null $VM 1 
1af0: 0a 20 20 73 71 6c 69 74 65 33 5f 65 72 72 6d 73  .  sqlite3_errms
1b00: 67 20 24 44 42 0a 7d 20 7b 6e 6f 74 20 61 6e 20  g $DB.} {not an 
1b10: 65 72 72 6f 72 7d 0a 64 6f 5f 74 65 73 74 20 62  error}.do_test b
1b20: 69 6e 64 2d 38 2e 35 20 7b 0a 20 20 63 61 74 63  ind-8.5 {.  catc
1b30: 68 20 7b 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  h { sqlite3_bind
1b40: 5f 6e 75 6c 6c 20 24 56 4d 20 34 20 7d 0a 7d 20  _null $VM 4 }.} 
1b50: 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64  {1}.do_test bind
1b60: 2d 38 2e 36 20 7b 0a 20 20 73 71 6c 69 74 65 33  -8.6 {.  sqlite3
1b70: 5f 65 72 72 6d 73 67 20 24 44 42 0a 7d 20 7b 62  _errmsg $DB.} {b
1b80: 69 6e 64 20 6f 72 20 63 6f 6c 75 6d 6e 20 69 6e  ind or column in
1b90: 64 65 78 20 6f 75 74 20 6f 66 20 72 61 6e 67 65  dex out of range
1ba0: 7d 0a 69 66 63 61 70 61 62 6c 65 20 7b 75 74 66  }.ifcapable {utf
1bb0: 31 36 7d 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20  16} {.  do_test 
1bc0: 62 69 6e 64 2d 38 2e 37 20 7b 0a 20 20 20 20 65  bind-8.7 {.    e
1bd0: 6e 63 6f 64 69 6e 67 20 63 6f 6e 76 65 72 74 66  ncoding convertf
1be0: 72 6f 6d 20 75 6e 69 63 6f 64 65 20 5b 73 71 6c  rom unicode [sql
1bf0: 69 74 65 33 5f 65 72 72 6d 73 67 31 36 20 24 44  ite3_errmsg16 $D
1c00: 42 5d 0a 20 20 7d 20 7b 62 69 6e 64 20 6f 72 20  B].  } {bind or 
1c10: 63 6f 6c 75 6d 6e 20 69 6e 64 65 78 20 6f 75 74  column index out
1c20: 20 6f 66 20 72 61 6e 67 65 7d 0a 7d 0a 0a 64 6f   of range}.}..do
1c30: 5f 74 65 73 74 20 62 69 6e 64 2d 38 2e 38 20 7b  _test bind-8.8 {
1c40: 0a 20 20 63 61 74 63 68 20 7b 20 73 71 6c 69 74  .  catch { sqlit
1c50: 65 33 5f 62 69 6e 64 5f 62 6c 6f 62 20 24 56 4d  e3_bind_blob $VM
1c60: 20 30 20 22 61 62 63 22 20 33 20 7d 0a 7d 20 7b   0 "abc" 3 }.} {
1c70: 31 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d  1}.do_test bind-
1c80: 38 2e 39 20 7b 0a 20 20 63 61 74 63 68 20 7b 20  8.9 {.  catch { 
1c90: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 62 6c 6f  sqlite3_bind_blo
1ca0: 62 20 24 56 4d 20 34 20 22 61 62 63 22 20 33 20  b $VM 4 "abc" 3 
1cb0: 7d 0a 7d 20 7b 31 7d 0a 64 6f 5f 74 65 73 74 20  }.} {1}.do_test 
1cc0: 62 69 6e 64 2d 38 2e 31 30 20 7b 0a 20 20 63 61  bind-8.10 {.  ca
1cd0: 74 63 68 20 7b 20 73 71 6c 69 74 65 33 5f 62 69  tch { sqlite3_bi
1ce0: 6e 64 5f 74 65 78 74 20 24 56 4d 20 30 20 22 61  nd_text $VM 0 "a
1cf0: 62 63 22 20 33 20 7d 0a 7d 20 7b 31 7d 0a 69 66  bc" 3 }.} {1}.if
1d00: 63 61 70 61 62 6c 65 20 7b 75 74 66 31 36 7d 20  capable {utf16} 
1d10: 7b 0a 20 20 64 6f 5f 74 65 73 74 20 62 69 6e 64  {.  do_test bind
1d20: 2d 38 2e 31 31 20 7b 0a 20 20 20 20 63 61 74 63  -8.11 {.    catc
1d30: 68 20 7b 20 73 71 6c 69 74 65 33 5f 62 69 6e 64  h { sqlite3_bind
1d40: 5f 74 65 78 74 31 36 20 24 56 4d 20 34 20 22 61  _text16 $VM 4 "a
1d50: 62 63 22 20 32 20 7d 0a 20 20 7d 20 7b 31 7d 0a  bc" 2 }.  } {1}.
1d60: 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 38  }.do_test bind-8
1d70: 2e 31 32 20 7b 0a 20 20 63 61 74 63 68 20 7b 20  .12 {.  catch { 
1d80: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
1d90: 20 24 56 4d 20 30 20 35 20 7d 0a 7d 20 7b 31 7d   $VM 0 5 }.} {1}
1da0: 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 38 2e  .do_test bind-8.
1db0: 31 33 20 7b 0a 20 20 63 61 74 63 68 20 7b 20 73  13 {.  catch { s
1dc0: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 20  qlite3_bind_int 
1dd0: 24 56 4d 20 34 20 35 20 7d 0a 7d 20 7b 31 7d 0a  $VM 4 5 }.} {1}.
1de0: 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 38 2e 31  do_test bind-8.1
1df0: 34 20 7b 0a 20 20 63 61 74 63 68 20 7b 20 73 71  4 {.  catch { sq
1e00: 6c 69 74 65 33 5f 62 69 6e 64 5f 64 6f 75 62 6c  lite3_bind_doubl
1e10: 65 20 24 56 4d 20 30 20 35 2e 30 20 7d 0a 7d 20  e $VM 0 5.0 }.} 
1e20: 7b 31 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64  {1}.do_test bind
1e30: 2d 38 2e 31 35 20 7b 0a 20 20 63 61 74 63 68 20  -8.15 {.  catch 
1e40: 7b 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 64  { sqlite3_bind_d
1e50: 6f 75 62 6c 65 20 24 56 4d 20 34 20 36 2e 30 20  ouble $VM 4 6.0 
1e60: 7d 0a 7d 20 7b 31 7d 0a 0a 64 6f 5f 74 65 73 74  }.} {1}..do_test
1e70: 20 62 69 6e 64 2d 38 2e 39 39 20 7b 0a 20 20 73   bind-8.99 {.  s
1e80: 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 20  qlite3_finalize 
1e90: 24 56 4d 0a 7d 20 53 51 4c 49 54 45 5f 4f 4b 0a  $VM.} SQLITE_OK.
1ea0: 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 39 2e  .do_test bind-9.
1eb0: 31 20 7b 0a 20 20 65 78 65 63 73 71 6c 20 7b 0a  1 {.  execsql {.
1ec0: 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45      CREATE TABLE
1ed0: 20 74 32 28 61 2c 62 2c 63 2c 64 2c 65 2c 66 29   t2(a,b,c,d,e,f)
1ee0: 3b 0a 20 20 7d 0a 20 20 73 65 74 20 72 63 20 5b  ;.  }.  set rc [
1ef0: 63 61 74 63 68 20 7b 0a 20 20 20 20 73 71 6c 69  catch {.    sqli
1f00: 74 65 33 5f 70 72 65 70 61 72 65 20 24 44 42 20  te3_prepare $DB 
1f10: 7b 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20 49  {.      INSERT I
1f20: 4e 54 4f 20 74 32 28 61 29 20 56 41 4c 55 45 53  NTO t2(a) VALUES
1f30: 28 3f 30 29 0a 20 20 20 20 7d 20 2d 31 20 54 41  (?0).    } -1 TA
1f40: 49 4c 0a 20 20 7d 20 6d 73 67 5d 0a 20 20 6c 61  IL.  } msg].  la
1f50: 70 70 65 6e 64 20 72 63 20 24 6d 73 67 0a 7d 20  ppend rc $msg.} 
1f60: 7b 31 20 7b 28 31 29 20 76 61 72 69 61 62 6c 65  {1 {(1) variable
1f70: 20 6e 75 6d 62 65 72 20 6d 75 73 74 20 62 65 20   number must be 
1f80: 62 65 74 77 65 65 6e 20 3f 31 20 61 6e 64 20 3f  between ?1 and ?
1f90: 39 39 39 7d 7d 0a 64 6f 5f 74 65 73 74 20 62 69  999}}.do_test bi
1fa0: 6e 64 2d 39 2e 32 20 7b 0a 20 20 73 65 74 20 72  nd-9.2 {.  set r
1fb0: 63 20 5b 63 61 74 63 68 20 7b 0a 20 20 20 20 73  c [catch {.    s
1fc0: 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 20 24  qlite3_prepare $
1fd0: 44 42 20 7b 0a 20 20 20 20 20 20 49 4e 53 45 52  DB {.      INSER
1fe0: 54 20 49 4e 54 4f 20 74 32 28 61 29 20 56 41 4c  T INTO t2(a) VAL
1ff0: 55 45 53 28 3f 31 30 30 30 29 0a 20 20 20 20 7d  UES(?1000).    }
2000: 20 2d 31 20 54 41 49 4c 0a 20 20 7d 20 6d 73 67   -1 TAIL.  } msg
2010: 5d 0a 20 20 6c 61 70 70 65 6e 64 20 72 63 20 24  ].  lappend rc $
2020: 6d 73 67 0a 7d 20 7b 31 20 7b 28 31 29 20 76 61  msg.} {1 {(1) va
2030: 72 69 61 62 6c 65 20 6e 75 6d 62 65 72 20 6d 75  riable number mu
2040: 73 74 20 62 65 20 62 65 74 77 65 65 6e 20 3f 31  st be between ?1
2050: 20 61 6e 64 20 3f 39 39 39 7d 7d 0a 64 6f 5f 74   and ?999}}.do_t
2060: 65 73 74 20 62 69 6e 64 2d 39 2e 33 20 7b 0a 20  est bind-9.3 {. 
2070: 20 73 65 74 20 56 4d 20 5b 0a 20 20 20 20 73 71   set VM [.    sq
2080: 6c 69 74 65 33 5f 70 72 65 70 61 72 65 20 24 44  lite3_prepare $D
2090: 42 20 7b 0a 20 20 20 20 20 20 49 4e 53 45 52 54  B {.      INSERT
20a0: 20 49 4e 54 4f 20 74 32 28 61 2c 62 29 20 56 41   INTO t2(a,b) VA
20b0: 4c 55 45 53 28 3f 31 2c 3f 39 39 39 29 0a 20 20  LUES(?1,?999).  
20c0: 20 20 7d 20 2d 31 20 54 41 49 4c 0a 20 20 5d 0a    } -1 TAIL.  ].
20d0: 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70    sqlite3_bind_p
20e0: 61 72 61 6d 65 74 65 72 5f 63 6f 75 6e 74 20 24  arameter_count $
20f0: 56 4d 0a 7d 20 7b 39 39 39 7d 0a 63 61 74 63 68  VM.} {999}.catch
2100: 20 7b 73 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69   {sqlite3_finali
2110: 7a 65 20 24 56 4d 7d 0a 64 6f 5f 74 65 73 74 20  ze $VM}.do_test 
2120: 62 69 6e 64 2d 39 2e 34 20 7b 0a 20 20 73 65 74  bind-9.4 {.  set
2130: 20 56 4d 20 5b 0a 20 20 20 20 73 71 6c 69 74 65   VM [.    sqlite
2140: 33 5f 70 72 65 70 61 72 65 20 24 44 42 20 7b 0a  3_prepare $DB {.
2150: 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54        INSERT INT
2160: 4f 20 74 32 28 61 2c 62 2c 63 2c 64 29 20 56 41  O t2(a,b,c,d) VA
2170: 4c 55 45 53 28 3f 31 2c 3f 39 39 39 2c 3f 2c 3f  LUES(?1,?999,?,?
2180: 29 0a 20 20 20 20 7d 20 2d 31 20 54 41 49 4c 0a  ).    } -1 TAIL.
2190: 20 20 5d 0a 20 20 73 71 6c 69 74 65 33 5f 62 69    ].  sqlite3_bi
21a0: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 63 6f 75  nd_parameter_cou
21b0: 6e 74 20 24 56 4d 0a 7d 20 7b 31 30 30 31 7d 0a  nt $VM.} {1001}.
21c0: 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 39 2e 35  do_test bind-9.5
21d0: 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 62 69 6e   {.  sqlite3_bin
21e0: 64 5f 69 6e 74 20 24 56 4d 20 31 20 31 0a 20 20  d_int $VM 1 1.  
21f0: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
2200: 20 24 56 4d 20 39 39 39 20 39 39 39 0a 20 20 73   $VM 999 999.  s
2210: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74 20  qlite3_bind_int 
2220: 24 56 4d 20 31 30 30 30 20 31 30 30 30 0a 20 20  $VM 1000 1000.  
2230: 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e 74  sqlite3_bind_int
2240: 20 24 56 4d 20 31 30 30 31 20 31 30 30 31 0a 20   $VM 1001 1001. 
2250: 20 73 71 6c 69 74 65 33 5f 73 74 65 70 20 24 56   sqlite3_step $V
2260: 4d 0a 7d 20 53 51 4c 49 54 45 5f 44 4f 4e 45 0a  M.} SQLITE_DONE.
2270: 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 39 2e 36  do_test bind-9.6
2280: 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 66 69 6e   {.  sqlite3_fin
2290: 61 6c 69 7a 65 20 24 56 4d 0a 7d 20 53 51 4c 49  alize $VM.} SQLI
22a0: 54 45 5f 4f 4b 0a 64 6f 5f 74 65 73 74 20 62 69  TE_OK.do_test bi
22b0: 6e 64 2d 39 2e 37 20 7b 0a 20 20 65 78 65 63 73  nd-9.7 {.  execs
22c0: 71 6c 20 7b 53 45 4c 45 43 54 20 2a 20 46 52 4f  ql {SELECT * FRO
22d0: 4d 20 74 32 7d 0a 7d 20 7b 31 20 39 39 39 20 31  M t2}.} {1 999 1
22e0: 30 30 30 20 31 30 30 31 20 7b 7d 20 7b 7d 7d 0a  000 1001 {} {}}.
22f0: 0a 69 66 63 61 70 61 62 6c 65 20 7b 74 63 6c 76  .ifcapable {tclv
2300: 61 72 7d 20 7b 0a 20 20 64 6f 5f 74 65 73 74 20  ar} {.  do_test 
2310: 62 69 6e 64 2d 31 30 2e 31 20 7b 0a 20 20 20 20  bind-10.1 {.    
2320: 63 61 74 63 68 20 7b 73 71 6c 69 74 65 33 5f 66  catch {sqlite3_f
2330: 69 6e 61 6c 69 7a 65 20 24 56 4d 7d 0a 20 20 20  inalize $VM}.   
2340: 20 73 65 74 20 56 4d 20 5b 0a 20 20 20 20 20 20   set VM [.      
2350: 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65 20  sqlite3_prepare 
2360: 24 44 42 20 7b 0a 20 20 20 20 20 20 20 20 49 4e  $DB {.        IN
2370: 53 45 52 54 20 49 4e 54 4f 20 74 32 28 61 2c 62  SERT INTO t2(a,b
2380: 2c 63 2c 64 2c 65 2c 66 29 20 56 41 4c 55 45 53  ,c,d,e,f) VALUES
2390: 28 3a 61 62 63 2c 24 61 62 63 2c 3a 61 62 63 2c  (:abc,$abc,:abc,
23a0: 24 61 62 2c 24 61 62 63 2c 3a 61 62 63 29 0a 20  $ab,$abc,:abc). 
23b0: 20 20 20 20 20 7d 20 2d 31 20 54 41 49 4c 0a 20       } -1 TAIL. 
23c0: 20 20 20 5d 0a 20 20 20 20 73 71 6c 69 74 65 33     ].    sqlite3
23d0: 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
23e0: 63 6f 75 6e 74 20 24 56 4d 0a 20 20 7d 20 33 0a  count $VM.  } 3.
23f0: 20 20 73 65 74 20 76 31 20 7b 24 61 62 63 7d 0a    set v1 {$abc}.
2400: 20 20 73 65 74 20 76 32 20 7b 24 61 62 7d 0a 7d    set v2 {$ab}.}
2410: 0a 69 66 63 61 70 61 62 6c 65 20 7b 21 74 63 6c  .ifcapable {!tcl
2420: 76 61 72 7d 20 7b 0a 20 20 64 6f 5f 74 65 73 74  var} {.  do_test
2430: 20 62 69 6e 64 2d 31 30 2e 31 20 7b 0a 20 20 20   bind-10.1 {.   
2440: 20 63 61 74 63 68 20 7b 73 71 6c 69 74 65 33 5f   catch {sqlite3_
2450: 66 69 6e 61 6c 69 7a 65 20 24 56 4d 7d 0a 20 20  finalize $VM}.  
2460: 20 20 73 65 74 20 56 4d 20 5b 0a 20 20 20 20 20    set VM [.     
2470: 20 73 71 6c 69 74 65 33 5f 70 72 65 70 61 72 65   sqlite3_prepare
2480: 20 24 44 42 20 7b 0a 20 20 20 20 20 20 20 20 49   $DB {.        I
2490: 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 28 61 2c  NSERT INTO t2(a,
24a0: 62 2c 63 2c 64 2c 65 2c 66 29 20 56 41 4c 55 45  b,c,d,e,f) VALUE
24b0: 53 28 3a 61 62 63 2c 3a 78 79 7a 2c 3a 61 62 63  S(:abc,:xyz,:abc
24c0: 2c 3a 78 79 2c 3a 78 79 7a 2c 3a 61 62 63 29 0a  ,:xy,:xyz,:abc).
24d0: 20 20 20 20 20 20 7d 20 2d 31 20 54 41 49 4c 0a        } -1 TAIL.
24e0: 20 20 20 20 5d 0a 20 20 20 20 73 71 6c 69 74 65      ].    sqlite
24f0: 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72  3_bind_parameter
2500: 5f 63 6f 75 6e 74 20 24 56 4d 0a 20 20 7d 20 33  _count $VM.  } 3
2510: 0a 20 20 73 65 74 20 76 31 20 7b 3a 78 79 7a 7d  .  set v1 {:xyz}
2520: 0a 20 20 73 65 74 20 76 32 20 7b 3a 78 79 7d 0a  .  set v2 {:xy}.
2530: 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31  }.do_test bind-1
2540: 30 2e 32 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f  0.2 {.  sqlite3_
2550: 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69  bind_parameter_i
2560: 6e 64 65 78 20 24 56 4d 20 3a 61 62 63 0a 7d 20  ndex $VM :abc.} 
2570: 31 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31  1.do_test bind-1
2580: 30 2e 33 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f  0.3 {.  sqlite3_
2590: 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69  bind_parameter_i
25a0: 6e 64 65 78 20 24 56 4d 20 24 76 31 0a 7d 20 32  ndex $VM $v1.} 2
25b0: 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 30  .do_test bind-10
25c0: 2e 34 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 62  .4 {.  sqlite3_b
25d0: 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 69 6e  ind_parameter_in
25e0: 64 65 78 20 24 56 4d 20 24 76 32 0a 7d 20 33 0a  dex $VM $v2.} 3.
25f0: 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 30 2e  do_test bind-10.
2600: 35 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 62 69  5 {.  sqlite3_bi
2610: 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d  nd_parameter_nam
2620: 65 20 24 56 4d 20 31 0a 7d 20 3a 61 62 63 0a 64  e $VM 1.} :abc.d
2630: 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 30 2e 36  o_test bind-10.6
2640: 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 62 69 6e   {.  sqlite3_bin
2650: 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65  d_parameter_name
2660: 20 24 56 4d 20 32 0a 7d 20 24 76 31 0a 64 6f 5f   $VM 2.} $v1.do_
2670: 74 65 73 74 20 62 69 6e 64 2d 31 30 2e 37 20 7b  test bind-10.7 {
2680: 0a 20 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f  .  sqlite3_bind_
2690: 70 61 72 61 6d 65 74 65 72 5f 6e 61 6d 65 20 24  parameter_name $
26a0: 56 4d 20 33 0a 7d 20 24 76 32 0a 64 6f 5f 74 65  VM 3.} $v2.do_te
26b0: 73 74 20 62 69 6e 64 2d 31 30 2e 38 20 7b 0a 20  st bind-10.8 {. 
26c0: 20 73 71 6c 69 74 65 33 5f 62 69 6e 64 5f 69 6e   sqlite3_bind_in
26d0: 74 20 24 56 4d 20 31 20 31 0a 20 20 73 71 6c 69  t $VM 1 1.  sqli
26e0: 74 65 33 5f 62 69 6e 64 5f 69 6e 74 20 24 56 4d  te3_bind_int $VM
26f0: 20 32 20 32 0a 20 20 73 71 6c 69 74 65 33 5f 62   2 2.  sqlite3_b
2700: 69 6e 64 5f 69 6e 74 20 24 56 4d 20 33 20 33 0a  ind_int $VM 3 3.
2710: 20 20 73 71 6c 69 74 65 33 5f 73 74 65 70 20 24    sqlite3_step $
2720: 56 4d 0a 7d 20 53 51 4c 49 54 45 5f 44 4f 4e 45  VM.} SQLITE_DONE
2730: 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 30  .do_test bind-10
2740: 2e 39 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 66  .9 {.  sqlite3_f
2750: 69 6e 61 6c 69 7a 65 20 24 56 4d 0a 7d 20 53 51  inalize $VM.} SQ
2760: 4c 49 54 45 5f 4f 4b 0a 64 6f 5f 74 65 73 74 20  LITE_OK.do_test 
2770: 62 69 6e 64 2d 31 30 2e 31 30 20 7b 0a 20 20 65  bind-10.10 {.  e
2780: 78 65 63 73 71 6c 20 7b 53 45 4c 45 43 54 20 2a  xecsql {SELECT *
2790: 20 46 52 4f 4d 20 74 32 7d 0a 7d 20 7b 31 20 39   FROM t2}.} {1 9
27a0: 39 39 20 31 30 30 30 20 31 30 30 31 20 7b 7d 20  99 1000 1001 {} 
27b0: 7b 7d 20 31 20 32 20 31 20 33 20 32 20 31 7d 0a  {} 1 2 1 3 2 1}.
27c0: 0a 23 20 54 69 63 6b 65 74 20 23 39 31 38 0a 23  .# Ticket #918.#
27d0: 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 30  .do_test bind-10
27e0: 2e 31 31 20 7b 0a 20 20 63 61 74 63 68 20 7b 73  .11 {.  catch {s
27f0: 71 6c 69 74 65 33 5f 66 69 6e 61 6c 69 7a 65 20  qlite3_finalize 
2800: 24 56 4d 7d 0a 20 20 73 65 74 20 56 4d 20 5b 0a  $VM}.  set VM [.
2810: 20 20 20 20 73 71 6c 69 74 65 33 5f 70 72 65 70      sqlite3_prep
2820: 61 72 65 20 24 44 42 20 7b 0a 20 20 20 20 20 20  are $DB {.      
2830: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 32 28 61  INSERT INTO t2(a
2840: 2c 62 2c 63 2c 64 2c 65 2c 66 29 20 56 41 4c 55  ,b,c,d,e,f) VALU
2850: 45 53 28 3a 61 62 63 2c 3f 2c 3f 34 2c 3a 70 71  ES(:abc,?,?4,:pq
2860: 72 2c 3a 61 62 63 2c 3f 34 29 0a 20 20 20 20 7d  r,:abc,?4).    }
2870: 20 2d 31 20 54 41 49 4c 0a 20 20 5d 0a 20 20 73   -1 TAIL.  ].  s
2880: 71 6c 69 74 65 33 5f 62 69 6e 64 5f 70 61 72 61  qlite3_bind_para
2890: 6d 65 74 65 72 5f 63 6f 75 6e 74 20 24 56 4d 0a  meter_count $VM.
28a0: 7d 20 35 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64  } 5.do_test bind
28b0: 2d 31 30 2e 31 32 20 7b 0a 20 20 73 71 6c 69 74  -10.12 {.  sqlit
28c0: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
28d0: 72 5f 69 6e 64 65 78 20 24 56 4d 20 3a 78 79 7a  r_index $VM :xyz
28e0: 0a 7d 20 30 0a 64 6f 5f 74 65 73 74 20 62 69 6e  .} 0.do_test bin
28f0: 64 2d 31 30 2e 31 33 20 7b 0a 20 20 73 71 6c 69  d-10.13 {.  sqli
2900: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
2910: 65 72 5f 69 6e 64 65 78 20 24 56 4d 20 7b 7d 0a  er_index $VM {}.
2920: 7d 20 30 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64  } 0.do_test bind
2930: 2d 31 30 2e 31 34 20 7b 0a 20 20 73 71 6c 69 74  -10.14 {.  sqlit
2940: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
2950: 72 5f 69 6e 64 65 78 20 24 56 4d 20 3a 70 71 72  r_index $VM :pqr
2960: 0a 7d 20 35 0a 64 6f 5f 74 65 73 74 20 62 69 6e  .} 5.do_test bin
2970: 64 2d 31 30 2e 31 35 20 7b 0a 20 20 73 71 6c 69  d-10.15 {.  sqli
2980: 74 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74  te3_bind_paramet
2990: 65 72 5f 69 6e 64 65 78 20 24 56 4d 20 3f 34 0a  er_index $VM ?4.
29a0: 7d 20 34 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64  } 4.do_test bind
29b0: 2d 31 30 2e 31 36 20 7b 0a 20 20 73 71 6c 69 74  -10.16 {.  sqlit
29c0: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
29d0: 72 5f 6e 61 6d 65 20 24 56 4d 20 31 0a 7d 20 3a  r_name $VM 1.} :
29e0: 61 62 63 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64  abc.do_test bind
29f0: 2d 31 30 2e 31 36 20 7b 0a 20 20 73 71 6c 69 74  -10.16 {.  sqlit
2a00: 65 33 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65  e3_bind_paramete
2a10: 72 5f 6e 61 6d 65 20 24 56 4d 20 32 0a 7d 20 7b  r_name $VM 2.} {
2a20: 7d 0a 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31  }.do_test bind-1
2a30: 30 2e 31 36 20 7b 0a 20 20 73 71 6c 69 74 65 33  0.16 {.  sqlite3
2a40: 5f 62 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f  _bind_parameter_
2a50: 6e 61 6d 65 20 24 56 4d 20 33 0a 7d 20 7b 7d 0a  name $VM 3.} {}.
2a60: 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 30 2e  do_test bind-10.
2a70: 31 36 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 62  16 {.  sqlite3_b
2a80: 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61  ind_parameter_na
2a90: 6d 65 20 24 56 4d 20 34 0a 7d 20 7b 3f 34 7d 0a  me $VM 4.} {?4}.
2aa0: 64 6f 5f 74 65 73 74 20 62 69 6e 64 2d 31 30 2e  do_test bind-10.
2ab0: 31 36 20 7b 0a 20 20 73 71 6c 69 74 65 33 5f 62  16 {.  sqlite3_b
2ac0: 69 6e 64 5f 70 61 72 61 6d 65 74 65 72 5f 6e 61  ind_parameter_na
2ad0: 6d 65 20 24 56 4d 20 35 0a 7d 20 3a 70 71 72 0a  me $VM 5.} :pqr.
2ae0: 63 61 74 63 68 20 7b 73 71 6c 69 74 65 33 5f 66  catch {sqlite3_f
2af0: 69 6e 61 6c 69 7a 65 20 24 56 4d 7d 0a 0a 66 69  inalize $VM}..fi
2b00: 6e 69 73 68 5f 74 65 73 74 0a                    nish_test.