System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 503c5ce206182823e253e17093eefe57f49a5997:


0000: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0010: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0020: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0030: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0040: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
0050: 0a 23 0d 0a 23 20 74 79 70 65 73 2e 65 61 67 6c  .#..# types.eagl
0060: 65 20 2d 2d 0d 0a 23 0d 0a 23 20 57 72 69 74 74  e --..#..# Writt
0070: 65 6e 20 62 79 20 4a 6f 65 20 4d 69 73 74 61 63  en by Joe Mistac
0080: 68 6b 69 6e 2e 0d 0a 23 20 52 65 6c 65 61 73 65  hkin...# Release
0090: 64 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63 20  d to the public 
00a0: 64 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20 79  domain, use at y
00b0: 6f 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a 23  our own risk!..#
00c0: 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ..##############
00d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
00e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
00f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0110: 23 0d 0a 0d 0a 70 61 63 6b 61 67 65 20 72 65 71  #....package req
0120: 75 69 72 65 20 45 61 67 6c 65 0d 0a 70 61 63 6b  uire Eagle..pack
0130: 61 67 65 20 72 65 71 75 69 72 65 20 45 61 67 6c  age require Eagl
0140: 65 2e 4c 69 62 72 61 72 79 0d 0a 70 61 63 6b 61  e.Library..packa
0150: 67 65 20 72 65 71 75 69 72 65 20 45 61 67 6c 65  ge require Eagle
0160: 2e 54 65 73 74 0d 0a 0d 0a 72 75 6e 54 65 73 74  .Test....runTest
0170: 50 72 6f 6c 6f 67 75 65 0d 0a 0d 0a 23 23 23 23  Prologue....####
0180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0190: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
01c0: 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 70  ###########....p
01d0: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 53  ackage require S
01e0: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
01f0: 65 2e 54 65 73 74 0d 0a 72 75 6e 53 51 4c 69 74  e.Test..runSQLit
0200: 65 54 65 73 74 50 72 6f 6c 6f 67 75 65 0d 0a 0d  eTestPrologue...
0210: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
0220: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0230: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0250: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0260: 0d 0a 0d 0a 70 72 6f 63 20 62 69 6e 64 56 61 6c  ....proc bindVal
0270: 75 65 43 61 6c 6c 62 61 63 6b 31 20 7b 0d 0a 20  ueCallback1 {.. 
0280: 20 20 20 20 20 20 20 63 6f 6e 76 65 72 74 20 63         convert c
0290: 6f 6d 6d 61 6e 64 20 66 6c 61 67 73 20 70 61 72  ommand flags par
02a0: 61 6d 65 74 65 72 20 74 79 70 65 4e 61 6d 65 20  ameter typeName 
02b0: 69 6e 64 65 78 20 75 73 65 72 44 61 74 61 0d 0a  index userData..
02c0: 20 20 20 20 20 20 20 20 63 6f 6d 70 6c 65 74 65          complete
02d0: 56 61 72 4e 61 6d 65 20 7d 20 7b 0d 0a 20 20 6c  VarName } {..  l
02e0: 61 70 70 65 6e 64 20 3a 3a 6c 6f 67 28 62 69 6e  append ::log(bin
02f0: 64 29 20 5b 6c 69 73 74 20 63 6f 6e 76 65 72 74  d) [list convert
0300: 20 5b 69 73 4f 62 6a 65 63 74 48 61 6e 64 6c 65   [isObjectHandle
0310: 20 24 63 6f 6e 76 65 72 74 5d 5d 0d 0a 20 20 6c   $convert]]..  l
0320: 61 70 70 65 6e 64 20 3a 3a 6c 6f 67 28 62 69 6e  append ::log(bin
0330: 64 29 20 5b 6c 69 73 74 20 63 6f 6d 6d 61 6e 64  d) [list command
0340: 20 5b 69 73 4f 62 6a 65 63 74 48 61 6e 64 6c 65   [isObjectHandle
0350: 20 24 63 6f 6d 6d 61 6e 64 5d 5d 0d 0a 20 20 6c   $command]]..  l
0360: 61 70 70 65 6e 64 20 3a 3a 6c 6f 67 28 62 69 6e  append ::log(bin
0370: 64 29 20 5b 6c 69 73 74 20 66 6c 61 67 73 20 5b  d) [list flags [
0380: 67 65 74 53 74 72 69 6e 67 46 72 6f 6d 4f 62 6a  getStringFromObj
0390: 65 63 74 48 61 6e 64 6c 65 20 24 66 6c 61 67 73  ectHandle $flags
03a0: 5d 5d 0d 0a 20 20 6c 61 70 70 65 6e 64 20 3a 3a  ]]..  lappend ::
03b0: 6c 6f 67 28 62 69 6e 64 29 20 5b 6c 69 73 74 20  log(bind) [list 
03c0: 70 61 72 61 6d 65 74 65 72 20 5b 69 73 4f 62 6a  parameter [isObj
03d0: 65 63 74 48 61 6e 64 6c 65 20 24 70 61 72 61 6d  ectHandle $param
03e0: 65 74 65 72 5d 5d 0d 0a 20 20 6c 61 70 70 65 6e  eter]]..  lappen
03f0: 64 20 3a 3a 6c 6f 67 28 62 69 6e 64 29 20 5b 6c  d ::log(bind) [l
0400: 69 73 74 20 74 79 70 65 4e 61 6d 65 20 5b 67 65  ist typeName [ge
0410: 74 53 74 72 69 6e 67 46 72 6f 6d 4f 62 6a 65 63  tStringFromObjec
0420: 74 48 61 6e 64 6c 65 20 24 74 79 70 65 4e 61 6d  tHandle $typeNam
0430: 65 5d 5d 0d 0a 20 20 6c 61 70 70 65 6e 64 20 3a  e]]..  lappend :
0440: 3a 6c 6f 67 28 62 69 6e 64 29 20 5b 6c 69 73 74  :log(bind) [list
0450: 20 69 6e 64 65 78 20 5b 67 65 74 53 74 72 69 6e   index [getStrin
0460: 67 46 72 6f 6d 4f 62 6a 65 63 74 48 61 6e 64 6c  gFromObjectHandl
0470: 65 20 24 69 6e 64 65 78 5d 5d 0d 0a 20 20 6c 61  e $index]]..  la
0480: 70 70 65 6e 64 20 3a 3a 6c 6f 67 28 62 69 6e 64  ppend ::log(bind
0490: 29 20 5b 6c 69 73 74 20 75 73 65 72 44 61 74 61  ) [list userData
04a0: 20 5b 67 65 74 53 74 72 69 6e 67 46 72 6f 6d 4f   [getStringFromO
04b0: 62 6a 65 63 74 48 61 6e 64 6c 65 20 24 75 73 65  bjectHandle $use
04c0: 72 44 61 74 61 5d 5d 0d 0a 0d 0a 20 20 69 66 20  rData]]....  if 
04d0: 7b 5b 67 65 74 53 74 72 69 6e 67 46 72 6f 6d 4f  {[getStringFromO
04e0: 62 6a 65 63 74 48 61 6e 64 6c 65 20 24 75 73 65  bjectHandle $use
04f0: 72 44 61 74 61 5d 20 3d 3d 20 33 7d 20 74 68 65  rData] == 3} the
0500: 6e 20 7b 0d 0a 20 20 20 20 75 70 76 61 72 20 31  n {..    upvar 1
0510: 20 24 63 6f 6d 70 6c 65 74 65 56 61 72 4e 61 6d   $completeVarNam
0520: 65 20 63 6f 6d 70 6c 65 74 65 3b 20 75 6e 73 65  e complete; unse
0530: 74 20 63 6f 6d 70 6c 65 74 65 0d 0a 20 20 20 20  t complete..    
0540: 65 72 72 6f 72 20 22 70 61 72 61 6d 65 74 65 72  error "parameter
0550: 20 62 69 6e 64 69 6e 67 20 63 61 6e 63 65 6c 65   binding cancele
0560: 64 22 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20  d"..  }....  if 
0570: 7b 5b 67 65 74 53 74 72 69 6e 67 46 72 6f 6d 4f  {[getStringFromO
0580: 62 6a 65 63 74 48 61 6e 64 6c 65 20 24 75 73 65  bjectHandle $use
0590: 72 44 61 74 61 5d 20 3d 3d 20 32 7d 20 74 68 65  rData] == 2} the
05a0: 6e 20 7b 0d 0a 20 20 20 20 24 70 61 72 61 6d 65  n {..    $parame
05b0: 74 65 72 20 44 62 54 79 70 65 20 53 74 72 69 6e  ter DbType Strin
05c0: 67 0d 0a 20 20 20 20 24 70 61 72 61 6d 65 74 65  g..    $paramete
05d0: 72 20 56 61 6c 75 65 20 63 75 73 74 6f 6d 0d 0a  r Value custom..
05e0: 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 5b 67 65    }....  if {[ge
05f0: 74 53 74 72 69 6e 67 46 72 6f 6d 4f 62 6a 65 63  tStringFromObjec
0600: 74 48 61 6e 64 6c 65 20 24 75 73 65 72 44 61 74  tHandle $userDat
0610: 61 5d 20 3d 3d 20 31 7d 20 74 68 65 6e 20 7b 0d  a] == 1} then {.
0620: 0a 20 20 20 20 75 70 76 61 72 20 31 20 24 63 6f  .    upvar 1 $co
0630: 6d 70 6c 65 74 65 56 61 72 4e 61 6d 65 20 63 6f  mpleteVarName co
0640: 6d 70 6c 65 74 65 0d 0a 20 20 20 20 73 65 74 20  mplete..    set 
0650: 63 6f 6d 70 6c 65 74 65 20 5b 6f 62 6a 65 63 74  complete [object
0660: 20 69 6e 76 6f 6b 65 20 2d 63 72 65 61 74 65 20   invoke -create 
0670: 53 79 73 74 65 6d 2e 42 6f 6f 6c 65 61 6e 20 50  System.Boolean P
0680: 61 72 73 65 20 54 72 75 65 5d 0d 0a 20 20 7d 0d  arse True]..  }.
0690: 0a 7d 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23  .}....##########
06a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
06b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
06c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
06d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
06e0: 23 23 23 23 23 0d 0a 0d 0a 70 72 6f 63 20 72 65  #####....proc re
06f0: 61 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 31  adValueCallback1
0700: 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e 76   {..        conv
0710: 65 72 74 20 64 61 74 61 52 65 61 64 65 72 20 66  ert dataReader f
0720: 6c 61 67 73 20 65 76 65 6e 74 41 72 67 73 20 74  lags eventArgs t
0730: 79 70 65 4e 61 6d 65 20 69 6e 64 65 78 20 75 73  ypeName index us
0740: 65 72 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20  erData..        
0750: 63 6f 6d 70 6c 65 74 65 56 61 72 4e 61 6d 65 20  completeVarName 
0760: 7d 20 7b 0d 0a 20 20 6c 61 70 70 65 6e 64 20 3a  } {..  lappend :
0770: 3a 6c 6f 67 28 72 65 61 64 29 20 5b 6c 69 73 74  :log(read) [list
0780: 20 63 6f 6e 76 65 72 74 20 5b 69 73 4f 62 6a 65   convert [isObje
0790: 63 74 48 61 6e 64 6c 65 20 24 63 6f 6e 76 65 72  ctHandle $conver
07a0: 74 5d 5d 0d 0a 20 20 6c 61 70 70 65 6e 64 20 3a  t]]..  lappend :
07b0: 3a 6c 6f 67 28 72 65 61 64 29 20 5b 6c 69 73 74  :log(read) [list
07c0: 20 64 61 74 61 52 65 61 64 65 72 20 5b 69 73 4f   dataReader [isO
07d0: 62 6a 65 63 74 48 61 6e 64 6c 65 20 24 64 61 74  bjectHandle $dat
07e0: 61 52 65 61 64 65 72 5d 5d 0d 0a 20 20 6c 61 70  aReader]]..  lap
07f0: 70 65 6e 64 20 3a 3a 6c 6f 67 28 72 65 61 64 29  pend ::log(read)
0800: 20 5b 6c 69 73 74 20 66 6c 61 67 73 20 5b 67 65   [list flags [ge
0810: 74 53 74 72 69 6e 67 46 72 6f 6d 4f 62 6a 65 63  tStringFromObjec
0820: 74 48 61 6e 64 6c 65 20 24 66 6c 61 67 73 5d 5d  tHandle $flags]]
0830: 0d 0a 20 20 6c 61 70 70 65 6e 64 20 3a 3a 6c 6f  ..  lappend ::lo
0840: 67 28 72 65 61 64 29 20 5b 6c 69 73 74 20 65 76  g(read) [list ev
0850: 65 6e 74 41 72 67 73 20 5b 69 73 4f 62 6a 65 63  entArgs [isObjec
0860: 74 48 61 6e 64 6c 65 20 24 65 76 65 6e 74 41 72  tHandle $eventAr
0870: 67 73 5d 5d 0d 0a 20 20 6c 61 70 70 65 6e 64 20  gs]]..  lappend 
0880: 3a 3a 6c 6f 67 28 72 65 61 64 29 20 5b 6c 69 73  ::log(read) [lis
0890: 74 20 74 79 70 65 4e 61 6d 65 20 5b 67 65 74 53  t typeName [getS
08a0: 74 72 69 6e 67 46 72 6f 6d 4f 62 6a 65 63 74 48  tringFromObjectH
08b0: 61 6e 64 6c 65 20 24 74 79 70 65 4e 61 6d 65 5d  andle $typeName]
08c0: 5d 0d 0a 20 20 6c 61 70 70 65 6e 64 20 3a 3a 6c  ]..  lappend ::l
08d0: 6f 67 28 72 65 61 64 29 20 5b 6c 69 73 74 20 69  og(read) [list i
08e0: 6e 64 65 78 20 5b 67 65 74 53 74 72 69 6e 67 46  ndex [getStringF
08f0: 72 6f 6d 4f 62 6a 65 63 74 48 61 6e 64 6c 65 20  romObjectHandle 
0900: 24 69 6e 64 65 78 5d 5d 0d 0a 20 20 6c 61 70 70  $index]]..  lapp
0910: 65 6e 64 20 3a 3a 6c 6f 67 28 72 65 61 64 29 20  end ::log(read) 
0920: 5b 6c 69 73 74 20 75 73 65 72 44 61 74 61 20 5b  [list userData [
0930: 67 65 74 53 74 72 69 6e 67 46 72 6f 6d 4f 62 6a  getStringFromObj
0940: 65 63 74 48 61 6e 64 6c 65 20 24 75 73 65 72 44  ectHandle $userD
0950: 61 74 61 5d 5d 0d 0a 0d 0a 20 20 69 66 20 7b 5b  ata]]....  if {[
0960: 67 65 74 53 74 72 69 6e 67 46 72 6f 6d 4f 62 6a  getStringFromObj
0970: 65 63 74 48 61 6e 64 6c 65 20 24 75 73 65 72 44  ectHandle $userD
0980: 61 74 61 5d 20 3d 3d 20 33 7d 20 74 68 65 6e 20  ata] == 3} then 
0990: 7b 0d 0a 20 20 20 20 75 70 76 61 72 20 31 20 24  {..    upvar 1 $
09a0: 63 6f 6d 70 6c 65 74 65 56 61 72 4e 61 6d 65 20  completeVarName 
09b0: 63 6f 6d 70 6c 65 74 65 3b 20 75 6e 73 65 74 20  complete; unset 
09c0: 63 6f 6d 70 6c 65 74 65 0d 0a 20 20 20 20 65 72  complete..    er
09d0: 72 6f 72 20 22 72 65 61 64 69 6e 67 20 6f 66 20  ror "reading of 
09e0: 76 61 6c 75 65 20 63 61 6e 63 65 6c 65 64 22 0d  value canceled".
09f0: 0a 20 20 7d 0d 0a 0d 0a 20 20 69 66 20 7b 5b 67  .  }....  if {[g
0a00: 65 74 53 74 72 69 6e 67 46 72 6f 6d 4f 62 6a 65  etStringFromObje
0a10: 63 74 48 61 6e 64 6c 65 20 24 75 73 65 72 44 61  ctHandle $userDa
0a20: 74 61 5d 20 3d 3d 20 31 7d 20 74 68 65 6e 20 7b  ta] == 1} then {
0a30: 0d 0a 20 20 20 20 75 70 76 61 72 20 31 20 24 63  ..    upvar 1 $c
0a40: 6f 6d 70 6c 65 74 65 56 61 72 4e 61 6d 65 20 63  ompleteVarName c
0a50: 6f 6d 70 6c 65 74 65 0d 0a 20 20 20 20 73 65 74  omplete..    set
0a60: 20 63 6f 6d 70 6c 65 74 65 20 5b 6f 62 6a 65 63   complete [objec
0a70: 74 20 69 6e 76 6f 6b 65 20 2d 63 72 65 61 74 65  t invoke -create
0a80: 20 53 79 73 74 65 6d 2e 42 6f 6f 6c 65 61 6e 20   System.Boolean 
0a90: 50 61 72 73 65 20 54 72 75 65 5d 0d 0a 20 20 7d  Parse True]..  }
0aa0: 0d 0a 7d 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23  ..}....#########
0ab0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0ac0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0ad0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0ae0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0af0: 23 23 23 23 23 23 0d 0a 0d 0a 72 75 6e 54 65 73  ######....runTes
0b00: 74 20 7b 74 65 73 74 20 74 79 70 65 73 2d 31 2e  t {test types-1.
0b10: 31 20 7b 74 79 70 65 20 63 61 6c 6c 62 61 63 6b  1 {type callback
0b20: 73 20 6d 61 6e 61 67 65 6d 65 6e 74 7d 20 2d 73  s management} -s
0b30: 65 74 75 70 20 7b 0d 0a 20 20 73 65 74 75 70 44  etup {..  setupD
0b40: 62 20 5b 73 65 74 20 66 69 6c 65 4e 61 6d 65 20  b [set fileName 
0b50: 74 79 70 65 73 2d 31 2e 31 2e 64 62 5d 0d 0a 7d  types-1.1.db]..}
0b60: 20 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 65 74 20   -body {..  set 
0b70: 63 6f 6e 6e 65 63 74 69 6f 6e 20 5b 67 65 74 44  connection [getD
0b80: 62 43 6f 6e 6e 65 63 74 69 6f 6e 5d 0d 0a 0d 0a  bConnection]....
0b90: 20 20 73 65 74 20 72 65 73 75 6c 74 20 5b 6c 69    set result [li
0ba0: 73 74 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64  st]....  lappend
0bb0: 20 72 65 73 75 6c 74 20 5b 24 63 6f 6e 6e 65 63   result [$connec
0bc0: 74 69 6f 6e 20 43 6c 65 61 72 54 79 70 65 43 61  tion ClearTypeCa
0bd0: 6c 6c 62 61 63 6b 73 5d 0d 0a 0d 0a 20 20 73 65  llbacks]....  se
0be0: 74 20 74 79 70 65 43 61 6c 6c 62 61 63 6b 73 28  t typeCallbacks(
0bf0: 31 29 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b  1) [object invok
0c00: 65 20 5c 0d 0a 20 20 20 20 20 20 53 79 73 74 65  e \..      Syste
0c10: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 53 51  m.Data.SQLite.SQ
0c20: 4c 69 74 65 54 79 70 65 43 61 6c 6c 62 61 63 6b  LiteTypeCallback
0c30: 73 20 43 72 65 61 74 65 20 5c 0d 0a 20 20 20 20  s Create \..    
0c40: 20 20 6e 75 6c 6c 20 6e 75 6c 6c 20 6e 75 6c 6c    null null null
0c50: 20 6e 75 6c 6c 5d 0d 0a 0d 0a 20 20 73 65 74 20   null]....  set 
0c60: 74 79 70 65 43 61 6c 6c 62 61 63 6b 73 28 32 29  typeCallbacks(2)
0c70: 20 6e 75 6c 6c 0d 0a 0d 0a 20 20 6c 61 70 70 65   null....  lappe
0c80: 6e 64 20 72 65 73 75 6c 74 20 5b 24 63 6f 6e 6e  nd result [$conn
0c90: 65 63 74 69 6f 6e 20 53 65 74 54 79 70 65 43 61  ection SetTypeCa
0ca0: 6c 6c 62 61 63 6b 73 20 54 45 53 54 20 24 74 79  llbacks TEST $ty
0cb0: 70 65 43 61 6c 6c 62 61 63 6b 73 28 31 29 5d 0d  peCallbacks(1)].
0cc0: 0a 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c  .  lappend resul
0cd0: 74 20 5b 24 63 6f 6e 6e 65 63 74 69 6f 6e 20 54  t [$connection T
0ce0: 72 79 47 65 74 54 79 70 65 43 61 6c 6c 62 61 63  ryGetTypeCallbac
0cf0: 6b 73 20 54 45 53 54 20 74 79 70 65 43 61 6c 6c  ks TEST typeCall
0d00: 62 61 63 6b 73 28 32 29 5d 0d 0a 20 20 6c 61 70  backs(2)]..  lap
0d10: 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 24 63 6f  pend result [$co
0d20: 6e 6e 65 63 74 69 6f 6e 20 43 6c 65 61 72 54 79  nnection ClearTy
0d30: 70 65 43 61 6c 6c 62 61 63 6b 73 5d 0d 0a 20 20  peCallbacks]..  
0d40: 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b  lappend result [
0d50: 24 63 6f 6e 6e 65 63 74 69 6f 6e 20 53 65 74 54  $connection SetT
0d60: 79 70 65 43 61 6c 6c 62 61 63 6b 73 20 54 45 53  ypeCallbacks TES
0d70: 54 20 24 74 79 70 65 43 61 6c 6c 62 61 63 6b 73  T $typeCallbacks
0d80: 28 31 29 5d 0d 0a 20 20 6c 61 70 70 65 6e 64 20  (1)]..  lappend 
0d90: 72 65 73 75 6c 74 20 5b 65 78 70 72 20 7b 24 74  result [expr {$t
0da0: 79 70 65 43 61 6c 6c 62 61 63 6b 73 28 31 29 20  ypeCallbacks(1) 
0db0: 65 71 20 24 74 79 70 65 43 61 6c 6c 62 61 63 6b  eq $typeCallback
0dc0: 73 28 32 29 7d 5d 0d 0a 0d 0a 20 20 73 65 74 20  s(2)}]....  set 
0dd0: 72 65 73 75 6c 74 0d 0a 7d 20 2d 63 6c 65 61 6e  result..} -clean
0de0: 75 70 20 7b 0d 0a 20 20 66 72 65 65 44 62 43 6f  up {..  freeDbCo
0df0: 6e 6e 65 63 74 69 6f 6e 0d 0a 0d 0a 20 20 63 6c  nnection....  cl
0e00: 65 61 6e 75 70 44 62 20 24 66 69 6c 65 4e 61 6d  eanupDb $fileNam
0e10: 65 0d 0a 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f  e....  unset -no
0e20: 63 6f 6d 70 6c 61 69 6e 20 74 79 70 65 43 61 6c  complain typeCal
0e30: 6c 62 61 63 6b 73 0d 0a 20 20 75 6e 73 65 74 20  lbacks..  unset 
0e40: 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72 65 73 75  -nocomplain resu
0e50: 6c 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 64 62  lt connection db
0e60: 20 66 69 6c 65 4e 61 6d 65 0d 0a 7d 20 2d 63 6f   fileName..} -co
0e70: 6e 73 74 72 61 69 6e 74 73 20 7b 65 61 67 6c 65  nstraints {eagle
0e80: 20 63 6f 6d 6d 61 6e 64 2e 6f 62 6a 65 63 74 20   command.object 
0e90: 6d 6f 6e 6f 42 75 67 32 38 20 63 6f 6d 6d 61 6e  monoBug28 comman
0ea0: 64 2e 73 71 6c 20 63 6f 6d 70 69 6c 65 2e 44 41  d.sql compile.DA
0eb0: 54 41 20 53 51 4c 69 74 65 5c 0d 0a 53 79 73 74  TA SQLite\..Syst
0ec0: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 7d 20  em.Data.SQLite} 
0ed0: 2d 72 65 73 75 6c 74 20 7b 30 20 54 72 75 65 20  -result {0 True 
0ee0: 54 72 75 65 20 31 20 54 72 75 65 20 54 72 75 65  True 1 True True
0ef0: 7d 7d 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23  }}....##########
0f00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f40: 23 23 23 23 23 0d 0a 0d 0a 73 65 74 20 72 65 61  #####....set rea
0f50: 64 41 72 67 73 20 5b 6c 69 73 74 20 5c 0d 0a 20  dArgs [list \.. 
0f60: 20 20 20 63 6f 6e 76 65 72 74 20 64 61 74 61 52     convert dataR
0f70: 65 61 64 65 72 20 66 6c 61 67 73 20 65 76 65 6e  eader flags even
0f80: 74 41 72 67 73 20 74 79 70 65 4e 61 6d 65 20 69  tArgs typeName i
0f90: 6e 64 65 78 20 75 73 65 72 44 61 74 61 20 5c 0d  ndex userData \.
0fa0: 0a 20 20 20 20 63 6f 6d 70 6c 65 74 65 56 61 72  .    completeVar
0fb0: 4e 61 6d 65 5d 0d 0a 0d 0a 73 65 74 20 70 61 72  Name]....set par
0fc0: 61 6d 73 20 5b 6c 69 73 74 20 5c 0d 0a 20 20 20  ams [list \..   
0fd0: 20 5b 6c 69 73 74 20 42 6f 6f 6c 65 61 6e 20 20   [list Boolean  
0fe0: 20 20 20 20 20 20 20 47 65 74 42 6f 6f 6c 65 61         GetBoolea
0ff0: 6e 20 20 20 20 66 61 6c 73 65 20 20 20 42 6f 6f  n    false   Boo
1000: 6c 65 61 6e 56 61 6c 75 65 20 20 20 20 74 72 75  leanValue    tru
1010: 65 20 20 20 20 30 5d 20 5c 0d 0a 20 20 20 20 5b  e    0] \..    [
1020: 6c 69 73 74 20 42 79 74 65 20 20 20 20 20 20 20  list Byte       
1030: 20 20 20 20 20 47 65 74 42 79 74 65 20 20 20 20       GetByte    
1040: 20 20 20 66 61 6c 73 65 20 20 20 42 79 74 65 56     false   ByteV
1050: 61 6c 75 65 20 20 20 20 20 20 20 74 72 75 65 20  alue       true 
1060: 20 20 20 30 5d 20 5c 0d 0a 20 20 20 20 5b 6c 69     0] \..    [li
1070: 73 74 20 42 79 74 65 20 20 20 20 20 20 20 20 20  st Byte         
1080: 20 20 20 47 65 74 42 79 74 65 73 20 20 20 20 20     GetBytes     
1090: 20 74 72 75 65 20 20 20 20 42 79 74 65 73 56 61   true    BytesVa
10a0: 6c 75 65 20 20 20 20 20 20 66 61 6c 73 65 20 20  lue      false  
10b0: 20 30 5d 20 5c 0d 0a 20 20 20 20 5b 6c 69 73 74   0] \..    [list
10c0: 20 43 68 61 72 20 20 20 20 20 20 20 20 20 20 20   Char           
10d0: 20 47 65 74 43 68 61 72 20 20 20 20 20 20 20 66   GetChar       f
10e0: 61 6c 73 65 20 20 20 43 68 61 72 56 61 6c 75 65  alse   CharValue
10f0: 20 20 20 20 20 20 20 74 72 75 65 20 20 20 20 30         true    0
1100: 5d 20 5c 0d 0a 20 20 20 20 5b 6c 69 73 74 20 43  ] \..    [list C
1110: 68 61 72 20 20 20 20 20 20 20 20 20 20 20 20 47  har            G
1120: 65 74 43 68 61 72 73 20 20 20 20 20 20 74 72 75  etChars      tru
1130: 65 20 20 20 20 43 68 61 72 73 56 61 6c 75 65 20  e    CharsValue 
1140: 20 20 20 20 20 66 61 6c 73 65 20 20 20 30 5d 20       false   0] 
1150: 5c 0d 0a 20 20 20 20 5b 6c 69 73 74 20 44 61 74  \..    [list Dat
1160: 65 54 69 6d 65 20 20 20 20 20 20 20 20 47 65 74  eTime        Get
1170: 44 61 74 65 54 69 6d 65 20 20 20 66 61 6c 73 65  DateTime   false
1180: 20 20 20 44 61 74 65 54 69 6d 65 56 61 6c 75 65     DateTimeValue
1190: 20 20 20 74 72 75 65 20 20 20 20 30 5d 20 5c 0d     true    0] \.
11a0: 0a 20 20 20 20 5b 6c 69 73 74 20 44 65 63 69 6d  .    [list Decim
11b0: 61 6c 20 20 20 20 20 20 20 20 20 47 65 74 44 65  al         GetDe
11c0: 63 69 6d 61 6c 20 20 20 20 66 61 6c 73 65 20 20  cimal    false  
11d0: 20 44 65 63 69 6d 61 6c 56 61 6c 75 65 20 20 20   DecimalValue   
11e0: 20 74 72 75 65 20 20 20 20 30 5d 20 5c 0d 0a 20   true    0] \.. 
11f0: 20 20 20 5b 6c 69 73 74 20 44 6f 75 62 6c 65 20     [list Double 
1200: 20 20 20 20 20 20 20 20 20 47 65 74 44 6f 75 62           GetDoub
1210: 6c 65 20 20 20 20 20 66 61 6c 73 65 20 20 20 44  le     false   D
1220: 6f 75 62 6c 65 56 61 6c 75 65 20 20 20 20 20 74  oubleValue     t
1230: 72 75 65 20 20 20 20 30 5d 20 5c 0d 0a 20 20 20  rue    0] \..   
1240: 20 5b 6c 69 73 74 20 53 69 6e 67 6c 65 20 20 20   [list Single   
1250: 20 20 20 20 20 20 20 47 65 74 46 6c 6f 61 74 20         GetFloat 
1260: 20 20 20 20 20 66 61 6c 73 65 20 20 20 46 6c 6f       false   Flo
1270: 61 74 56 61 6c 75 65 20 20 20 20 20 20 74 72 75  atValue      tru
1280: 65 20 20 20 20 30 5d 20 5c 0d 0a 20 20 20 20 5b  e    0] \..    [
1290: 6c 69 73 74 20 47 75 69 64 20 20 20 20 20 20 20  list Guid       
12a0: 20 20 20 20 20 47 65 74 47 75 69 64 20 20 20 20       GetGuid    
12b0: 20 20 20 66 61 6c 73 65 20 20 20 47 75 69 64 56     false   GuidV
12c0: 61 6c 75 65 20 20 20 20 20 20 20 74 72 75 65 20  alue       true 
12d0: 20 20 20 5c 0d 0a 20 20 20 20 20 20 20 20 30 30     \..        00
12e0: 30 30 30 30 30 30 2d 30 30 30 30 2d 30 30 30 30  000000-0000-0000
12f0: 2d 30 30 30 30 2d 30 30 30 30 30 30 30 30 30 30  -0000-0000000000
1300: 30 30 5d 20 5c 0d 0a 20 20 20 20 5b 6c 69 73 74  00] \..    [list
1310: 20 49 6e 74 31 36 20 20 20 20 20 20 20 20 20 20   Int16          
1320: 20 47 65 74 49 6e 74 31 36 20 20 20 20 20 20 66   GetInt16      f
1330: 61 6c 73 65 20 20 20 49 6e 74 31 36 56 61 6c 75  alse   Int16Valu
1340: 65 20 20 20 20 20 20 74 72 75 65 20 20 20 20 30  e      true    0
1350: 5d 20 5c 0d 0a 20 20 20 20 5b 6c 69 73 74 20 49  ] \..    [list I
1360: 6e 74 33 32 20 20 20 20 20 20 20 20 20 20 20 47  nt32           G
1370: 65 74 49 6e 74 33 32 20 20 20 20 20 20 66 61 6c  etInt32      fal
1380: 73 65 20 20 20 49 6e 74 33 32 56 61 6c 75 65 20  se   Int32Value 
1390: 20 20 20 20 20 74 72 75 65 20 20 20 20 30 5d 20       true    0] 
13a0: 5c 0d 0a 20 20 20 20 5b 6c 69 73 74 20 49 6e 74  \..    [list Int
13b0: 36 34 20 20 20 20 20 20 20 20 20 20 20 47 65 74  64           Get
13c0: 49 6e 74 36 34 20 20 20 20 20 20 66 61 6c 73 65  Int64      false
13d0: 20 20 20 49 6e 74 36 34 56 61 6c 75 65 20 20 20     Int64Value   
13e0: 20 20 20 74 72 75 65 20 20 20 20 30 5d 20 5c 0d     true    0] \.
13f0: 0a 20 20 20 20 5b 6c 69 73 74 20 53 74 72 69 6e  .    [list Strin
1400: 67 20 20 20 20 20 20 20 20 20 20 47 65 74 53 74  g          GetSt
1410: 72 69 6e 67 20 20 20 20 20 66 61 6c 73 65 20 20  ring     false  
1420: 20 53 74 72 69 6e 67 56 61 6c 75 65 20 20 20 20   StringValue    
1430: 20 66 61 6c 73 65 20 20 20 6e 75 6c 6c 5d 20 5c   false   null] \
1440: 0d 0a 20 20 20 20 5b 6c 69 73 74 20 4f 62 6a 65  ..    [list Obje
1450: 63 74 20 20 20 20 20 20 20 20 20 20 47 65 74 56  ct          GetV
1460: 61 6c 75 65 20 20 20 20 20 20 66 61 6c 73 65 20  alue      false 
1470: 20 20 56 61 6c 75 65 20 20 20 20 20 20 20 20 20    Value         
1480: 20 20 66 61 6c 73 65 20 20 20 6e 75 6c 6c 5d 20    false   null] 
1490: 5c 0d 0a 20 20 20 20 5b 6c 69 73 74 20 53 44 53  \..    [list SDS
14a0: 2e 53 51 4c 69 74 65 42 6c 6f 62 20 20 47 65 74  .SQLiteBlob  Get
14b0: 42 6c 6f 62 20 20 20 20 20 20 20 66 61 6c 73 65  Blob       false
14c0: 20 20 20 42 6c 6f 62 56 61 6c 75 65 20 20 20 20     BlobValue    
14d0: 20 20 20 66 61 6c 73 65 20 20 20 30 5d 5d 0d 0a     false   0]]..
14e0: 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ..##############
14f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1500: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1510: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1520: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1530: 23 0d 0a 0d 0a 73 65 74 20 65 78 70 65 63 74 65  #....set expecte
1540: 64 52 65 73 75 6c 74 73 20 5b 6c 69 73 74 20 5c  dResults [list \
1550: 0d 0a 20 20 20 20 7b 46 61 6c 73 65 20 46 61 6c  ..    {False Fal
1560: 73 65 20 54 72 75 65 20 46 61 6c 73 65 20 46 61  se True False Fa
1570: 6c 73 65 20 46 61 6c 73 65 20 46 61 6c 73 65 20  lse False False 
1580: 46 61 6c 73 65 7d 20 5c 0d 0a 20 20 20 20 7b 30  False} \..    {0
1590: 20 30 20 31 20 30 20 30 20 30 20 30 20 30 7d 20   0 1 0 0 0 0 0} 
15a0: 5c 0d 0a 20 20 20 20 7b 30 20 31 20 34 38 20 31  \..    {0 1 48 1
15b0: 20 34 39 20 33 20 7b 34 39 20 34 36 20 35 30 7d   49 3 {49 46 50}
15c0: 20 35 20 7b 31 31 36 20 31 30 34 20 31 31 34 5c   5 {116 104 114\
15d0: 0d 0a 20 20 20 20 20 20 20 20 31 30 31 20 31 30  ..        101 10
15e0: 31 7d 20 31 20 34 20 32 37 20 7b 35 30 20 34 38  1} 1 4 27 {50 48
15f0: 20 34 39 20 35 34 20 34 35 20 34 38 20 35 34 5c   49 54 45 48 54\
1600: 0d 0a 20 20 20 20 20 20 20 20 34 35 20 34 39 20  ..        45 49 
1610: 35 37 20 33 32 20 34 39 20 35 37 20 35 38 20 35  57 32 49 57 58 5
1620: 33 20 34 38 20 35 38 20 34 38 20 35 32 20 34 36  3 48 58 48 52 46
1630: 5c 0d 0a 20 20 20 20 20 20 20 20 34 39 20 35 30  \..        49 50
1640: 20 35 31 20 35 32 20 35 33 20 35 34 20 35 35 7d   51 52 53 54 55}
1650: 20 33 36 20 7b 35 35 20 35 32 20 31 30 32 20 34   36 {55 52 102 4
1660: 39 5c 0d 0a 20 20 20 20 20 20 20 20 31 30 32 20  9\..        102 
1670: 35 32 20 34 38 20 35 30 20 34 35 20 31 30 30 20  52 48 50 45 100 
1680: 31 30 30 20 31 30 31 20 31 30 32 20 34 35 20 35  100 101 102 45 5
1690: 32 5c 0d 0a 20 20 20 20 20 20 20 20 34 38 20 35  2\..        48 5
16a0: 30 20 35 35 20 34 35 20 39 37 20 35 35 20 35 36  0 55 45 97 55 56
16b0: 20 31 30 32 20 34 35 20 35 31 20 35 36 20 35 32   102 45 51 56 52
16c0: 20 35 35 5c 0d 0a 20 20 20 20 20 20 20 20 31 30   55\..        10
16d0: 32 20 39 37 20 35 37 20 35 35 20 39 38 20 35 36  2 97 57 55 98 56
16e0: 20 35 31 20 34 38 7d 7d 20 5c 0d 0a 20 20 20 20   51 48}} \..    
16f0: 22 3c 4e 55 4c 3e 20 3c 4e 55 4c 3e 20 5c 78 30  "<NUL> <NUL> \x0
1700: 31 20 3c 4e 55 4c 3e 20 3c 4e 55 4c 3e 20 3c 4e  1 <NUL> <NUL> <N
1710: 55 4c 3e 20 3c 4e 55 4c 3e 20 3c 4e 55 4c 3e 22  UL> <NUL> <NUL>"
1720: 20 5c 0d 0a 20 20 20 20 22 30 20 31 20 30 20 31   \..    "0 1 0 1
1730: 20 31 20 33 20 7b 31 20 2e 20 32 7d 20 31 20 74   1 3 {1 . 2} 1 t
1740: 20 31 20 5c 78 30 34 20 31 20 32 20 31 20 37 22   1 \x04 1 2 1 7"
1750: 20 5c 0d 0a 20 20 20 20 7b 7b 30 30 30 31 2d 30   \..    {{0001-0
1760: 31 2d 30 31 20 30 30 3a 30 30 3a 30 30 5a 7d 20  1-01 00:00:00Z} 
1770: 7b 30 30 30 31 2d 30 31 2d 30 31 20 30 30 3a 30  {0001-01-01 00:0
1780: 30 3a 30 30 5a 7d 5c 0d 0a 20 20 20 20 20 20 20  0:00Z}\..       
1790: 20 7b 30 30 30 31 2d 30 31 2d 30 31 20 30 30 3a   {0001-01-01 00:
17a0: 30 30 3a 30 30 5a 7d 20 7b 30 30 30 31 2d 30 31  00:00Z} {0001-01
17b0: 2d 30 31 20 30 30 3a 30 30 3a 30 30 5a 7d 5c 0d  -01 00:00:00Z}\.
17c0: 0a 20 20 20 20 20 20 20 20 7b 30 30 30 31 2d 30  .        {0001-0
17d0: 31 2d 30 31 20 30 30 3a 30 30 3a 30 30 5a 7d 20  1-01 00:00:00Z} 
17e0: 7b 30 30 30 31 2d 30 31 2d 30 31 20 30 30 3a 30  {0001-01-01 00:0
17f0: 30 3a 30 30 5a 7d 5c 0d 0a 20 20 20 20 20 20 20  0:00Z}\..       
1800: 20 7b 32 30 31 36 2d 30 36 2d 31 39 20 31 39 3a   {2016-06-19 19:
1810: 35 30 3a 30 34 2e 31 32 33 34 35 36 37 5a 7d 20  50:04.1234567Z} 
1820: 7b 30 30 30 31 2d 30 31 2d 30 31 5c 0d 0a 20 20  {0001-01-01\..  
1830: 20 20 20 20 20 20 30 30 3a 30 30 3a 30 30 5a 7d        00:00:00Z}
1840: 7d 20 5c 0d 0a 20 20 20 20 7b 30 20 30 20 31 20  } \..    {0 0 1 
1850: 31 2e 32 20 30 20 30 20 30 20 30 7d 20 5c 0d 0a  1.2 0 0 0 0} \..
1860: 20 20 20 20 7b 30 20 30 20 31 20 31 2e 32 20 30      {0 0 1 1.2 0
1870: 20 30 20 30 20 30 7d 20 5c 0d 0a 20 20 20 20 7b   0 0 0} \..    {
1880: 30 20 30 20 31 20 31 2e 32 20 30 20 30 20 30 20  0 0 1 1.2 0 0 0 
1890: 30 7d 20 5c 0d 0a 20 20 20 20 7b 30 30 30 30 30  0} \..    {00000
18a0: 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30  000-0000-0000-00
18b0: 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 30 5c  00-000000000000\
18c0: 0d 0a 20 20 20 20 20 20 20 20 30 30 30 30 30 30  ..        000000
18d0: 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 30  00-0000-0000-000
18e0: 30 2d 30 30 30 30 30 30 30 30 30 30 30 30 5c 0d  0-000000000000\.
18f0: 0a 20 20 20 20 20 20 20 20 30 30 30 30 30 30 30  .        0000000
1900: 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 30 30  0-0000-0000-0000
1910: 2d 30 30 30 30 30 30 30 30 30 30 30 30 5c 0d 0a  -000000000000\..
1920: 20 20 20 20 20 20 20 20 30 30 30 30 30 30 30 30          00000000
1930: 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d  -0000-0000-0000-
1940: 30 30 30 30 30 30 30 30 30 30 30 30 5c 0d 0a 20  000000000000\.. 
1950: 20 20 20 20 20 20 20 30 30 30 30 30 30 30 30 2d         00000000-
1960: 30 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30  0000-0000-0000-0
1970: 30 30 30 30 30 30 30 30 30 30 30 5c 0d 0a 20 20  00000000000\..  
1980: 20 20 20 20 20 20 30 30 30 36 30 35 30 34 2d 30        00060504-0
1990: 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30  000-0000-0000-00
19a0: 30 30 30 30 30 30 30 30 30 30 5c 0d 0a 20 20 20  0000000000\..   
19b0: 20 20 20 20 20 30 30 30 30 30 30 30 30 2d 30 30       00000000-00
19c0: 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 30  00-0000-0000-000
19d0: 30 30 30 30 30 30 30 30 30 5c 0d 0a 20 20 20 20  000000000\..    
19e0: 20 20 20 20 37 34 66 31 66 34 30 32 2d 64 64 65      74f1f402-dde
19f0: 66 2d 34 30 32 37 2d 61 37 38 66 2d 33 38 34 37  f-4027-a78f-3847
1a00: 66 61 39 37 62 38 33 30 7d 20 5c 0d 0a 20 20 20  fa97b830} \..   
1a10: 20 7b 30 20 30 20 31 20 30 20 30 20 30 20 30 20   {0 0 1 0 0 0 0 
1a20: 30 7d 20 5c 0d 0a 20 20 20 20 7b 30 20 30 20 31  0} \..    {0 0 1
1a30: 20 30 20 30 20 30 20 30 20 30 7d 20 5c 0d 0a 20   0 0 0 0 0} \.. 
1a40: 20 20 20 7b 30 20 30 20 31 20 30 20 30 20 30 20     {0 0 1 0 0 0 
1a50: 30 20 30 7d 20 5c 0d 0a 20 20 20 20 22 3c 4e 55  0 0} \..    "<NU
1a60: 4c 3e 20 3c 4e 55 4c 3e 20 3c 4e 55 4c 3e 20 3c  L> <NUL> <NUL> <
1a70: 4e 55 4c 3e 20 74 68 72 65 65 20 5c 78 30 34 5c  NUL> three \x04\
1a80: 78 30 35 5c 78 30 36 5c 0d 0a 20 20 20 20 20 20  x05\x06\..      
1a90: 20 20 7b 32 30 31 36 2d 30 36 2d 31 39 20 31 39    {2016-06-19 19
1aa0: 3a 35 30 3a 30 34 2e 31 32 33 34 35 36 37 7d 5c  :50:04.1234567}\
1ab0: 0d 0a 20 20 20 20 20 20 20 20 37 34 66 31 66 34  ..        74f1f4
1ac0: 30 32 2d 64 64 65 66 2d 34 30 32 37 2d 61 37 38  02-ddef-4027-a78
1ad0: 66 2d 33 38 34 37 66 61 39 37 62 38 33 30 22 20  f-3847fa97b830" 
1ae0: 5c 0d 0a 20 20 20 20 7b 7b 7d 20 30 20 31 20 31  \..    {{} 0 1 1
1af0: 2e 32 20 74 68 72 65 65 20 7b 34 20 35 20 36 7d  .2 three {4 5 6}
1b00: 20 7b 32 30 31 36 2d 30 36 2d 31 39 5c 0d 0a 20   {2016-06-19\.. 
1b10: 20 20 20 20 20 20 20 31 39 3a 35 30 3a 30 34 2e         19:50:04.
1b20: 31 32 33 34 35 36 37 7d 5c 0d 0a 20 20 20 20 20  1234567}\..     
1b30: 20 20 20 37 34 66 31 66 34 30 32 2d 64 64 65 66     74f1f402-ddef
1b40: 2d 34 30 32 37 2d 61 37 38 66 2d 33 38 34 37 66  -4027-a78f-3847f
1b50: 61 39 37 62 38 33 30 7d 20 5c 0d 0a 20 20 20 20  a97b830} \..    
1b60: 7b 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c  {System.Data.SQL
1b70: 69 74 65 2e 53 51 4c 69 74 65 42 6c 6f 62 20 53  ite.SQLiteBlob S
1b80: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
1b90: 65 2e 53 51 4c 69 74 65 42 6c 6f 62 5c 0d 0a 20  e.SQLiteBlob\.. 
1ba0: 20 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61         System.Da
1bb0: 74 61 2e 53 51 4c 69 74 65 2e 53 51 4c 69 74 65  ta.SQLite.SQLite
1bc0: 42 6c 6f 62 20 53 79 73 74 65 6d 2e 44 61 74 61  Blob System.Data
1bd0: 2e 53 51 4c 69 74 65 2e 53 51 4c 69 74 65 42 6c  .SQLite.SQLiteBl
1be0: 6f 62 5c 0d 0a 20 20 20 20 20 20 20 20 53 79 73  ob\..        Sys
1bf0: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e  tem.Data.SQLite.
1c00: 53 51 4c 69 74 65 42 6c 6f 62 20 53 79 73 74 65  SQLiteBlob Syste
1c10: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 53 51  m.Data.SQLite.SQ
1c20: 4c 69 74 65 42 6c 6f 62 5c 0d 0a 20 20 20 20 20  LiteBlob\..     
1c30: 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53     System.Data.S
1c40: 51 4c 69 74 65 2e 53 51 4c 69 74 65 42 6c 6f 62  QLite.SQLiteBlob
1c50: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
1c60: 69 74 65 2e 53 51 4c 69 74 65 42 6c 6f 62 7d 5d  ite.SQLiteBlob}]
1c70: 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23  ....############
1c80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1c90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1ca0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1cb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1cc0: 23 23 23 0d 0a 0d 0a 73 65 74 20 73 61 76 65 64  ###....set saved
1cd0: 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 20 5b  DateTimeFormat [
1ce0: 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20 49 6e  object invoke In
1cf0: 74 65 72 70 72 65 74 65 72 2e 47 65 74 41 63 74  terpreter.GetAct
1d00: 69 76 65 20 44 61 74 65 54 69 6d 65 46 6f 72 6d  ive DateTimeForm
1d10: 61 74 5d 0d 0a 69 66 20 7b 21 5b 69 73 4f 62 6a  at]..if {![isObj
1d20: 65 63 74 48 61 6e 64 6c 65 20 24 73 61 76 65 64  ectHandle $saved
1d30: 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 5d 7d  DateTimeFormat]}
1d40: 20 74 68 65 6e 20 7b 73 65 74 20 73 61 76 65 64   then {set saved
1d50: 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 20 6e  DateTimeFormat n
1d60: 75 6c 6c 7d 0d 0a 6f 62 6a 65 63 74 20 69 6e 76  ull}..object inv
1d70: 6f 6b 65 20 49 6e 74 65 72 70 72 65 74 65 72 2e  oke Interpreter.
1d80: 47 65 74 41 63 74 69 76 65 20 44 61 74 65 54 69  GetActive DateTi
1d90: 6d 65 46 6f 72 6d 61 74 20 5b 67 65 74 44 61 74  meFormat [getDat
1da0: 65 54 69 6d 65 46 6f 72 6d 61 74 5d 0d 0a 0d 0a  eTimeFormat]....
1db0: 73 65 74 20 73 61 76 65 64 44 61 74 65 54 69 6d  set savedDateTim
1dc0: 65 4b 69 6e 64 20 5b 6f 62 6a 65 63 74 20 69 6e  eKind [object in
1dd0: 76 6f 6b 65 20 49 6e 74 65 72 70 72 65 74 65 72  voke Interpreter
1de0: 2e 47 65 74 41 63 74 69 76 65 20 44 61 74 65 54  .GetActive DateT
1df0: 69 6d 65 4b 69 6e 64 5d 0d 0a 6f 62 6a 65 63 74  imeKind]..object
1e00: 20 69 6e 76 6f 6b 65 20 49 6e 74 65 72 70 72 65   invoke Interpre
1e10: 74 65 72 2e 47 65 74 41 63 74 69 76 65 20 44 61  ter.GetActive Da
1e20: 74 65 54 69 6d 65 4b 69 6e 64 20 55 74 63 0d 0a  teTimeKind Utc..
1e30: 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ..##############
1e40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1e50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1e60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1e70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1e80: 23 0d 0a 0d 0a 66 6f 72 20 7b 73 65 74 20 69 20  #....for {set i 
1e90: 30 7d 20 7b 24 69 20 3c 20 5b 6c 6c 65 6e 67 74  0} {$i < [llengt
1ea0: 68 20 24 70 61 72 61 6d 73 5d 7d 20 7b 69 6e 63  h $params]} {inc
1eb0: 72 20 69 7d 20 7b 0d 0a 20 20 66 6f 72 65 61 63  r i} {..  foreac
1ec0: 68 20 7b 0d 0a 20 20 20 20 74 79 70 65 4e 61 6d  h {..    typeNam
1ed0: 65 20 6d 65 74 68 6f 64 4e 61 6d 65 20 69 73 41  e methodName isA
1ee0: 72 72 61 79 20 70 72 6f 70 65 72 74 79 4e 61 6d  rray propertyNam
1ef0: 65 20 69 73 52 65 71 75 69 72 65 64 20 76 61 6c  e isRequired val
1f00: 75 65 0d 0a 20 20 7d 20 5b 6c 69 6e 64 65 78 20  ue..  } [lindex 
1f10: 24 70 61 72 61 6d 73 20 24 69 5d 20 62 72 65 61  $params $i] brea
1f20: 6b 0d 0a 0d 0a 20 20 73 65 74 20 74 79 70 65 4e  k....  set typeN
1f30: 61 6d 65 20 5b 73 74 72 69 6e 67 20 6d 61 70 20  ame [string map 
1f40: 5b 6c 69 73 74 20 53 44 53 2e 20 53 79 73 74 65  [list SDS. Syste
1f50: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 5d 20  m.Data.SQLite.] 
1f60: 24 74 79 70 65 4e 61 6d 65 5d 0d 0a 20 20 73 65  $typeName]..  se
1f70: 74 20 65 78 70 65 63 74 65 64 52 65 73 75 6c 74  t expectedResult
1f80: 20 5b 6c 69 6e 64 65 78 20 24 65 78 70 65 63 74   [lindex $expect
1f90: 65 64 52 65 73 75 6c 74 73 20 24 69 5d 0d 0a 0d  edResults $i]...
1fa0: 0a 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23  .  #############
1fb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1fe0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1ff0: 0d 0a 0d 0a 20 20 70 72 6f 63 20 72 65 61 64 56  ....  proc readV
2000: 61 6c 75 65 43 61 6c 6c 62 61 63 6b 32 20 24 72  alueCallback2 $r
2010: 65 61 64 41 72 67 73 20 5b 73 75 62 73 74 20 7b  eadArgs [subst {
2020: 0d 0a 20 20 20 20 69 66 20 7b 24 69 73 41 72 72  ..    if {$isArr
2030: 61 79 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20  ay} then {..    
2040: 20 20 69 66 20 7b 5c 5b 63 61 74 63 68 20 7b 0d    if {\[catch {.
2050: 0a 20 20 20 20 20 20 20 20 73 65 74 20 64 61 74  .        set dat
2060: 61 4f 66 66 73 65 74 20 5c 5b 5c 24 65 76 65 6e  aOffset \[\$even
2070: 74 41 72 67 73 20 45 78 74 72 61 45 76 65 6e 74  tArgs ExtraEvent
2080: 41 72 67 73 2e 44 61 74 61 4f 66 66 73 65 74 5c  Args.DataOffset\
2090: 5d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 73 65 74  ]....        set
20a0: 20 62 75 66 66 65 72 20 5c 5b 5c 24 65 76 65 6e   buffer \[\$even
20b0: 74 41 72 67 73 20 2d 63 72 65 61 74 65 20 5b 61  tArgs -create [a
20c0: 70 70 65 6e 64 41 72 67 73 20 45 78 74 72 61 45  ppendArgs ExtraE
20d0: 76 65 6e 74 41 72 67 73 2e 20 5c 0d 0a 20 20 20  ventArgs. \..   
20e0: 20 20 20 20 20 20 20 20 20 24 74 79 70 65 4e 61           $typeNa
20f0: 6d 65 20 42 75 66 66 65 72 5d 5c 5d 0d 0a 0d 0a  me Buffer]\]....
2100: 20 20 20 20 20 20 20 20 73 65 74 20 62 75 66 66          set buff
2110: 65 72 4f 66 66 73 65 74 20 5c 5b 5c 24 65 76 65  erOffset \[\$eve
2120: 6e 74 41 72 67 73 20 45 78 74 72 61 45 76 65 6e  ntArgs ExtraEven
2130: 74 41 72 67 73 2e 42 75 66 66 65 72 4f 66 66 73  tArgs.BufferOffs
2140: 65 74 5c 5d 0d 0a 20 20 20 20 20 20 20 20 73 65  et\]..        se
2150: 74 20 6c 65 6e 67 74 68 20 5c 5b 5c 24 65 76 65  t length \[\$eve
2160: 6e 74 41 72 67 73 20 45 78 74 72 61 45 76 65 6e  ntArgs ExtraEven
2170: 74 41 72 67 73 2e 4c 65 6e 67 74 68 5c 5d 0d 0a  tArgs.Length\]..
2180: 0d 0a 20 20 20 20 20 20 20 20 73 65 74 20 72 65  ..        set re
2190: 61 64 56 61 6c 75 65 20 5c 5b 5c 24 64 61 74 61  adValue \[\$data
21a0: 52 65 61 64 65 72 20 5c 5b 5c 24 65 76 65 6e 74  Reader \[\$event
21b0: 41 72 67 73 20 4d 65 74 68 6f 64 4e 61 6d 65 5c  Args MethodName\
21c0: 5d 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ] \..           
21d0: 20 5c 24 69 6e 64 65 78 20 5c 24 64 61 74 61 4f   \$index \$dataO
21e0: 66 66 73 65 74 20 5c 24 62 75 66 66 65 72 20 5c  ffset \$buffer \
21f0: 24 62 75 66 66 65 72 4f 66 66 73 65 74 20 5c 24  $bufferOffset \$
2200: 6c 65 6e 67 74 68 5c 5d 0d 0a 0d 0a 20 20 20 20  length\]....    
2210: 20 20 20 20 5c 24 65 76 65 6e 74 41 72 67 73 20      \$eventArgs 
2220: 5c 5b 61 70 70 65 6e 64 41 72 67 73 20 56 61 6c  \[appendArgs Val
2230: 75 65 2e 20 24 70 72 6f 70 65 72 74 79 4e 61 6d  ue. $propertyNam
2240: 65 5c 5d 20 5c 24 72 65 61 64 56 61 6c 75 65 0d  e\] \$readValue.
2250: 0a 20 20 20 20 20 20 7d 20 65 72 72 6f 72 5c 5d  .      } error\]
2260: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
2270: 20 20 73 65 74 20 72 65 61 64 56 61 6c 75 65 20    set readValue 
2280: 5c 5b 5c 24 64 61 74 61 52 65 61 64 65 72 20 2d  \[\$dataReader -
2290: 74 6f 73 74 72 69 6e 67 20 47 65 74 56 61 6c 75  tostring GetValu
22a0: 65 20 5c 24 69 6e 64 65 78 5c 5d 0d 0a 0d 0a 20  e \$index\].... 
22b0: 20 20 20 20 20 20 20 69 66 20 7b 22 24 74 79 70         if {"$typ
22c0: 65 4e 61 6d 65 22 20 65 71 20 22 43 68 61 72 22  eName" eq "Char"
22d0: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
22e0: 20 20 20 20 73 65 74 20 73 74 72 69 6e 67 20 5c      set string \
22f0: 5b 6f 62 6a 65 63 74 20 63 72 65 61 74 65 20 2d  [object create -
2300: 61 6c 69 61 73 20 53 74 72 69 6e 67 20 5c 24 72  alias String \$r
2310: 65 61 64 56 61 6c 75 65 5c 5d 0d 0a 20 20 20 20  eadValue\]..    
2320: 20 20 20 20 20 20 73 65 74 20 62 75 66 66 65 72        set buffer
2330: 20 5c 5b 5c 24 73 74 72 69 6e 67 20 2d 63 72 65   \[\$string -cre
2340: 61 74 65 20 2d 61 6c 69 61 73 20 54 6f 43 68 61  ate -alias ToCha
2350: 72 41 72 72 61 79 5d 0d 0a 20 20 20 20 20 20 20  rArray]..       
2360: 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20   } else {..     
2370: 20 20 20 20 20 73 65 74 20 62 75 66 66 65 72 20       set buffer 
2380: 5c 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20  \[object invoke 
2390: 2d 63 72 65 61 74 65 20 2d 61 6c 69 61 73 20 5c  -create -alias \
23a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23b0: 53 79 73 74 65 6d 2e 54 65 78 74 2e 45 6e 63 6f  System.Text.Enco
23c0: 64 69 6e 67 2e 55 54 46 38 20 47 65 74 42 79 74  ding.UTF8 GetByt
23d0: 65 73 20 5c 24 72 65 61 64 56 61 6c 75 65 5c 5d  es \$readValue\]
23e0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
23f0: 20 20 20 20 20 20 20 5c 24 65 76 65 6e 74 41 72         \$eventAr
2400: 67 73 20 5c 5b 61 70 70 65 6e 64 41 72 67 73 20  gs \[appendArgs 
2410: 56 61 6c 75 65 2e 20 24 70 72 6f 70 65 72 74 79  Value. $property
2420: 4e 61 6d 65 5c 5d 20 5c 24 62 75 66 66 65 72 0d  Name\] \$buffer.
2430: 0a 20 20 20 20 20 20 20 20 5c 24 65 76 65 6e 74  .        \$event
2440: 41 72 67 73 20 45 78 74 72 61 45 76 65 6e 74 41  Args ExtraEventA
2450: 72 67 73 2e 4c 65 6e 67 74 68 20 5c 5b 5c 24 62  rgs.Length \[\$b
2460: 75 66 66 65 72 20 4c 65 6e 67 74 68 5c 5d 0d 0a  uffer Length\]..
2470: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a        } else {..
2480: 20 20 20 20 20 20 20 20 73 65 74 20 62 75 66 66          set buff
2490: 65 72 20 5c 5b 5c 24 65 76 65 6e 74 41 72 67 73  er \[\$eventArgs
24a0: 20 2d 63 72 65 61 74 65 20 5b 61 70 70 65 6e 64   -create [append
24b0: 41 72 67 73 20 45 78 74 72 61 45 76 65 6e 74 41  Args ExtraEventA
24c0: 72 67 73 2e 20 5c 0d 0a 20 20 20 20 20 20 20 20  rgs. \..        
24d0: 20 20 20 20 24 74 79 70 65 4e 61 6d 65 20 42 75      $typeName Bu
24e0: 66 66 65 72 5d 5c 5d 0d 0a 0d 0a 20 20 20 20 20  ffer]\]....     
24f0: 20 20 20 5c 24 65 76 65 6e 74 41 72 67 73 20 5c     \$eventArgs \
2500: 5b 61 70 70 65 6e 64 41 72 67 73 20 56 61 6c 75  [appendArgs Valu
2510: 65 2e 20 24 70 72 6f 70 65 72 74 79 4e 61 6d 65  e. $propertyName
2520: 5c 5d 20 5c 24 62 75 66 66 65 72 0d 0a 20 20 20  \] \$buffer..   
2530: 20 20 20 7d 0d 0a 20 20 20 20 7d 20 65 6c 73 65     }..    } else
2540: 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 7b 5c 5b   {..      if {\[
2550: 63 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20  catch {..       
2560: 20 69 66 20 7b 22 24 74 79 70 65 4e 61 6d 65 22   if {"$typeName"
2570: 20 65 71 20 22 53 79 73 74 65 6d 2e 44 61 74 61   eq "System.Data
2580: 2e 53 51 4c 69 74 65 2e 53 51 4c 69 74 65 42 6c  .SQLite.SQLiteBl
2590: 6f 62 22 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  ob"} then {..   
25a0: 20 20 20 20 20 20 20 73 65 74 20 72 65 61 64 56         set readV
25b0: 61 6c 75 65 20 5c 5b 6f 62 6a 65 63 74 20 63 72  alue \[object cr
25c0: 65 61 74 65 20 2d 66 6c 61 67 73 20 2b 4e 6f 6e  eate -flags +Non
25d0: 50 75 62 6c 69 63 20 24 74 79 70 65 4e 61 6d 65  Public $typeName
25e0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
25f0: 20 20 6e 75 6c 6c 20 6e 75 6c 6c 5c 5d 0d 0a 20    null null\].. 
2600: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d         } else {.
2610: 0a 20 20 20 20 20 20 20 20 20 20 73 65 74 20 72  .          set r
2620: 65 61 64 56 61 6c 75 65 20 5c 5b 5c 24 64 61 74  eadValue \[\$dat
2630: 61 52 65 61 64 65 72 20 5c 5b 5c 24 65 76 65 6e  aReader \[\$even
2640: 74 41 72 67 73 20 4d 65 74 68 6f 64 4e 61 6d 65  tArgs MethodName
2650: 5c 5d 20 5c 24 69 6e 64 65 78 5c 5d 0d 0a 0d 0a  \] \$index\]....
2660: 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 22 24            if {"$
2670: 74 79 70 65 4e 61 6d 65 22 20 65 71 20 22 43 68  typeName" eq "Ch
2680: 61 72 22 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20  ar"} then {..   
2690: 20 20 20 20 20 20 20 20 20 73 65 74 20 72 65 61           set rea
26a0: 64 56 61 6c 75 65 20 5c 5b 6f 62 6a 65 63 74 20  dValue \[object 
26b0: 69 6e 76 6f 6b 65 20 2d 63 72 65 61 74 65 20 43  invoke -create C
26c0: 68 61 72 20 50 61 72 73 65 20 5c 24 72 65 61 64  har Parse \$read
26d0: 56 61 6c 75 65 5c 5d 0d 0a 20 20 20 20 20 20 20  Value\]..       
26e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d     }..        }.
26f0: 0a 0d 0a 20 20 20 20 20 20 20 20 5c 24 65 76 65  ...        \$eve
2700: 6e 74 41 72 67 73 20 5c 5b 61 70 70 65 6e 64 41  ntArgs \[appendA
2710: 72 67 73 20 56 61 6c 75 65 2e 20 24 70 72 6f 70  rgs Value. $prop
2720: 65 72 74 79 4e 61 6d 65 5c 5d 20 5c 24 72 65 61  ertyName\] \$rea
2730: 64 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 7d 20  dValue..      } 
2740: 65 72 72 6f 72 5c 5d 7d 20 74 68 65 6e 20 7b 0d  error\]} then {.
2750: 0a 20 20 20 20 20 20 20 20 5c 24 65 76 65 6e 74  .        \$event
2760: 41 72 67 73 20 5c 5b 61 70 70 65 6e 64 41 72 67  Args \[appendArg
2770: 73 20 56 61 6c 75 65 2e 20 24 70 72 6f 70 65 72  s Value. $proper
2780: 74 79 4e 61 6d 65 5c 5d 20 7b 24 76 61 6c 75 65  tyName\] {$value
2790: 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  }..      }..    
27a0: 7d 0d 0a 0d 0a 20 20 20 20 75 70 76 61 72 20 31  }....    upvar 1
27b0: 20 5c 24 63 6f 6d 70 6c 65 74 65 56 61 72 4e 61   \$completeVarNa
27c0: 6d 65 20 63 6f 6d 70 6c 65 74 65 0d 0a 20 20 20  me complete..   
27d0: 20 73 65 74 20 63 6f 6d 70 6c 65 74 65 20 5c 5b   set complete \[
27e0: 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20 2d 63  object invoke -c
27f0: 72 65 61 74 65 20 53 79 73 74 65 6d 2e 42 6f 6f  reate System.Boo
2800: 6c 65 61 6e 20 50 61 72 73 65 20 54 72 75 65 5c  lean Parse True\
2810: 5d 0d 0a 20 20 7d 5d 0d 0a 0d 0a 20 20 23 23 23  ]..  }]....  ###
2820: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2830: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2840: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2850: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2860: 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 20 20  ##########....  
2870: 72 75 6e 54 65 73 74 20 7b 74 65 73 74 20 5b 61  runTest {test [a
2880: 70 70 65 6e 64 41 72 67 73 20 74 79 70 65 73 2d  ppendArgs types-
2890: 32 2e 20 24 69 5d 20 5b 61 70 70 65 6e 64 41 72  2. $i] [appendAr
28a0: 67 73 20 24 6d 65 74 68 6f 64 4e 61 6d 65 20 22  gs $methodName "
28b0: 20 63 61 6c 6c 62 61 63 6b 22 5d 20 5c 0d 0a 20   callback"] \.. 
28c0: 20 20 20 20 20 2d 73 65 74 75 70 20 5b 73 75 62       -setup [sub
28d0: 73 74 20 2d 6e 6f 63 6f 6d 6d 61 6e 64 73 20 7b  st -nocommands {
28e0: 0d 0a 20 20 20 20 73 65 74 20 74 79 70 65 4e 61  ..    set typeNa
28f0: 6d 65 20 7b 24 74 79 70 65 4e 61 6d 65 7d 0d 0a  me {$typeName}..
2900: 20 20 20 20 73 65 74 20 6d 65 74 68 6f 64 4e 61      set methodNa
2910: 6d 65 20 7b 24 6d 65 74 68 6f 64 4e 61 6d 65 7d  me {$methodName}
2920: 0d 0a 20 20 20 20 73 65 74 20 69 73 41 72 72 61  ..    set isArra
2930: 79 20 7b 24 69 73 41 72 72 61 79 7d 0d 0a 0d 0a  y {$isArray}....
2940: 20 20 20 20 73 65 74 75 70 44 62 20 5b 73 65 74      setupDb [set
2950: 20 66 69 6c 65 4e 61 6d 65 20 5b 61 70 70 65 6e   fileName [appen
2960: 64 41 72 67 73 20 74 79 70 65 73 2d 32 2e 20 24  dArgs types-2. $
2970: 69 20 2e 64 62 5d 5d 20 22 22 20 22 22 20 22 22  i .db]] "" "" ""
2980: 20 5c 0d 0a 20 20 20 20 20 20 20 20 55 73 65 43   \..        UseC
2990: 6f 6e 6e 65 63 74 69 6f 6e 52 65 61 64 56 61 6c  onnectionReadVal
29a0: 75 65 43 61 6c 6c 62 61 63 6b 73 0d 0a 20 20 7d  ueCallbacks..  }
29b0: 5d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20 20 20 73  ] -body {..    s
29c0: 71 6c 20 65 78 65 63 75 74 65 20 24 64 62 20 7b  ql execute $db {
29d0: 0d 0a 20 20 20 20 20 20 43 52 45 41 54 45 20 54  ..      CREATE T
29e0: 41 42 4c 45 20 74 31 28 78 20 49 4e 54 45 47 45  ABLE t1(x INTEGE
29f0: 52 2c 20 79 20 53 50 45 43 49 41 4c 29 3b 0d 0a  R, y SPECIAL);..
2a00: 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54        INSERT INT
2a10: 4f 20 74 31 20 28 78 2c 20 79 29 20 56 41 4c 55  O t1 (x, y) VALU
2a20: 45 53 28 31 2c 20 4e 55 4c 4c 29 3b 0d 0a 20 20  ES(1, NULL);..  
2a30: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
2a40: 74 31 20 28 78 2c 20 79 29 20 56 41 4c 55 45 53  t1 (x, y) VALUES
2a50: 28 32 2c 20 30 29 3b 0d 0a 20 20 20 20 20 20 49  (2, 0);..      I
2a60: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 28 78  NSERT INTO t1 (x
2a70: 2c 20 79 29 20 56 41 4c 55 45 53 28 33 2c 20 31  , y) VALUES(3, 1
2a80: 29 3b 0d 0a 20 20 20 20 20 20 49 4e 53 45 52 54  );..      INSERT
2a90: 20 49 4e 54 4f 20 74 31 20 28 78 2c 20 79 29 20   INTO t1 (x, y) 
2aa0: 56 41 4c 55 45 53 28 34 2c 20 31 2e 32 29 3b 0d  VALUES(4, 1.2);.
2ab0: 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e  .      INSERT IN
2ac0: 54 4f 20 74 31 20 28 78 2c 20 79 29 20 56 41 4c  TO t1 (x, y) VAL
2ad0: 55 45 53 28 35 2c 20 27 74 68 72 65 65 27 29 3b  UES(5, 'three');
2ae0: 0d 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20 49  ..      INSERT I
2af0: 4e 54 4f 20 74 31 20 28 78 2c 20 79 29 20 56 41  NTO t1 (x, y) VA
2b00: 4c 55 45 53 28 36 2c 20 58 27 30 34 30 35 30 36  LUES(6, X'040506
2b10: 27 29 3b 0d 0a 20 20 20 20 20 20 49 4e 53 45 52  ');..      INSER
2b20: 54 20 49 4e 54 4f 20 74 31 20 28 78 2c 20 79 29  T INTO t1 (x, y)
2b30: 20 56 41 4c 55 45 53 28 37 2c 20 27 32 30 31 36   VALUES(7, '2016
2b40: 2d 30 36 2d 31 39 20 31 39 3a 35 30 3a 30 34 2e  -06-19 19:50:04.
2b50: 31 32 33 34 35 36 37 27 29 3b 0d 0a 20 20 20 20  1234567');..    
2b60: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
2b70: 20 28 78 2c 20 79 29 20 56 41 4c 55 45 53 28 38   (x, y) VALUES(8
2b80: 2c 20 27 37 34 66 31 66 34 30 32 2d 64 64 65 66  , '74f1f402-ddef
2b90: 2d 34 30 32 37 2d 61 37 38 66 2d 33 38 34 37 66  -4027-a78f-3847f
2ba0: 61 39 37 62 38 33 30 27 29 3b 0d 0a 20 20 20 20  a97b830');..    
2bb0: 7d 0d 0a 0d 0a 20 20 20 20 73 65 74 20 63 61 6c  }....    set cal
2bc0: 6c 62 61 63 6b 20 7b 2d 63 61 6c 6c 62 61 63 6b  lback {-callback
2bd0: 66 6c 61 67 73 20 2b 44 65 66 61 75 6c 74 20 72  flags +Default r
2be0: 65 61 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b  eadValueCallback
2bf0: 32 7d 0d 0a 20 20 20 20 73 65 74 20 63 6f 6e 6e  2}..    set conn
2c00: 65 63 74 69 6f 6e 20 5b 67 65 74 44 62 43 6f 6e  ection [getDbCon
2c10: 6e 65 63 74 69 6f 6e 5d 0d 0a 0d 0a 20 20 20 20  nection]....    
2c20: 73 65 74 20 72 65 73 75 6c 74 20 5b 6c 69 73 74  set result [list
2c30: 5d 0d 0a 0d 0a 20 20 20 20 73 65 74 20 74 79 70  ]....    set typ
2c40: 65 43 61 6c 6c 62 61 63 6b 73 20 5b 6f 62 6a 65  eCallbacks [obje
2c50: 63 74 20 69 6e 76 6f 6b 65 20 2d 6d 61 72 73 68  ct invoke -marsh
2c60: 61 6c 66 6c 61 67 73 20 2b 44 79 6e 61 6d 69 63  alflags +Dynamic
2c70: 43 61 6c 6c 62 61 63 6b 20 5c 0d 0a 20 20 20 20  Callback \..    
2c80: 20 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e      System.Data.
2c90: 53 51 4c 69 74 65 2e 53 51 4c 69 74 65 54 79 70  SQLite.SQLiteTyp
2ca0: 65 43 61 6c 6c 62 61 63 6b 73 20 43 72 65 61 74  eCallbacks Creat
2cb0: 65 20 6e 75 6c 6c 20 24 63 61 6c 6c 62 61 63 6b  e null $callback
2cc0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 6e 75 6c 6c   \..        null
2cd0: 20 6e 75 6c 6c 5d 0d 0a 0d 0a 20 20 20 20 24 63   null]....    $c
2ce0: 6f 6e 6e 65 63 74 69 6f 6e 20 53 65 74 54 79 70  onnection SetTyp
2cf0: 65 43 61 6c 6c 62 61 63 6b 73 20 53 50 45 43 49  eCallbacks SPECI
2d00: 41 4c 20 24 74 79 70 65 43 61 6c 6c 62 61 63 6b  AL $typeCallback
2d10: 73 0d 0a 0d 0a 20 20 20 20 73 65 74 20 64 61 74  s....    set dat
2d20: 61 52 65 61 64 65 72 20 5b 73 71 6c 20 65 78 65  aReader [sql exe
2d30: 63 75 74 65 20 2d 65 78 65 63 75 74 65 20 72 65  cute -execute re
2d40: 61 64 65 72 20 2d 66 6f 72 6d 61 74 20 64 61 74  ader -format dat
2d50: 61 72 65 61 64 65 72 20 5c 0d 0a 20 20 20 20 20  areader \..     
2d60: 20 20 20 2d 61 6c 69 61 73 20 24 64 62 20 22 53     -alias $db "S
2d70: 45 4c 45 43 54 20 79 20 46 52 4f 4d 20 74 31 20  ELECT y FROM t1 
2d80: 4f 52 44 45 52 20 42 59 20 78 3b 22 5d 0d 0a 0d  ORDER BY x;"]...
2d90: 0a 20 20 20 20 77 68 69 6c 65 20 7b 5b 24 64 61  .    while {[$da
2da0: 74 61 52 65 61 64 65 72 20 52 65 61 64 5d 7d 20  taReader Read]} 
2db0: 7b 0d 0a 20 20 20 20 20 20 69 66 20 7b 24 69 73  {..      if {$is
2dc0: 41 72 72 61 79 7d 20 74 68 65 6e 20 7b 0d 0a 20  Array} then {.. 
2dd0: 20 20 20 20 20 20 20 73 65 74 20 62 75 66 66 65         set buffe
2de0: 72 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65  r [object invoke
2df0: 20 5c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   \..            
2e00: 2d 63 72 65 61 74 65 20 41 72 72 61 79 20 43 72  -create Array Cr
2e10: 65 61 74 65 49 6e 73 74 61 6e 63 65 20 24 74 79  eateInstance $ty
2e20: 70 65 4e 61 6d 65 20 31 30 30 5d 0d 0a 0d 0a 20  peName 100].... 
2e30: 20 20 20 20 20 20 20 69 66 20 7b 5b 63 61 74 63         if {[catc
2e40: 68 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 24  h {..          $
2e50: 64 61 74 61 52 65 61 64 65 72 20 24 6d 65 74 68  dataReader $meth
2e60: 6f 64 4e 61 6d 65 20 30 20 30 20 24 62 75 66 66  odName 0 0 $buff
2e70: 65 72 20 30 20 31 0d 0a 20 20 20 20 20 20 20 20  er 0 1..        
2e80: 7d 20 76 61 6c 75 65 5d 20 3d 3d 20 30 7d 20 74  } value] == 0} t
2e90: 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  hen {..         
2ea0: 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20   lappend result 
2eb0: 24 76 61 6c 75 65 0d 0a 0d 0a 20 20 20 20 20 20  $value....      
2ec0: 20 20 20 20 69 66 20 7b 24 76 61 6c 75 65 20 3e      if {$value >
2ed0: 20 30 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20   0} then {..    
2ee0: 20 20 20 20 20 20 20 20 73 65 74 20 6c 69 73 74          set list
2ef0: 20 5b 6f 62 6a 65 63 74 20 63 72 65 61 74 65 20   [object create 
2f00: 2d 61 6c 69 61 73 20 53 74 72 69 6e 67 4c 69 73  -alias StringLis
2f10: 74 20 24 62 75 66 66 65 72 5d 0d 0a 0d 0a 20 20  t $buffer]....  
2f20: 20 20 20 20 20 20 20 20 20 20 6c 61 70 70 65 6e            lappen
2f30: 64 20 72 65 73 75 6c 74 20 5b 6f 62 6a 65 63 74  d result [object
2f40: 20 69 6e 76 6f 6b 65 20 53 74 72 69 6e 67 4c 69   invoke StringLi
2f50: 73 74 20 47 65 74 52 61 6e 67 65 20 5c 0d 0a 20  st GetRange \.. 
2f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24                 $
2f70: 6c 69 73 74 20 30 20 5b 65 78 70 72 20 7b 24 76  list 0 [expr {$v
2f80: 61 6c 75 65 20 2d 20 31 7d 5d 20 66 61 6c 73 65  alue - 1}] false
2f90: 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  ]..          }..
2fa0: 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b          } else {
2fb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 6c 61 70 70  ..          lapp
2fc0: 65 6e 64 20 72 65 73 75 6c 74 20 5b 6c 69 73 74  end result [list
2fd0: 20 65 72 72 6f 72 28 61 72 72 61 79 29 20 24 3a   error(array) $:
2fe0: 3a 65 72 72 6f 72 43 6f 64 65 5d 0d 0a 20 20 20  :errorCode]..   
2ff0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 20       }..      } 
3000: 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20  else {..        
3010: 69 66 20 7b 5b 63 61 74 63 68 20 7b 0d 0a 20 20  if {[catch {..  
3020: 20 20 20 20 20 20 20 20 69 66 20 7b 24 74 79 70          if {$typ
3030: 65 4e 61 6d 65 20 65 71 20 22 53 79 73 74 65 6d  eName eq "System
3040: 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 53 51 4c  .Data.SQLite.SQL
3050: 69 74 65 42 6c 6f 62 22 7d 20 74 68 65 6e 20 7b  iteBlob"} then {
3060: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 64  ..            $d
3070: 61 74 61 52 65 61 64 65 72 20 24 6d 65 74 68 6f  ataReader $metho
3080: 64 4e 61 6d 65 20 30 20 74 72 75 65 3b 20 23 20  dName 0 true; # 
3090: 72 65 61 64 2d 6f 6e 6c 79 0d 0a 20 20 20 20 20  read-only..     
30a0: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20       } else {.. 
30b0: 20 20 20 20 20 20 20 20 20 20 20 24 64 61 74 61             $data
30c0: 52 65 61 64 65 72 20 24 6d 65 74 68 6f 64 4e 61  Reader $methodNa
30d0: 6d 65 20 30 0d 0a 20 20 20 20 20 20 20 20 20 20  me 0..          
30e0: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 20 76 61 6c  }..        } val
30f0: 75 65 5d 20 3d 3d 20 30 7d 20 74 68 65 6e 20 7b  ue] == 0} then {
3100: 0d 0a 20 20 20 20 20 20 20 20 20 20 69 66 20 7b  ..          if {
3110: 24 76 61 6c 75 65 20 65 71 20 22 5c 78 30 30 22  $value eq "\x00"
3120: 7d 20 74 68 65 6e 20 7b 0d 0a 20 20 20 20 20 20  } then {..      
3130: 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65        lappend re
3140: 73 75 6c 74 20 3c 4e 55 4c 3e 0d 0a 20 20 20 20  sult <NUL>..    
3150: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a        } else {..
3160: 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 70 70              lapp
3170: 65 6e 64 20 72 65 73 75 6c 74 20 5b 67 65 74 53  end result [getS
3180: 74 72 69 6e 67 46 72 6f 6d 4f 62 6a 65 63 74 48  tringFromObjectH
3190: 61 6e 64 6c 65 20 24 76 61 6c 75 65 5d 0d 0a 20  andle $value].. 
31a0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
31b0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
31c0: 20 20 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20          lappend 
31d0: 72 65 73 75 6c 74 20 5b 6c 69 73 74 20 65 72 72  result [list err
31e0: 6f 72 28 76 61 6c 75 65 29 20 24 3a 3a 65 72 72  or(value) $::err
31f0: 6f 72 43 6f 64 65 5d 0d 0a 20 20 20 20 20 20 20  orCode]..       
3200: 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20   }..      }..   
3210: 20 7d 0d 0a 0d 0a 20 20 20 20 73 65 74 20 72 65   }....    set re
3220: 73 75 6c 74 0d 0a 20 20 7d 20 2d 63 6c 65 61 6e  sult..  } -clean
3230: 75 70 20 7b 0d 0a 20 20 20 20 63 61 74 63 68 20  up {..    catch 
3240: 7b 6f 62 6a 65 63 74 20 72 65 6d 6f 76 65 63 61  {object removeca
3250: 6c 6c 62 61 63 6b 20 24 63 61 6c 6c 62 61 63 6b  llback $callback
3260: 7d 0d 0a 0d 0a 20 20 20 20 75 6e 73 65 74 20 2d  }....    unset -
3270: 6e 6f 63 6f 6d 70 6c 61 69 6e 20 64 61 74 61 52  nocomplain dataR
3280: 65 61 64 65 72 0d 0a 20 20 20 20 66 72 65 65 44  eader..    freeD
3290: 62 43 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 0d 0a 20  bConnection.... 
32a0: 20 20 20 63 6c 65 61 6e 75 70 44 62 20 24 66 69     cleanupDb $fi
32b0: 6c 65 4e 61 6d 65 0d 0a 0d 0a 20 20 20 20 75 6e  leName....    un
32c0: 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20  set -nocomplain 
32d0: 62 75 66 66 65 72 20 74 79 70 65 43 61 6c 6c 62  buffer typeCallb
32e0: 61 63 6b 73 20 63 61 6c 6c 62 61 63 6b 20 76 61  acks callback va
32f0: 6c 75 65 20 6c 69 73 74 0d 0a 20 20 20 20 75 6e  lue list..    un
3300: 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20  set -nocomplain 
3310: 72 65 73 75 6c 74 20 63 6f 6e 6e 65 63 74 69 6f  result connectio
3320: 6e 20 64 62 20 66 69 6c 65 4e 61 6d 65 0d 0a 20  n db fileName.. 
3330: 20 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70     unset -nocomp
3340: 6c 61 69 6e 20 74 79 70 65 4e 61 6d 65 20 6d 65  lain typeName me
3350: 74 68 6f 64 4e 61 6d 65 20 69 73 41 72 72 61 79  thodName isArray
3360: 0d 0a 20 20 7d 20 2d 63 6f 6e 73 74 72 61 69 6e  ..  } -constrain
3370: 74 73 20 7b 65 61 67 6c 65 20 63 6f 6d 6d 61 6e  ts {eagle comman
3380: 64 2e 6f 62 6a 65 63 74 20 6d 6f 6e 6f 42 75 67  d.object monoBug
3390: 32 38 20 63 6f 6d 6d 61 6e 64 2e 73 71 6c 20 63  28 command.sql c
33a0: 6f 6d 70 69 6c 65 2e 44 41 54 41 5c 0d 0a 53 51  ompile.DATA\..SQ
33b0: 4c 69 74 65 20 53 79 73 74 65 6d 2e 44 61 74 61  Lite System.Data
33c0: 2e 53 51 4c 69 74 65 7d 20 2d 72 65 73 75 6c 74  .SQLite} -result
33d0: 20 24 65 78 70 65 63 74 65 64 52 65 73 75 6c 74   $expectedResult
33e0: 7d 0d 0a 0d 0a 20 20 72 65 6e 61 6d 65 20 72 65  }....  rename re
33f0: 61 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 32  adValueCallback2
3400: 20 22 22 0d 0a 7d 0d 0a 0d 0a 23 23 23 23 23 23   ""..}....######
3410: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3420: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3430: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3450: 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 6f 62 6a  #########....obj
3460: 65 63 74 20 69 6e 76 6f 6b 65 20 49 6e 74 65 72  ect invoke Inter
3470: 70 72 65 74 65 72 2e 47 65 74 41 63 74 69 76 65  preter.GetActive
3480: 20 44 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 20   DateTimeFormat 
3490: 24 73 61 76 65 64 44 61 74 65 54 69 6d 65 46 6f  $savedDateTimeFo
34a0: 72 6d 61 74 0d 0a 75 6e 73 65 74 20 2d 6e 6f 63  rmat..unset -noc
34b0: 6f 6d 70 6c 61 69 6e 20 73 61 76 65 64 44 61 74  omplain savedDat
34c0: 65 54 69 6d 65 46 6f 72 6d 61 74 0d 0a 0d 0a 6f  eTimeFormat....o
34d0: 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20 49 6e 74  bject invoke Int
34e0: 65 72 70 72 65 74 65 72 2e 47 65 74 41 63 74 69  erpreter.GetActi
34f0: 76 65 20 44 61 74 65 54 69 6d 65 4b 69 6e 64 20  ve DateTimeKind 
3500: 24 73 61 76 65 64 44 61 74 65 54 69 6d 65 4b 69  $savedDateTimeKi
3510: 6e 64 0d 0a 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d  nd..unset -nocom
3520: 70 6c 61 69 6e 20 73 61 76 65 64 44 61 74 65 54  plain savedDateT
3530: 69 6d 65 4b 69 6e 64 0d 0a 0d 0a 23 23 23 23 23  imeKind....#####
3540: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3550: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3560: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3570: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3580: 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 75 6e  ##########....un
3590: 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20  set -nocomplain 
35a0: 69 20 72 65 61 64 41 72 67 73 20 70 61 72 61 6d  i readArgs param
35b0: 73 20 74 79 70 65 4e 61 6d 65 20 6d 65 74 68 6f  s typeName metho
35c0: 64 4e 61 6d 65 20 69 73 41 72 72 61 79 20 70 72  dName isArray pr
35d0: 6f 70 65 72 74 79 4e 61 6d 65 20 5c 0d 0a 20 20  opertyName \..  
35e0: 20 20 69 73 52 65 71 75 69 72 65 64 20 65 78 70    isRequired exp
35f0: 65 63 74 65 64 52 65 73 75 6c 74 73 20 65 78 70  ectedResults exp
3600: 65 63 74 65 64 52 65 73 75 6c 74 0d 0a 0d 0a 23  ectedResult....#
3610: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3620: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3630: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3640: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3650: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a  ##############..
3660: 0d 0a 72 75 6e 54 65 73 74 20 7b 74 65 73 74 20  ..runTest {test 
3670: 74 79 70 65 73 2d 33 2e 31 20 7b 62 69 6e 64 20  types-3.1 {bind 
3680: 63 61 6c 6c 62 61 63 6b 20 28 69 6e 63 6f 6d 70  callback (incomp
3690: 6c 65 74 65 29 7d 20 2d 73 65 74 75 70 20 7b 0d  lete)} -setup {.
36a0: 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70  .  unset -nocomp
36b0: 6c 61 69 6e 20 6c 6f 67 0d 0a 0d 0a 20 20 73 65  lain log....  se
36c0: 74 75 70 44 62 20 5b 73 65 74 20 66 69 6c 65 4e  tupDb [set fileN
36d0: 61 6d 65 20 74 79 70 65 73 2d 33 2e 31 2e 64 62  ame types-3.1.db
36e0: 5d 20 22 22 20 22 22 20 22 22 20 5c 0d 0a 20 20  ] "" "" "" \..  
36f0: 20 20 20 20 22 55 73 65 43 6f 6e 6e 65 63 74 69      "UseConnecti
3700: 6f 6e 42 69 6e 64 56 61 6c 75 65 43 61 6c 6c 62  onBindValueCallb
3710: 61 63 6b 73 20 55 73 65 50 61 72 61 6d 65 74 65  acks UseParamete
3720: 72 4e 61 6d 65 46 6f 72 54 79 70 65 4e 61 6d 65  rNameForTypeName
3730: 22 0d 0a 7d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20  "..} -body {..  
3740: 73 71 6c 20 65 78 65 63 75 74 65 20 24 64 62 20  sql execute $db 
3750: 7b 0d 0a 20 20 20 20 43 52 45 41 54 45 20 54 41  {..    CREATE TA
3760: 42 4c 45 20 74 31 28 78 20 53 50 45 43 49 41 4c  BLE t1(x SPECIAL
3770: 29 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 73 65 74  );..  }....  set
3780: 20 63 61 6c 6c 62 61 63 6b 20 7b 2d 63 61 6c 6c   callback {-call
3790: 62 61 63 6b 66 6c 61 67 73 20 2b 44 65 66 61 75  backflags +Defau
37a0: 6c 74 20 62 69 6e 64 56 61 6c 75 65 43 61 6c 6c  lt bindValueCall
37b0: 62 61 63 6b 31 7d 0d 0a 20 20 73 65 74 20 63 6f  back1}..  set co
37c0: 6e 6e 65 63 74 69 6f 6e 20 5b 67 65 74 44 62 43  nnection [getDbC
37d0: 6f 6e 6e 65 63 74 69 6f 6e 5d 0d 0a 0d 0a 20 20  onnection]....  
37e0: 73 65 74 20 74 79 70 65 43 61 6c 6c 62 61 63 6b  set typeCallback
37f0: 73 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65  s [object invoke
3800: 20 2d 6d 61 72 73 68 61 6c 66 6c 61 67 73 20 2b   -marshalflags +
3810: 44 79 6e 61 6d 69 63 43 61 6c 6c 62 61 63 6b 20  DynamicCallback 
3820: 5c 0d 0a 20 20 20 20 20 20 53 79 73 74 65 6d 2e  \..      System.
3830: 44 61 74 61 2e 53 51 4c 69 74 65 2e 53 51 4c 69  Data.SQLite.SQLi
3840: 74 65 54 79 70 65 43 61 6c 6c 62 61 63 6b 73 20  teTypeCallbacks 
3850: 43 72 65 61 74 65 20 24 63 61 6c 6c 62 61 63 6b  Create $callback
3860: 20 6e 75 6c 6c 20 5c 0d 0a 20 20 20 20 20 20 30   null \..      0
3870: 20 6e 75 6c 6c 5d 0d 0a 0d 0a 20 20 24 63 6f 6e   null]....  $con
3880: 6e 65 63 74 69 6f 6e 20 53 65 74 54 79 70 65 43  nection SetTypeC
3890: 61 6c 6c 62 61 63 6b 73 20 53 50 45 43 49 41 4c  allbacks SPECIAL
38a0: 20 24 74 79 70 65 43 61 6c 6c 62 61 63 6b 73 0d   $typeCallbacks.
38b0: 0a 0d 0a 20 20 73 71 6c 20 65 78 65 63 75 74 65  ...  sql execute
38c0: 20 24 64 62 20 7b 0d 0a 20 20 20 20 49 4e 53 45   $db {..    INSE
38d0: 52 54 20 49 4e 54 4f 20 74 31 20 28 78 29 20 56  RT INTO t1 (x) V
38e0: 41 4c 55 45 53 28 3f 29 3b 0d 0a 20 20 7d 20 5b  ALUES(?);..  } [
38f0: 6c 69 73 74 20 53 70 65 63 69 61 6c 20 49 6e 74  list Special Int
3900: 36 34 20 31 32 33 34 5d 0d 0a 0d 0a 20 20 73 65  64 1234]....  se
3910: 74 20 72 65 73 75 6c 74 20 5b 6c 69 73 74 5d 0d  t result [list].
3920: 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72 65 73  ...  lappend res
3930: 75 6c 74 20 5b 65 78 70 72 20 7b 0d 0a 20 20 20  ult [expr {..   
3940: 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6c 6f   [info exists lo
3950: 67 28 62 69 6e 64 29 5d 20 3f 20 24 6c 6f 67 28  g(bind)] ? $log(
3960: 62 69 6e 64 29 20 3a 20 22 3c 4d 49 53 53 49 4e  bind) : "<MISSIN
3970: 47 3e 22 0d 0a 20 20 7d 5d 0d 0a 0d 0a 20 20 6c  G>"..  }]....  l
3980: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 73  append result [s
3990: 71 6c 20 65 78 65 63 75 74 65 20 2d 65 78 65 63  ql execute -exec
39a0: 75 74 65 20 72 65 61 64 65 72 20 2d 66 6f 72 6d  ute reader -form
39b0: 61 74 20 6c 69 73 74 20 24 64 62 20 5c 0d 0a 20  at list $db \.. 
39c0: 20 20 20 20 20 22 53 45 4c 45 43 54 20 2a 20 46       "SELECT * F
39d0: 52 4f 4d 20 74 31 20 4f 52 44 45 52 20 42 59 20  ROM t1 ORDER BY 
39e0: 78 3b 22 5d 0d 0a 0d 0a 20 20 73 65 74 20 72 65  x;"]....  set re
39f0: 73 75 6c 74 0d 0a 7d 20 2d 63 6c 65 61 6e 75 70  sult..} -cleanup
3a00: 20 7b 0d 0a 20 20 63 61 74 63 68 20 7b 6f 62 6a   {..  catch {obj
3a10: 65 63 74 20 72 65 6d 6f 76 65 63 61 6c 6c 62 61  ect removecallba
3a20: 63 6b 20 24 63 61 6c 6c 62 61 63 6b 7d 0d 0a 0d  ck $callback}...
3a30: 0a 20 20 66 72 65 65 44 62 43 6f 6e 6e 65 63 74  .  freeDbConnect
3a40: 69 6f 6e 0d 0a 0d 0a 20 20 63 6c 65 61 6e 75 70  ion....  cleanup
3a50: 44 62 20 24 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a  Db $fileName....
3a60: 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c    unset -nocompl
3a70: 61 69 6e 20 72 65 73 75 6c 74 20 74 79 70 65 43  ain result typeC
3a80: 61 6c 6c 62 61 63 6b 73 20 63 61 6c 6c 62 61 63  allbacks callbac
3a90: 6b 20 6c 6f 67 20 63 6f 6e 6e 65 63 74 69 6f 6e  k log connection
3aa0: 20 64 62 20 66 69 6c 65 4e 61 6d 65 0d 0a 7d 20   db fileName..} 
3ab0: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 65 61  -constraints {ea
3ac0: 67 6c 65 20 63 6f 6d 6d 61 6e 64 2e 6f 62 6a 65  gle command.obje
3ad0: 63 74 20 6d 6f 6e 6f 42 75 67 32 38 20 63 6f 6d  ct monoBug28 com
3ae0: 6d 61 6e 64 2e 73 71 6c 20 63 6f 6d 70 69 6c 65  mand.sql compile
3af0: 2e 44 41 54 41 20 53 51 4c 69 74 65 5c 0d 0a 53  .DATA SQLite\..S
3b00: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
3b10: 65 7d 20 2d 72 65 73 75 6c 74 20 7b 7b 7b 63 6f  e} -result {{{co
3b20: 6e 76 65 72 74 20 74 72 75 65 7d 20 7b 63 6f 6d  nvert true} {com
3b30: 6d 61 6e 64 20 74 72 75 65 7d 20 7b 66 6c 61 67  mand true} {flag
3b40: 73 5c 0d 0a 7b 55 73 65 43 6f 6e 6e 65 63 74 69  s\..{UseConnecti
3b50: 6f 6e 42 69 6e 64 56 61 6c 75 65 43 61 6c 6c 62  onBindValueCallb
3b60: 61 63 6b 73 2c 20 55 73 65 50 61 72 61 6d 65 74  acks, UseParamet
3b70: 65 72 4e 61 6d 65 46 6f 72 54 79 70 65 4e 61 6d  erNameForTypeNam
3b80: 65 7d 7d 20 7b 70 61 72 61 6d 65 74 65 72 5c 0d  e}} {parameter\.
3b90: 0a 74 72 75 65 7d 20 7b 74 79 70 65 4e 61 6d 65  .true} {typeName
3ba0: 20 53 70 65 63 69 61 6c 7d 20 7b 69 6e 64 65 78   Special} {index
3bb0: 20 31 7d 20 7b 75 73 65 72 44 61 74 61 20 30 7d   1} {userData 0}
3bc0: 7d 20 31 32 33 34 7d 7d 0d 0a 0d 0a 23 23 23 23  } 1234}}....####
3bd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3be0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3bf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3c00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3c10: 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72  ###########....r
3c20: 75 6e 54 65 73 74 20 7b 74 65 73 74 20 74 79 70  unTest {test typ
3c30: 65 73 2d 33 2e 32 20 7b 62 69 6e 64 20 63 61 6c  es-3.2 {bind cal
3c40: 6c 62 61 63 6b 20 28 63 6f 6d 70 6c 65 74 65 29  lback (complete)
3c50: 7d 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20 75 6e  } -setup {..  un
3c60: 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20  set -nocomplain 
3c70: 6c 6f 67 0d 0a 0d 0a 20 20 73 65 74 75 70 44 62  log....  setupDb
3c80: 20 5b 73 65 74 20 66 69 6c 65 4e 61 6d 65 20 74   [set fileName t
3c90: 79 70 65 73 2d 33 2e 32 2e 64 62 5d 20 22 22 20  ypes-3.2.db] "" 
3ca0: 22 22 20 22 22 20 5c 0d 0a 20 20 20 20 20 20 22  "" "" \..      "
3cb0: 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 42 69 6e  UseConnectionBin
3cc0: 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 73 20  dValueCallbacks 
3cd0: 55 73 65 50 61 72 61 6d 65 74 65 72 4e 61 6d 65  UseParameterName
3ce0: 46 6f 72 54 79 70 65 4e 61 6d 65 22 0d 0a 7d 20  ForTypeName"..} 
3cf0: 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 71 6c 20 65  -body {..  sql e
3d00: 78 65 63 75 74 65 20 24 64 62 20 7b 0d 0a 20 20  xecute $db {..  
3d10: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
3d20: 31 28 78 20 53 50 45 43 49 41 4c 29 3b 0d 0a 20  1(x SPECIAL);.. 
3d30: 20 7d 0d 0a 0d 0a 20 20 73 65 74 20 63 61 6c 6c   }....  set call
3d40: 62 61 63 6b 20 7b 2d 63 61 6c 6c 62 61 63 6b 66  back {-callbackf
3d50: 6c 61 67 73 20 2b 44 65 66 61 75 6c 74 20 62 69  lags +Default bi
3d60: 6e 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 31  ndValueCallback1
3d70: 7d 0d 0a 20 20 73 65 74 20 63 6f 6e 6e 65 63 74  }..  set connect
3d80: 69 6f 6e 20 5b 67 65 74 44 62 43 6f 6e 6e 65 63  ion [getDbConnec
3d90: 74 69 6f 6e 5d 0d 0a 0d 0a 20 20 73 65 74 20 74  tion]....  set t
3da0: 79 70 65 43 61 6c 6c 62 61 63 6b 73 20 5b 6f 62  ypeCallbacks [ob
3db0: 6a 65 63 74 20 69 6e 76 6f 6b 65 20 2d 6d 61 72  ject invoke -mar
3dc0: 73 68 61 6c 66 6c 61 67 73 20 2b 44 79 6e 61 6d  shalflags +Dynam
3dd0: 69 63 43 61 6c 6c 62 61 63 6b 20 5c 0d 0a 20 20  icCallback \..  
3de0: 20 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e      System.Data.
3df0: 53 51 4c 69 74 65 2e 53 51 4c 69 74 65 54 79 70  SQLite.SQLiteTyp
3e00: 65 43 61 6c 6c 62 61 63 6b 73 20 43 72 65 61 74  eCallbacks Creat
3e10: 65 20 24 63 61 6c 6c 62 61 63 6b 20 6e 75 6c 6c  e $callback null
3e20: 20 5c 0d 0a 20 20 20 20 20 20 31 20 6e 75 6c 6c   \..      1 null
3e30: 5d 0d 0a 0d 0a 20 20 24 63 6f 6e 6e 65 63 74 69  ]....  $connecti
3e40: 6f 6e 20 53 65 74 54 79 70 65 43 61 6c 6c 62 61  on SetTypeCallba
3e50: 63 6b 73 20 53 50 45 43 49 41 4c 20 24 74 79 70  cks SPECIAL $typ
3e60: 65 43 61 6c 6c 62 61 63 6b 73 0d 0a 0d 0a 20 20  eCallbacks....  
3e70: 73 71 6c 20 65 78 65 63 75 74 65 20 24 64 62 20  sql execute $db 
3e80: 7b 0d 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  {..    INSERT IN
3e90: 54 4f 20 74 31 20 28 78 29 20 56 41 4c 55 45 53  TO t1 (x) VALUES
3ea0: 28 3f 29 3b 0d 0a 20 20 7d 20 5b 6c 69 73 74 20  (?);..  } [list 
3eb0: 53 70 65 63 69 61 6c 20 49 6e 74 36 34 20 35 36  Special Int64 56
3ec0: 37 38 5d 0d 0a 0d 0a 20 20 73 65 74 20 72 65 73  78]....  set res
3ed0: 75 6c 74 20 5b 6c 69 73 74 5d 0d 0a 0d 0a 20 20  ult [list]....  
3ee0: 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b  lappend result [
3ef0: 65 78 70 72 20 7b 0d 0a 20 20 20 20 5b 69 6e 66  expr {..    [inf
3f00: 6f 20 65 78 69 73 74 73 20 6c 6f 67 28 62 69 6e  o exists log(bin
3f10: 64 29 5d 20 3f 20 24 6c 6f 67 28 62 69 6e 64 29  d)] ? $log(bind)
3f20: 20 3a 20 22 3c 4d 49 53 53 49 4e 47 3e 22 0d 0a   : "<MISSING>"..
3f30: 20 20 7d 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e    }]....  lappen
3f40: 64 20 72 65 73 75 6c 74 20 5b 73 71 6c 20 65 78  d result [sql ex
3f50: 65 63 75 74 65 20 2d 65 78 65 63 75 74 65 20 72  ecute -execute r
3f60: 65 61 64 65 72 20 2d 66 6f 72 6d 61 74 20 6c 69  eader -format li
3f70: 73 74 20 24 64 62 20 5c 0d 0a 20 20 20 20 20 20  st $db \..      
3f80: 22 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  "SELECT * FROM t
3f90: 31 20 4f 52 44 45 52 20 42 59 20 78 3b 22 5d 0d  1 ORDER BY x;"].
3fa0: 0a 0d 0a 20 20 73 65 74 20 72 65 73 75 6c 74 0d  ...  set result.
3fb0: 0a 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0d 0a 20  .} -cleanup {.. 
3fc0: 20 63 61 74 63 68 20 7b 6f 62 6a 65 63 74 20 72   catch {object r
3fd0: 65 6d 6f 76 65 63 61 6c 6c 62 61 63 6b 20 24 63  emovecallback $c
3fe0: 61 6c 6c 62 61 63 6b 7d 0d 0a 0d 0a 20 20 66 72  allback}....  fr
3ff0: 65 65 44 62 43 6f 6e 6e 65 63 74 69 6f 6e 0d 0a  eeDbConnection..
4000: 0d 0a 20 20 63 6c 65 61 6e 75 70 44 62 20 24 66  ..  cleanupDb $f
4010: 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20 20 75 6e 73  ileName....  uns
4020: 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72  et -nocomplain r
4030: 65 73 75 6c 74 20 74 79 70 65 43 61 6c 6c 62 61  esult typeCallba
4040: 63 6b 73 20 63 61 6c 6c 62 61 63 6b 20 6c 6f 67  cks callback log
4050: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 64 62 20 66   connection db f
4060: 69 6c 65 4e 61 6d 65 0d 0a 7d 20 2d 63 6f 6e 73  ileName..} -cons
4070: 74 72 61 69 6e 74 73 20 7b 65 61 67 6c 65 20 63  traints {eagle c
4080: 6f 6d 6d 61 6e 64 2e 6f 62 6a 65 63 74 20 6d 6f  ommand.object mo
4090: 6e 6f 42 75 67 32 38 20 63 6f 6d 6d 61 6e 64 2e  noBug28 command.
40a0: 73 71 6c 20 63 6f 6d 70 69 6c 65 2e 44 41 54 41  sql compile.DATA
40b0: 20 53 51 4c 69 74 65 5c 0d 0a 53 79 73 74 65 6d   SQLite\..System
40c0: 2e 44 61 74 61 2e 53 51 4c 69 74 65 7d 20 2d 72  .Data.SQLite} -r
40d0: 65 73 75 6c 74 20 7b 7b 7b 63 6f 6e 76 65 72 74  esult {{{convert
40e0: 20 74 72 75 65 7d 20 7b 63 6f 6d 6d 61 6e 64 20   true} {command 
40f0: 74 72 75 65 7d 20 7b 66 6c 61 67 73 5c 0d 0a 7b  true} {flags\..{
4100: 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 42 69 6e  UseConnectionBin
4110: 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 73 2c  dValueCallbacks,
4120: 20 55 73 65 50 61 72 61 6d 65 74 65 72 4e 61 6d   UseParameterNam
4130: 65 46 6f 72 54 79 70 65 4e 61 6d 65 7d 7d 20 7b  eForTypeName}} {
4140: 70 61 72 61 6d 65 74 65 72 5c 0d 0a 74 72 75 65  parameter\..true
4150: 7d 20 7b 74 79 70 65 4e 61 6d 65 20 53 70 65 63  } {typeName Spec
4160: 69 61 6c 7d 20 7b 69 6e 64 65 78 20 31 7d 20 7b  ial} {index 1} {
4170: 75 73 65 72 44 61 74 61 20 31 7d 7d 20 7b 7d 7d  userData 1}} {}}
4180: 7d 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 23  }....###########
4190: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41d0: 23 23 23 23 0d 0a 0d 0a 72 75 6e 54 65 73 74 20  ####....runTest 
41e0: 7b 74 65 73 74 20 74 79 70 65 73 2d 33 2e 33 20  {test types-3.3 
41f0: 7b 62 69 6e 64 20 63 61 6c 6c 62 61 63 6b 20 28  {bind callback (
4200: 6d 6f 64 69 66 79 2f 69 6e 63 6f 6d 70 6c 65 74  modify/incomplet
4210: 65 29 7d 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20  e)} -setup {..  
4220: 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69  unset -nocomplai
4230: 6e 20 6c 6f 67 0d 0a 0d 0a 20 20 73 65 74 75 70  n log....  setup
4240: 44 62 20 5b 73 65 74 20 66 69 6c 65 4e 61 6d 65  Db [set fileName
4250: 20 74 79 70 65 73 2d 33 2e 33 2e 64 62 5d 20 22   types-3.3.db] "
4260: 22 20 22 22 20 22 22 20 5c 0d 0a 20 20 20 20 20  " "" "" \..     
4270: 20 22 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 42   "UseConnectionB
4280: 69 6e 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b  indValueCallback
4290: 73 20 55 73 65 50 61 72 61 6d 65 74 65 72 4e 61  s UseParameterNa
42a0: 6d 65 46 6f 72 54 79 70 65 4e 61 6d 65 22 0d 0a  meForTypeName"..
42b0: 7d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 71 6c  } -body {..  sql
42c0: 20 65 78 65 63 75 74 65 20 24 64 62 20 7b 0d 0a   execute $db {..
42d0: 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45      CREATE TABLE
42e0: 20 74 31 28 78 20 53 50 45 43 49 41 4c 29 3b 0d   t1(x SPECIAL);.
42f0: 0a 20 20 7d 0d 0a 0d 0a 20 20 73 65 74 20 63 61  .  }....  set ca
4300: 6c 6c 62 61 63 6b 20 7b 2d 63 61 6c 6c 62 61 63  llback {-callbac
4310: 6b 66 6c 61 67 73 20 2b 44 65 66 61 75 6c 74 20  kflags +Default 
4320: 62 69 6e 64 56 61 6c 75 65 43 61 6c 6c 62 61 63  bindValueCallbac
4330: 6b 31 7d 0d 0a 20 20 73 65 74 20 63 6f 6e 6e 65  k1}..  set conne
4340: 63 74 69 6f 6e 20 5b 67 65 74 44 62 43 6f 6e 6e  ction [getDbConn
4350: 65 63 74 69 6f 6e 5d 0d 0a 0d 0a 20 20 73 65 74  ection]....  set
4360: 20 74 79 70 65 43 61 6c 6c 62 61 63 6b 73 20 5b   typeCallbacks [
4370: 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20 2d 6d  object invoke -m
4380: 61 72 73 68 61 6c 66 6c 61 67 73 20 2b 44 79 6e  arshalflags +Dyn
4390: 61 6d 69 63 43 61 6c 6c 62 61 63 6b 20 5c 0d 0a  amicCallback \..
43a0: 20 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61 74        System.Dat
43b0: 61 2e 53 51 4c 69 74 65 2e 53 51 4c 69 74 65 54  a.SQLite.SQLiteT
43c0: 79 70 65 43 61 6c 6c 62 61 63 6b 73 20 43 72 65  ypeCallbacks Cre
43d0: 61 74 65 20 24 63 61 6c 6c 62 61 63 6b 20 6e 75  ate $callback nu
43e0: 6c 6c 20 5c 0d 0a 20 20 20 20 20 20 32 20 6e 75  ll \..      2 nu
43f0: 6c 6c 5d 0d 0a 0d 0a 20 20 24 63 6f 6e 6e 65 63  ll]....  $connec
4400: 74 69 6f 6e 20 53 65 74 54 79 70 65 43 61 6c 6c  tion SetTypeCall
4410: 62 61 63 6b 73 20 53 50 45 43 49 41 4c 20 24 74  backs SPECIAL $t
4420: 79 70 65 43 61 6c 6c 62 61 63 6b 73 0d 0a 0d 0a  ypeCallbacks....
4430: 20 20 73 71 6c 20 65 78 65 63 75 74 65 20 24 64    sql execute $d
4440: 62 20 7b 0d 0a 20 20 20 20 49 4e 53 45 52 54 20  b {..    INSERT 
4450: 49 4e 54 4f 20 74 31 20 28 78 29 20 56 41 4c 55  INTO t1 (x) VALU
4460: 45 53 28 3f 29 3b 0d 0a 20 20 7d 20 5b 6c 69 73  ES(?);..  } [lis
4470: 74 20 53 70 65 63 69 61 6c 20 49 6e 74 36 34 20  t Special Int64 
4480: 39 39 39 39 5d 0d 0a 0d 0a 20 20 73 65 74 20 72  9999]....  set r
4490: 65 73 75 6c 74 20 5b 6c 69 73 74 5d 0d 0a 0d 0a  esult [list]....
44a0: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74    lappend result
44b0: 20 5b 65 78 70 72 20 7b 0d 0a 20 20 20 20 5b 69   [expr {..    [i
44c0: 6e 66 6f 20 65 78 69 73 74 73 20 6c 6f 67 28 62  nfo exists log(b
44d0: 69 6e 64 29 5d 20 3f 20 24 6c 6f 67 28 62 69 6e  ind)] ? $log(bin
44e0: 64 29 20 3a 20 22 3c 4d 49 53 53 49 4e 47 3e 22  d) : "<MISSING>"
44f0: 0d 0a 20 20 7d 5d 0d 0a 0d 0a 20 20 6c 61 70 70  ..  }]....  lapp
4500: 65 6e 64 20 72 65 73 75 6c 74 20 5b 73 71 6c 20  end result [sql 
4510: 65 78 65 63 75 74 65 20 2d 65 78 65 63 75 74 65  execute -execute
4520: 20 72 65 61 64 65 72 20 2d 66 6f 72 6d 61 74 20   reader -format 
4530: 6c 69 73 74 20 24 64 62 20 5c 0d 0a 20 20 20 20  list $db \..    
4540: 20 20 22 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d    "SELECT * FROM
4550: 20 74 31 20 4f 52 44 45 52 20 42 59 20 78 3b 22   t1 ORDER BY x;"
4560: 5d 0d 0a 0d 0a 20 20 73 65 74 20 72 65 73 75 6c  ]....  set resul
4570: 74 0d 0a 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0d  t..} -cleanup {.
4580: 0a 20 20 63 61 74 63 68 20 7b 6f 62 6a 65 63 74  .  catch {object
4590: 20 72 65 6d 6f 76 65 63 61 6c 6c 62 61 63 6b 20   removecallback 
45a0: 24 63 61 6c 6c 62 61 63 6b 7d 0d 0a 0d 0a 20 20  $callback}....  
45b0: 66 72 65 65 44 62 43 6f 6e 6e 65 63 74 69 6f 6e  freeDbConnection
45c0: 0d 0a 0d 0a 20 20 63 6c 65 61 6e 75 70 44 62 20  ....  cleanupDb 
45d0: 24 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20 20 75  $fileName....  u
45e0: 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e  nset -nocomplain
45f0: 20 72 65 73 75 6c 74 20 74 79 70 65 43 61 6c 6c   result typeCall
4600: 62 61 63 6b 73 20 63 61 6c 6c 62 61 63 6b 20 6c  backs callback l
4610: 6f 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 64 62  og connection db
4620: 20 66 69 6c 65 4e 61 6d 65 0d 0a 7d 20 2d 63 6f   fileName..} -co
4630: 6e 73 74 72 61 69 6e 74 73 20 7b 65 61 67 6c 65  nstraints {eagle
4640: 20 63 6f 6d 6d 61 6e 64 2e 6f 62 6a 65 63 74 20   command.object 
4650: 6d 6f 6e 6f 42 75 67 32 38 20 63 6f 6d 6d 61 6e  monoBug28 comman
4660: 64 2e 73 71 6c 20 63 6f 6d 70 69 6c 65 2e 44 41  d.sql compile.DA
4670: 54 41 20 53 51 4c 69 74 65 5c 0d 0a 53 79 73 74  TA SQLite\..Syst
4680: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 7d 20  em.Data.SQLite} 
4690: 2d 72 65 73 75 6c 74 20 7b 7b 7b 63 6f 6e 76 65  -result {{{conve
46a0: 72 74 20 74 72 75 65 7d 20 7b 63 6f 6d 6d 61 6e  rt true} {comman
46b0: 64 20 74 72 75 65 7d 20 7b 66 6c 61 67 73 5c 0d  d true} {flags\.
46c0: 0a 7b 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 42  .{UseConnectionB
46d0: 69 6e 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b  indValueCallback
46e0: 73 2c 20 55 73 65 50 61 72 61 6d 65 74 65 72 4e  s, UseParameterN
46f0: 61 6d 65 46 6f 72 54 79 70 65 4e 61 6d 65 7d 7d  ameForTypeName}}
4700: 20 7b 70 61 72 61 6d 65 74 65 72 5c 0d 0a 74 72   {parameter\..tr
4710: 75 65 7d 20 7b 74 79 70 65 4e 61 6d 65 20 53 70  ue} {typeName Sp
4720: 65 63 69 61 6c 7d 20 7b 69 6e 64 65 78 20 31 7d  ecial} {index 1}
4730: 20 7b 75 73 65 72 44 61 74 61 20 32 7d 7d 20 63   {userData 2}} c
4740: 75 73 74 6f 6d 7d 7d 0d 0a 0d 0a 23 23 23 23 23  ustom}}....#####
4750: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4760: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4770: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4780: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4790: 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72 75  ##########....ru
47a0: 6e 54 65 73 74 20 7b 74 65 73 74 20 74 79 70 65  nTest {test type
47b0: 73 2d 34 2e 31 20 7b 72 65 61 64 20 63 61 6c 6c  s-4.1 {read call
47c0: 62 61 63 6b 20 28 65 78 63 65 70 74 69 6f 6e 29  back (exception)
47d0: 7d 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20 75 6e  } -setup {..  un
47e0: 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20  set -nocomplain 
47f0: 6c 6f 67 0d 0a 0d 0a 20 20 73 65 74 75 70 44 62  log....  setupDb
4800: 20 5b 73 65 74 20 66 69 6c 65 4e 61 6d 65 20 74   [set fileName t
4810: 79 70 65 73 2d 34 2e 31 2e 64 62 5d 20 22 22 20  ypes-4.1.db] "" 
4820: 22 22 20 22 22 20 5c 0d 0a 20 20 20 20 20 20 55  "" "" \..      U
4830: 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 52 65 61 64  seConnectionRead
4840: 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 73 0d 0a  ValueCallbacks..
4850: 7d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 71 6c  } -body {..  sql
4860: 20 65 78 65 63 75 74 65 20 24 64 62 20 7b 0d 0a   execute $db {..
4870: 20 20 20 20 43 52 45 41 54 45 20 54 41 42 4c 45      CREATE TABLE
4880: 20 74 31 28 78 20 53 50 45 43 49 41 4c 29 3b 0d   t1(x SPECIAL);.
4890: 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f  .    INSERT INTO
48a0: 20 74 31 20 28 78 29 20 56 41 4c 55 45 53 28 38   t1 (x) VALUES(8
48b0: 38 38 38 29 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  888);..  }....  
48c0: 73 65 74 20 63 61 6c 6c 62 61 63 6b 20 7b 2d 63  set callback {-c
48d0: 61 6c 6c 62 61 63 6b 66 6c 61 67 73 20 7b 2b 44  allbackflags {+D
48e0: 65 66 61 75 6c 74 20 54 68 72 6f 77 4f 6e 45 72  efault ThrowOnEr
48f0: 72 6f 72 7d 20 72 65 61 64 56 61 6c 75 65 43 61  ror} readValueCa
4900: 6c 6c 62 61 63 6b 31 7d 0d 0a 20 20 73 65 74 20  llback1}..  set 
4910: 63 6f 6e 6e 65 63 74 69 6f 6e 20 5b 67 65 74 44  connection [getD
4920: 62 43 6f 6e 6e 65 63 74 69 6f 6e 5d 0d 0a 0d 0a  bConnection]....
4930: 20 20 73 65 74 20 74 79 70 65 43 61 6c 6c 62 61    set typeCallba
4940: 63 6b 73 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f  cks [object invo
4950: 6b 65 20 2d 6d 61 72 73 68 61 6c 66 6c 61 67 73  ke -marshalflags
4960: 20 2b 44 79 6e 61 6d 69 63 43 61 6c 6c 62 61 63   +DynamicCallbac
4970: 6b 20 5c 0d 0a 20 20 20 20 20 20 53 79 73 74 65  k \..      Syste
4980: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 53 51  m.Data.SQLite.SQ
4990: 4c 69 74 65 54 79 70 65 43 61 6c 6c 62 61 63 6b  LiteTypeCallback
49a0: 73 20 43 72 65 61 74 65 20 6e 75 6c 6c 20 24 63  s Create null $c
49b0: 61 6c 6c 62 61 63 6b 20 5c 0d 0a 20 20 20 20 20  allback \..     
49c0: 20 6e 75 6c 6c 20 33 5d 0d 0a 0d 0a 20 20 24 63   null 3]....  $c
49d0: 6f 6e 6e 65 63 74 69 6f 6e 20 53 65 74 54 79 70  onnection SetTyp
49e0: 65 43 61 6c 6c 62 61 63 6b 73 20 53 50 45 43 49  eCallbacks SPECI
49f0: 41 4c 20 24 74 79 70 65 43 61 6c 6c 62 61 63 6b  AL $typeCallback
4a00: 73 0d 0a 0d 0a 20 20 73 65 74 20 72 65 73 75 6c  s....  set resul
4a10: 74 20 5b 6c 69 73 74 5d 0d 0a 0d 0a 20 20 6c 61  t [list]....  la
4a20: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61  ppend result [ca
4a30: 74 63 68 20 7b 0d 0a 20 20 20 20 73 71 6c 20 65  tch {..    sql e
4a40: 78 65 63 75 74 65 20 2d 65 78 65 63 75 74 65 20  xecute -execute 
4a50: 72 65 61 64 65 72 20 2d 66 6f 72 6d 61 74 20 6c  reader -format l
4a60: 69 73 74 20 24 64 62 20 7b 53 45 4c 45 43 54 20  ist $db {SELECT 
4a70: 2a 20 46 52 4f 4d 20 74 31 20 4f 52 44 45 52 20  * FROM t1 ORDER 
4a80: 42 59 20 78 3b 7d 0d 0a 20 20 7d 20 65 72 72 6f  BY x;}..  } erro
4a90: 72 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20  r]....  lappend 
4aa0: 72 65 73 75 6c 74 20 5b 65 78 74 72 61 63 74 53  result [extractS
4ab0: 79 73 74 65 6d 44 61 74 61 53 51 4c 69 74 65 45  ystemDataSQLiteE
4ac0: 78 63 65 70 74 69 6f 6e 4d 65 73 73 61 67 65 20  xceptionMessage 
4ad0: 24 65 72 72 6f 72 5d 0d 0a 0d 0a 20 20 6c 61 70  $error]....  lap
4ae0: 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 63 61 74  pend result [cat
4af0: 63 68 20 7b 0d 0a 20 20 20 20 73 71 6c 20 65 78  ch {..    sql ex
4b00: 65 63 75 74 65 20 2d 65 78 65 63 75 74 65 20 73  ecute -execute s
4b10: 63 61 6c 61 72 20 24 64 62 20 7b 53 45 4c 45 43  calar $db {SELEC
4b20: 54 20 43 4f 55 4e 54 28 2a 29 20 46 52 4f 4d 20  T COUNT(*) FROM 
4b30: 74 31 3b 7d 0d 0a 20 20 7d 20 65 72 72 6f 72 5d  t1;}..  } error]
4b40: 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72 65  ....  lappend re
4b50: 73 75 6c 74 20 5b 65 78 74 72 61 63 74 53 79 73  sult [extractSys
4b60: 74 65 6d 44 61 74 61 53 51 4c 69 74 65 45 78 63  temDataSQLiteExc
4b70: 65 70 74 69 6f 6e 4d 65 73 73 61 67 65 20 24 65  eptionMessage $e
4b80: 72 72 6f 72 5d 0d 0a 20 20 6c 61 70 70 65 6e 64  rror]..  lappend
4b90: 20 72 65 73 75 6c 74 20 5b 65 78 70 72 20 7b 5b   result [expr {[
4ba0: 69 6e 66 6f 20 65 78 69 73 74 73 20 6c 6f 67 28  info exists log(
4bb0: 72 65 61 64 29 5d 20 3f 20 24 6c 6f 67 28 72 65  read)] ? $log(re
4bc0: 61 64 29 20 3a 20 22 3c 4d 49 53 53 49 4e 47 3e  ad) : "<MISSING>
4bd0: 22 7d 5d 0d 0a 0d 0a 20 20 73 65 74 20 72 65 73  "}]....  set res
4be0: 75 6c 74 0d 0a 7d 20 2d 63 6c 65 61 6e 75 70 20  ult..} -cleanup 
4bf0: 7b 0d 0a 20 20 63 61 74 63 68 20 7b 6f 62 6a 65  {..  catch {obje
4c00: 63 74 20 72 65 6d 6f 76 65 63 61 6c 6c 62 61 63  ct removecallbac
4c10: 6b 20 24 63 61 6c 6c 62 61 63 6b 7d 0d 0a 0d 0a  k $callback}....
4c20: 20 20 66 72 65 65 44 62 43 6f 6e 6e 65 63 74 69    freeDbConnecti
4c30: 6f 6e 0d 0a 0d 0a 20 20 63 6c 65 61 6e 75 70 44  on....  cleanupD
4c40: 62 20 24 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20  b $fileName.... 
4c50: 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61   unset -nocompla
4c60: 69 6e 20 65 72 72 6f 72 20 72 65 73 75 6c 74 20  in error result 
4c70: 74 79 70 65 43 61 6c 6c 62 61 63 6b 73 20 63 61  typeCallbacks ca
4c80: 6c 6c 62 61 63 6b 20 6c 6f 67 20 63 6f 6e 6e 65  llback log conne
4c90: 63 74 69 6f 6e 20 64 62 20 5c 0d 0a 20 20 20 20  ction db \..    
4ca0: 20 20 66 69 6c 65 4e 61 6d 65 0d 0a 7d 20 2d 63    fileName..} -c
4cb0: 6f 6e 73 74 72 61 69 6e 74 73 20 7b 65 61 67 6c  onstraints {eagl
4cc0: 65 20 63 6f 6d 6d 61 6e 64 2e 6f 62 6a 65 63 74  e command.object
4cd0: 20 6d 6f 6e 6f 42 75 67 32 38 20 63 6f 6d 6d 61   monoBug28 comma
4ce0: 6e 64 2e 73 71 6c 20 63 6f 6d 70 69 6c 65 2e 44  nd.sql compile.D
4cf0: 41 54 41 20 53 51 4c 69 74 65 5c 0d 0a 53 79 73  ATA SQLite\..Sys
4d00: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 7d  tem.Data.SQLite}
4d10: 20 2d 72 65 73 75 6c 74 20 7b 31 20 7b 72 65 61   -result {1 {rea
4d20: 64 69 6e 67 20 6f 66 20 76 61 6c 75 65 20 63 61  ding of value ca
4d30: 6e 63 65 6c 65 64 7d 20 30 20 31 20 7b 7b 63 6f  nceled} 0 1 {{co
4d40: 6e 76 65 72 74 20 74 72 75 65 7d 5c 0d 0a 7b 64  nvert true}\..{d
4d50: 61 74 61 52 65 61 64 65 72 20 74 72 75 65 7d 20  ataReader true} 
4d60: 7b 66 6c 61 67 73 20 55 73 65 43 6f 6e 6e 65 63  {flags UseConnec
4d70: 74 69 6f 6e 52 65 61 64 56 61 6c 75 65 43 61 6c  tionReadValueCal
4d80: 6c 62 61 63 6b 73 7d 20 7b 65 76 65 6e 74 41 72  lbacks} {eventAr
4d90: 67 73 20 74 72 75 65 7d 5c 0d 0a 7b 74 79 70 65  gs true}\..{type
4da0: 4e 61 6d 65 20 53 50 45 43 49 41 4c 7d 20 7b 69  Name SPECIAL} {i
4db0: 6e 64 65 78 20 30 7d 20 7b 75 73 65 72 44 61 74  ndex 0} {userDat
4dc0: 61 20 33 7d 7d 7d 7d 0d 0a 0d 0a 23 23 23 23 23  a 3}}}}....#####
4dd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4de0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4df0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4e00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4e10: 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72 75  ##########....ru
4e20: 6e 54 65 73 74 20 7b 74 65 73 74 20 74 79 70 65  nTest {test type
4e30: 73 2d 35 2e 31 20 7b 62 69 6e 64 20 63 61 6c 6c  s-5.1 {bind call
4e40: 62 61 63 6b 20 28 65 78 63 65 70 74 69 6f 6e 29  back (exception)
4e50: 7d 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20 75 6e  } -setup {..  un
4e60: 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20  set -nocomplain 
4e70: 6c 6f 67 0d 0a 0d 0a 20 20 73 65 74 75 70 44 62  log....  setupDb
4e80: 20 5b 73 65 74 20 66 69 6c 65 4e 61 6d 65 20 74   [set fileName t
4e90: 79 70 65 73 2d 35 2e 31 2e 64 62 5d 20 22 22 20  ypes-5.1.db] "" 
4ea0: 22 22 20 22 22 20 5c 0d 0a 20 20 20 20 20 20 22  "" "" \..      "
4eb0: 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 42 69 6e  UseConnectionBin
4ec0: 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 73 20  dValueCallbacks 
4ed0: 55 73 65 50 61 72 61 6d 65 74 65 72 4e 61 6d 65  UseParameterName
4ee0: 46 6f 72 54 79 70 65 4e 61 6d 65 22 0d 0a 7d 20  ForTypeName"..} 
4ef0: 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 71 6c 20 65  -body {..  sql e
4f00: 78 65 63 75 74 65 20 24 64 62 20 7b 0d 0a 20 20  xecute $db {..  
4f10: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
4f20: 31 28 78 20 53 50 45 43 49 41 4c 29 3b 0d 0a 20  1(x SPECIAL);.. 
4f30: 20 7d 0d 0a 0d 0a 20 20 73 65 74 20 63 61 6c 6c   }....  set call
4f40: 62 61 63 6b 20 7b 2d 63 61 6c 6c 62 61 63 6b 66  back {-callbackf
4f50: 6c 61 67 73 20 7b 2b 44 65 66 61 75 6c 74 20 54  lags {+Default T
4f60: 68 72 6f 77 4f 6e 45 72 72 6f 72 7d 20 62 69 6e  hrowOnError} bin
4f70: 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 31 7d  dValueCallback1}
4f80: 0d 0a 20 20 73 65 74 20 63 6f 6e 6e 65 63 74 69  ..  set connecti
4f90: 6f 6e 20 5b 67 65 74 44 62 43 6f 6e 6e 65 63 74  on [getDbConnect
4fa0: 69 6f 6e 5d 0d 0a 0d 0a 20 20 73 65 74 20 74 79  ion]....  set ty
4fb0: 70 65 43 61 6c 6c 62 61 63 6b 73 20 5b 6f 62 6a  peCallbacks [obj
4fc0: 65 63 74 20 69 6e 76 6f 6b 65 20 2d 6d 61 72 73  ect invoke -mars
4fd0: 68 61 6c 66 6c 61 67 73 20 2b 44 79 6e 61 6d 69  halflags +Dynami
4fe0: 63 43 61 6c 6c 62 61 63 6b 20 5c 0d 0a 20 20 20  cCallback \..   
4ff0: 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53     System.Data.S
5000: 51 4c 69 74 65 2e 53 51 4c 69 74 65 54 79 70 65  QLite.SQLiteType
5010: 43 61 6c 6c 62 61 63 6b 73 20 43 72 65 61 74 65  Callbacks Create
5020: 20 24 63 61 6c 6c 62 61 63 6b 20 6e 75 6c 6c 20   $callback null 
5030: 5c 0d 0a 20 20 20 20 20 20 33 20 6e 75 6c 6c 5d  \..      3 null]
5040: 0d 0a 0d 0a 20 20 24 63 6f 6e 6e 65 63 74 69 6f  ....  $connectio
5050: 6e 20 53 65 74 54 79 70 65 43 61 6c 6c 62 61 63  n SetTypeCallbac
5060: 6b 73 20 53 50 45 43 49 41 4c 20 24 74 79 70 65  ks SPECIAL $type
5070: 43 61 6c 6c 62 61 63 6b 73 0d 0a 0d 0a 20 20 63  Callbacks....  c
5080: 61 74 63 68 20 7b 0d 0a 20 20 20 20 73 71 6c 20  atch {..    sql 
5090: 65 78 65 63 75 74 65 20 24 64 62 20 7b 0d 0a 20  execute $db {.. 
50a0: 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f       INSERT INTO
50b0: 20 74 31 20 28 78 29 20 56 41 4c 55 45 53 28 3f   t1 (x) VALUES(?
50c0: 29 3b 0d 0a 20 20 20 20 7d 20 5b 6c 69 73 74 20  );..    } [list 
50d0: 53 70 65 63 69 61 6c 20 49 6e 74 36 34 20 34 33  Special Int64 43
50e0: 32 31 5d 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 73 65  21]..  }....  se
50f0: 74 20 72 65 73 75 6c 74 20 5b 6c 69 73 74 5d 0d  t result [list].
5100: 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72 65 73  ...  lappend res
5110: 75 6c 74 20 5b 65 78 70 72 20 7b 0d 0a 20 20 20  ult [expr {..   
5120: 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6c 6f   [info exists lo
5130: 67 28 62 69 6e 64 29 5d 20 3f 20 24 6c 6f 67 28  g(bind)] ? $log(
5140: 62 69 6e 64 29 20 3a 20 22 3c 4d 49 53 53 49 4e  bind) : "<MISSIN
5150: 47 3e 22 0d 0a 20 20 7d 5d 0d 0a 0d 0a 20 20 6c  G>"..  }]....  l
5160: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 73  append result [s
5170: 71 6c 20 65 78 65 63 75 74 65 20 2d 65 78 65 63  ql execute -exec
5180: 75 74 65 20 72 65 61 64 65 72 20 2d 66 6f 72 6d  ute reader -form
5190: 61 74 20 6c 69 73 74 20 24 64 62 20 5c 0d 0a 20  at list $db \.. 
51a0: 20 20 20 20 20 22 53 45 4c 45 43 54 20 2a 20 46       "SELECT * F
51b0: 52 4f 4d 20 74 31 20 4f 52 44 45 52 20 42 59 20  ROM t1 ORDER BY 
51c0: 78 3b 22 5d 0d 0a 0d 0a 20 20 73 65 74 20 72 65  x;"]....  set re
51d0: 73 75 6c 74 0d 0a 7d 20 2d 63 6c 65 61 6e 75 70  sult..} -cleanup
51e0: 20 7b 0d 0a 20 20 63 61 74 63 68 20 7b 6f 62 6a   {..  catch {obj
51f0: 65 63 74 20 72 65 6d 6f 76 65 63 61 6c 6c 62 61  ect removecallba
5200: 63 6b 20 24 63 61 6c 6c 62 61 63 6b 7d 0d 0a 0d  ck $callback}...
5210: 0a 20 20 66 72 65 65 44 62 43 6f 6e 6e 65 63 74  .  freeDbConnect
5220: 69 6f 6e 0d 0a 0d 0a 20 20 63 6c 65 61 6e 75 70  ion....  cleanup
5230: 44 62 20 24 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a  Db $fileName....
5240: 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c    unset -nocompl
5250: 61 69 6e 20 72 65 73 75 6c 74 20 74 79 70 65 43  ain result typeC
5260: 61 6c 6c 62 61 63 6b 73 20 63 61 6c 6c 62 61 63  allbacks callbac
5270: 6b 20 6c 6f 67 20 63 6f 6e 6e 65 63 74 69 6f 6e  k log connection
5280: 20 64 62 20 66 69 6c 65 4e 61 6d 65 0d 0a 7d 20   db fileName..} 
5290: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 65 61  -constraints {ea
52a0: 67 6c 65 20 63 6f 6d 6d 61 6e 64 2e 6f 62 6a 65  gle command.obje
52b0: 63 74 20 6d 6f 6e 6f 42 75 67 32 38 20 63 6f 6d  ct monoBug28 com
52c0: 6d 61 6e 64 2e 73 71 6c 20 63 6f 6d 70 69 6c 65  mand.sql compile
52d0: 2e 44 41 54 41 20 53 51 4c 69 74 65 5c 0d 0a 53  .DATA SQLite\..S
52e0: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
52f0: 65 7d 20 2d 72 65 73 75 6c 74 20 7b 7b 7b 63 6f  e} -result {{{co
5300: 6e 76 65 72 74 20 74 72 75 65 7d 20 7b 63 6f 6d  nvert true} {com
5310: 6d 61 6e 64 20 74 72 75 65 7d 20 7b 66 6c 61 67  mand true} {flag
5320: 73 5c 0d 0a 7b 55 73 65 43 6f 6e 6e 65 63 74 69  s\..{UseConnecti
5330: 6f 6e 42 69 6e 64 56 61 6c 75 65 43 61 6c 6c 62  onBindValueCallb
5340: 61 63 6b 73 2c 20 55 73 65 50 61 72 61 6d 65 74  acks, UseParamet
5350: 65 72 4e 61 6d 65 46 6f 72 54 79 70 65 4e 61 6d  erNameForTypeNam
5360: 65 7d 7d 20 7b 70 61 72 61 6d 65 74 65 72 5c 0d  e}} {parameter\.
5370: 0a 74 72 75 65 7d 20 7b 74 79 70 65 4e 61 6d 65  .true} {typeName
5380: 20 53 70 65 63 69 61 6c 7d 20 7b 69 6e 64 65 78   Special} {index
5390: 20 31 7d 20 7b 75 73 65 72 44 61 74 61 20 33 7d   1} {userData 3}
53a0: 7d 20 7b 7d 7d 7d 0d 0a 0d 0a 23 23 23 23 23 23  } {}}}....######
53b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
53c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
53d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
53e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
53f0: 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 63 61 74  #########....cat
5400: 63 68 20 7b 65 76 61 6c 20 6f 62 6a 65 63 74 20  ch {eval object 
5410: 64 69 73 70 6f 73 65 20 5b 69 6e 66 6f 20 6f 62  dispose [info ob
5420: 6a 65 63 74 73 20 53 79 73 74 65 6d 23 42 6f 6f  jects System#Boo
5430: 6c 65 61 6e 23 2a 5d 7d 0d 0a 0d 0a 23 23 23 23  lean#*]}....####
5440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5470: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5480: 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72  ###########....r
5490: 65 6e 61 6d 65 20 72 65 61 64 56 61 6c 75 65 43  ename readValueC
54a0: 61 6c 6c 62 61 63 6b 31 20 22 22 0d 0a 72 65 6e  allback1 ""..ren
54b0: 61 6d 65 20 62 69 6e 64 56 61 6c 75 65 43 61 6c  ame bindValueCal
54c0: 6c 62 61 63 6b 31 20 22 22 0d 0a 0d 0a 23 23 23  lback1 ""....###
54d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
54e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
54f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5500: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5510: 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a  ############....
5520: 72 75 6e 53 51 4c 69 74 65 54 65 73 74 45 70 69  runSQLiteTestEpi
5530: 6c 6f 67 75 65 0d 0a 72 75 6e 54 65 73 74 45 70  logue..runTestEp
5540: 69 6c 6f 67 75 65 0d 0a                          ilogue..