System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 14c09aa20a566257d889f7a930c3272591d689af:


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 63 6f  ompile.DATA\..co
33b0: 6d 70 69 6c 65 2e 45 4d 49 54 20 53 51 4c 69 74  mpile.EMIT SQLit
33c0: 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  e System.Data.SQ
33d0: 4c 69 74 65 7d 20 2d 72 65 73 75 6c 74 20 24 65  Lite} -result $e
33e0: 78 70 65 63 74 65 64 52 65 73 75 6c 74 7d 0d 0a  xpectedResult}..
33f0: 0d 0a 20 20 72 65 6e 61 6d 65 20 72 65 61 64 56  ..  rename readV
3400: 61 6c 75 65 43 61 6c 6c 62 61 63 6b 32 20 22 22  alueCallback2 ""
3410: 0d 0a 7d 0d 0a 0d 0a 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 23 23 23 23 23 23 23  ################
3460: 23 23 23 23 23 23 0d 0a 0d 0a 6f 62 6a 65 63 74  ######....object
3470: 20 69 6e 76 6f 6b 65 20 49 6e 74 65 72 70 72 65   invoke Interpre
3480: 74 65 72 2e 47 65 74 41 63 74 69 76 65 20 44 61  ter.GetActive Da
3490: 74 65 54 69 6d 65 46 6f 72 6d 61 74 20 24 73 61  teTimeFormat $sa
34a0: 76 65 64 44 61 74 65 54 69 6d 65 46 6f 72 6d 61  vedDateTimeForma
34b0: 74 0d 0a 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70  t..unset -nocomp
34c0: 6c 61 69 6e 20 73 61 76 65 64 44 61 74 65 54 69  lain savedDateTi
34d0: 6d 65 46 6f 72 6d 61 74 0d 0a 0d 0a 6f 62 6a 65  meFormat....obje
34e0: 63 74 20 69 6e 76 6f 6b 65 20 49 6e 74 65 72 70  ct invoke Interp
34f0: 72 65 74 65 72 2e 47 65 74 41 63 74 69 76 65 20  reter.GetActive 
3500: 44 61 74 65 54 69 6d 65 4b 69 6e 64 20 24 73 61  DateTimeKind $sa
3510: 76 65 64 44 61 74 65 54 69 6d 65 4b 69 6e 64 0d  vedDateTimeKind.
3520: 0a 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61  .unset -nocompla
3530: 69 6e 20 73 61 76 65 64 44 61 74 65 54 69 6d 65  in savedDateTime
3540: 4b 69 6e 64 0d 0a 0d 0a 23 23 23 23 23 23 23 23  Kind....########
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 23 23 23 23 23 23  ################
3590: 23 23 23 23 23 23 23 0d 0a 0d 0a 75 6e 73 65 74  #######....unset
35a0: 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 69 20 72   -nocomplain i r
35b0: 65 61 64 41 72 67 73 20 70 61 72 61 6d 73 20 74  eadArgs params t
35c0: 79 70 65 4e 61 6d 65 20 6d 65 74 68 6f 64 4e 61  ypeName methodNa
35d0: 6d 65 20 69 73 41 72 72 61 79 20 70 72 6f 70 65  me isArray prope
35e0: 72 74 79 4e 61 6d 65 20 5c 0d 0a 20 20 20 20 69  rtyName \..    i
35f0: 73 52 65 71 75 69 72 65 64 20 76 61 6c 75 65 20  sRequired value 
3600: 65 78 70 65 63 74 65 64 52 65 73 75 6c 74 73 20  expectedResults 
3610: 65 78 70 65 63 74 65 64 52 65 73 75 6c 74 0d 0a  expectedResult..
3620: 0d 0a 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 23 23  ################
3660: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3670: 23 0d 0a 0d 0a 72 75 6e 54 65 73 74 20 7b 74 65  #....runTest {te
3680: 73 74 20 74 79 70 65 73 2d 33 2e 31 20 7b 62 69  st types-3.1 {bi
3690: 6e 64 20 63 61 6c 6c 62 61 63 6b 20 28 69 6e 63  nd callback (inc
36a0: 6f 6d 70 6c 65 74 65 29 7d 20 2d 73 65 74 75 70  omplete)} -setup
36b0: 20 7b 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63   {..  unset -noc
36c0: 6f 6d 70 6c 61 69 6e 20 6c 6f 67 0d 0a 0d 0a 20  omplain log.... 
36d0: 20 73 65 74 75 70 44 62 20 5b 73 65 74 20 66 69   setupDb [set fi
36e0: 6c 65 4e 61 6d 65 20 74 79 70 65 73 2d 33 2e 31  leName types-3.1
36f0: 2e 64 62 5d 20 22 22 20 22 22 20 22 22 20 5c 0d  .db] "" "" "" \.
3700: 0a 20 20 20 20 20 20 22 55 73 65 43 6f 6e 6e 65  .      "UseConne
3710: 63 74 69 6f 6e 42 69 6e 64 56 61 6c 75 65 43 61  ctionBindValueCa
3720: 6c 6c 62 61 63 6b 73 20 55 73 65 50 61 72 61 6d  llbacks UseParam
3730: 65 74 65 72 4e 61 6d 65 46 6f 72 54 79 70 65 4e  eterNameForTypeN
3740: 61 6d 65 22 0d 0a 7d 20 2d 62 6f 64 79 20 7b 0d  ame"..} -body {.
3750: 0a 20 20 73 71 6c 20 65 78 65 63 75 74 65 20 24  .  sql execute $
3760: 64 62 20 7b 0d 0a 20 20 20 20 43 52 45 41 54 45  db {..    CREATE
3770: 20 54 41 42 4c 45 20 74 31 28 78 20 53 50 45 43   TABLE t1(x SPEC
3780: 49 41 4c 29 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20  IAL);..  }....  
3790: 73 65 74 20 63 61 6c 6c 62 61 63 6b 20 7b 2d 63  set callback {-c
37a0: 61 6c 6c 62 61 63 6b 66 6c 61 67 73 20 2b 44 65  allbackflags +De
37b0: 66 61 75 6c 74 20 62 69 6e 64 56 61 6c 75 65 43  fault bindValueC
37c0: 61 6c 6c 62 61 63 6b 31 7d 0d 0a 20 20 73 65 74  allback1}..  set
37d0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 5b 67 65 74   connection [get
37e0: 44 62 43 6f 6e 6e 65 63 74 69 6f 6e 5d 0d 0a 0d  DbConnection]...
37f0: 0a 20 20 73 65 74 20 74 79 70 65 43 61 6c 6c 62  .  set typeCallb
3800: 61 63 6b 73 20 5b 6f 62 6a 65 63 74 20 69 6e 76  acks [object inv
3810: 6f 6b 65 20 2d 6d 61 72 73 68 61 6c 66 6c 61 67  oke -marshalflag
3820: 73 20 2b 44 79 6e 61 6d 69 63 43 61 6c 6c 62 61  s +DynamicCallba
3830: 63 6b 20 5c 0d 0a 20 20 20 20 20 20 53 79 73 74  ck \..      Syst
3840: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 53  em.Data.SQLite.S
3850: 51 4c 69 74 65 54 79 70 65 43 61 6c 6c 62 61 63  QLiteTypeCallbac
3860: 6b 73 20 43 72 65 61 74 65 20 24 63 61 6c 6c 62  ks Create $callb
3870: 61 63 6b 20 6e 75 6c 6c 20 5c 0d 0a 20 20 20 20  ack null \..    
3880: 20 20 30 20 6e 75 6c 6c 5d 0d 0a 0d 0a 20 20 24    0 null]....  $
3890: 63 6f 6e 6e 65 63 74 69 6f 6e 20 53 65 74 54 79  connection SetTy
38a0: 70 65 43 61 6c 6c 62 61 63 6b 73 20 53 50 45 43  peCallbacks SPEC
38b0: 49 41 4c 20 24 74 79 70 65 43 61 6c 6c 62 61 63  IAL $typeCallbac
38c0: 6b 73 0d 0a 0d 0a 20 20 73 71 6c 20 65 78 65 63  ks....  sql exec
38d0: 75 74 65 20 24 64 62 20 7b 0d 0a 20 20 20 20 49  ute $db {..    I
38e0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 28 78  NSERT INTO t1 (x
38f0: 29 20 56 41 4c 55 45 53 28 3f 29 3b 0d 0a 20 20  ) VALUES(?);..  
3900: 7d 20 5b 6c 69 73 74 20 53 70 65 63 69 61 6c 20  } [list Special 
3910: 49 6e 74 36 34 20 31 32 33 34 5d 0d 0a 0d 0a 20  Int64 1234].... 
3920: 20 73 65 74 20 72 65 73 75 6c 74 20 5b 6c 69 73   set result [lis
3930: 74 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20  t]....  lappend 
3940: 72 65 73 75 6c 74 20 5b 65 78 70 72 20 7b 0d 0a  result [expr {..
3950: 20 20 20 20 5b 69 6e 66 6f 20 65 78 69 73 74 73      [info exists
3960: 20 6c 6f 67 28 62 69 6e 64 29 5d 20 3f 20 24 6c   log(bind)] ? $l
3970: 6f 67 28 62 69 6e 64 29 20 3a 20 22 3c 4d 49 53  og(bind) : "<MIS
3980: 53 49 4e 47 3e 22 0d 0a 20 20 7d 5d 0d 0a 0d 0a  SING>"..  }]....
3990: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74    lappend result
39a0: 20 5b 73 71 6c 20 65 78 65 63 75 74 65 20 2d 65   [sql execute -e
39b0: 78 65 63 75 74 65 20 72 65 61 64 65 72 20 2d 66  xecute reader -f
39c0: 6f 72 6d 61 74 20 6c 69 73 74 20 24 64 62 20 5c  ormat list $db \
39d0: 0d 0a 20 20 20 20 20 20 22 53 45 4c 45 43 54 20  ..      "SELECT 
39e0: 2a 20 46 52 4f 4d 20 74 31 20 4f 52 44 45 52 20  * FROM t1 ORDER 
39f0: 42 59 20 78 3b 22 5d 0d 0a 0d 0a 20 20 73 65 74  BY x;"]....  set
3a00: 20 72 65 73 75 6c 74 0d 0a 7d 20 2d 63 6c 65 61   result..} -clea
3a10: 6e 75 70 20 7b 0d 0a 20 20 63 61 74 63 68 20 7b  nup {..  catch {
3a20: 6f 62 6a 65 63 74 20 72 65 6d 6f 76 65 63 61 6c  object removecal
3a30: 6c 62 61 63 6b 20 24 63 61 6c 6c 62 61 63 6b 7d  lback $callback}
3a40: 0d 0a 0d 0a 20 20 66 72 65 65 44 62 43 6f 6e 6e  ....  freeDbConn
3a50: 65 63 74 69 6f 6e 0d 0a 0d 0a 20 20 63 6c 65 61  ection....  clea
3a60: 6e 75 70 44 62 20 24 66 69 6c 65 4e 61 6d 65 0d  nupDb $fileName.
3a70: 0a 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f  ...  unset -noco
3a80: 6d 70 6c 61 69 6e 20 72 65 73 75 6c 74 20 74 79  mplain result ty
3a90: 70 65 43 61 6c 6c 62 61 63 6b 73 20 63 61 6c 6c  peCallbacks call
3aa0: 62 61 63 6b 20 6c 6f 67 20 63 6f 6e 6e 65 63 74  back log connect
3ab0: 69 6f 6e 20 64 62 20 66 69 6c 65 4e 61 6d 65 0d  ion db fileName.
3ac0: 0a 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20  .} -constraints 
3ad0: 7b 65 61 67 6c 65 20 63 6f 6d 6d 61 6e 64 2e 6f  {eagle command.o
3ae0: 62 6a 65 63 74 20 6d 6f 6e 6f 42 75 67 32 38 20  bject monoBug28 
3af0: 63 6f 6d 6d 61 6e 64 2e 73 71 6c 20 63 6f 6d 70  command.sql comp
3b00: 69 6c 65 2e 44 41 54 41 5c 0d 0a 63 6f 6d 70 69  ile.DATA\..compi
3b10: 6c 65 2e 45 4d 49 54 20 53 51 4c 69 74 65 20 53  le.EMIT SQLite S
3b20: 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
3b30: 65 7d 20 2d 72 65 73 75 6c 74 20 7b 7b 7b 63 6f  e} -result {{{co
3b40: 6e 76 65 72 74 20 74 72 75 65 7d 20 7b 63 6f 6d  nvert true} {com
3b50: 6d 61 6e 64 20 74 72 75 65 7d 5c 0d 0a 7b 66 6c  mand true}\..{fl
3b60: 61 67 73 20 7b 55 73 65 43 6f 6e 6e 65 63 74 69  ags {UseConnecti
3b70: 6f 6e 42 69 6e 64 56 61 6c 75 65 43 61 6c 6c 62  onBindValueCallb
3b80: 61 63 6b 73 2c 20 55 73 65 50 61 72 61 6d 65 74  acks, UseParamet
3b90: 65 72 4e 61 6d 65 46 6f 72 54 79 70 65 4e 61 6d  erNameForTypeNam
3ba0: 65 7d 7d 5c 0d 0a 7b 70 61 72 61 6d 65 74 65 72  e}}\..{parameter
3bb0: 20 74 72 75 65 7d 20 7b 74 79 70 65 4e 61 6d 65   true} {typeName
3bc0: 20 53 70 65 63 69 61 6c 7d 20 7b 69 6e 64 65 78   Special} {index
3bd0: 20 31 7d 20 7b 75 73 65 72 44 61 74 61 20 30 7d   1} {userData 0}
3be0: 7d 20 31 32 33 34 7d 7d 0d 0a 0d 0a 23 23 23 23  } 1234}}....####
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 23 23 23 23 23  ################
3c20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3c30: 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72  ###########....r
3c40: 75 6e 54 65 73 74 20 7b 74 65 73 74 20 74 79 70  unTest {test typ
3c50: 65 73 2d 33 2e 32 20 7b 62 69 6e 64 20 63 61 6c  es-3.2 {bind cal
3c60: 6c 62 61 63 6b 20 28 63 6f 6d 70 6c 65 74 65 29  lback (complete)
3c70: 7d 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20 75 6e  } -setup {..  un
3c80: 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20  set -nocomplain 
3c90: 6c 6f 67 0d 0a 0d 0a 20 20 73 65 74 75 70 44 62  log....  setupDb
3ca0: 20 5b 73 65 74 20 66 69 6c 65 4e 61 6d 65 20 74   [set fileName t
3cb0: 79 70 65 73 2d 33 2e 32 2e 64 62 5d 20 22 22 20  ypes-3.2.db] "" 
3cc0: 22 22 20 22 22 20 5c 0d 0a 20 20 20 20 20 20 22  "" "" \..      "
3cd0: 55 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 42 69 6e  UseConnectionBin
3ce0: 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 73 20  dValueCallbacks 
3cf0: 55 73 65 50 61 72 61 6d 65 74 65 72 4e 61 6d 65  UseParameterName
3d00: 46 6f 72 54 79 70 65 4e 61 6d 65 22 0d 0a 7d 20  ForTypeName"..} 
3d10: 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 71 6c 20 65  -body {..  sql e
3d20: 78 65 63 75 74 65 20 24 64 62 20 7b 0d 0a 20 20  xecute $db {..  
3d30: 20 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74    CREATE TABLE t
3d40: 31 28 78 20 53 50 45 43 49 41 4c 29 3b 0d 0a 20  1(x SPECIAL);.. 
3d50: 20 7d 0d 0a 0d 0a 20 20 73 65 74 20 63 61 6c 6c   }....  set call
3d60: 62 61 63 6b 20 7b 2d 63 61 6c 6c 62 61 63 6b 66  back {-callbackf
3d70: 6c 61 67 73 20 2b 44 65 66 61 75 6c 74 20 62 69  lags +Default bi
3d80: 6e 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 31  ndValueCallback1
3d90: 7d 0d 0a 20 20 73 65 74 20 63 6f 6e 6e 65 63 74  }..  set connect
3da0: 69 6f 6e 20 5b 67 65 74 44 62 43 6f 6e 6e 65 63  ion [getDbConnec
3db0: 74 69 6f 6e 5d 0d 0a 0d 0a 20 20 73 65 74 20 74  tion]....  set t
3dc0: 79 70 65 43 61 6c 6c 62 61 63 6b 73 20 5b 6f 62  ypeCallbacks [ob
3dd0: 6a 65 63 74 20 69 6e 76 6f 6b 65 20 2d 6d 61 72  ject invoke -mar
3de0: 73 68 61 6c 66 6c 61 67 73 20 2b 44 79 6e 61 6d  shalflags +Dynam
3df0: 69 63 43 61 6c 6c 62 61 63 6b 20 5c 0d 0a 20 20  icCallback \..  
3e00: 20 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e      System.Data.
3e10: 53 51 4c 69 74 65 2e 53 51 4c 69 74 65 54 79 70  SQLite.SQLiteTyp
3e20: 65 43 61 6c 6c 62 61 63 6b 73 20 43 72 65 61 74  eCallbacks Creat
3e30: 65 20 24 63 61 6c 6c 62 61 63 6b 20 6e 75 6c 6c  e $callback null
3e40: 20 5c 0d 0a 20 20 20 20 20 20 31 20 6e 75 6c 6c   \..      1 null
3e50: 5d 0d 0a 0d 0a 20 20 24 63 6f 6e 6e 65 63 74 69  ]....  $connecti
3e60: 6f 6e 20 53 65 74 54 79 70 65 43 61 6c 6c 62 61  on SetTypeCallba
3e70: 63 6b 73 20 53 50 45 43 49 41 4c 20 24 74 79 70  cks SPECIAL $typ
3e80: 65 43 61 6c 6c 62 61 63 6b 73 0d 0a 0d 0a 20 20  eCallbacks....  
3e90: 73 71 6c 20 65 78 65 63 75 74 65 20 24 64 62 20  sql execute $db 
3ea0: 7b 0d 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e  {..    INSERT IN
3eb0: 54 4f 20 74 31 20 28 78 29 20 56 41 4c 55 45 53  TO t1 (x) VALUES
3ec0: 28 3f 29 3b 0d 0a 20 20 7d 20 5b 6c 69 73 74 20  (?);..  } [list 
3ed0: 53 70 65 63 69 61 6c 20 49 6e 74 36 34 20 35 36  Special Int64 56
3ee0: 37 38 5d 0d 0a 0d 0a 20 20 73 65 74 20 72 65 73  78]....  set res
3ef0: 75 6c 74 20 5b 6c 69 73 74 5d 0d 0a 0d 0a 20 20  ult [list]....  
3f00: 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b  lappend result [
3f10: 65 78 70 72 20 7b 0d 0a 20 20 20 20 5b 69 6e 66  expr {..    [inf
3f20: 6f 20 65 78 69 73 74 73 20 6c 6f 67 28 62 69 6e  o exists log(bin
3f30: 64 29 5d 20 3f 20 24 6c 6f 67 28 62 69 6e 64 29  d)] ? $log(bind)
3f40: 20 3a 20 22 3c 4d 49 53 53 49 4e 47 3e 22 0d 0a   : "<MISSING>"..
3f50: 20 20 7d 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e    }]....  lappen
3f60: 64 20 72 65 73 75 6c 74 20 5b 73 71 6c 20 65 78  d result [sql ex
3f70: 65 63 75 74 65 20 2d 65 78 65 63 75 74 65 20 72  ecute -execute r
3f80: 65 61 64 65 72 20 2d 66 6f 72 6d 61 74 20 6c 69  eader -format li
3f90: 73 74 20 24 64 62 20 5c 0d 0a 20 20 20 20 20 20  st $db \..      
3fa0: 22 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  "SELECT * FROM t
3fb0: 31 20 4f 52 44 45 52 20 42 59 20 78 3b 22 5d 0d  1 ORDER BY x;"].
3fc0: 0a 0d 0a 20 20 73 65 74 20 72 65 73 75 6c 74 0d  ...  set result.
3fd0: 0a 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0d 0a 20  .} -cleanup {.. 
3fe0: 20 63 61 74 63 68 20 7b 6f 62 6a 65 63 74 20 72   catch {object r
3ff0: 65 6d 6f 76 65 63 61 6c 6c 62 61 63 6b 20 24 63  emovecallback $c
4000: 61 6c 6c 62 61 63 6b 7d 0d 0a 0d 0a 20 20 66 72  allback}....  fr
4010: 65 65 44 62 43 6f 6e 6e 65 63 74 69 6f 6e 0d 0a  eeDbConnection..
4020: 0d 0a 20 20 63 6c 65 61 6e 75 70 44 62 20 24 66  ..  cleanupDb $f
4030: 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20 20 75 6e 73  ileName....  uns
4040: 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72  et -nocomplain r
4050: 65 73 75 6c 74 20 74 79 70 65 43 61 6c 6c 62 61  esult typeCallba
4060: 63 6b 73 20 63 61 6c 6c 62 61 63 6b 20 6c 6f 67  cks callback log
4070: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 64 62 20 66   connection db f
4080: 69 6c 65 4e 61 6d 65 0d 0a 7d 20 2d 63 6f 6e 73  ileName..} -cons
4090: 74 72 61 69 6e 74 73 20 7b 65 61 67 6c 65 20 63  traints {eagle c
40a0: 6f 6d 6d 61 6e 64 2e 6f 62 6a 65 63 74 20 6d 6f  ommand.object mo
40b0: 6e 6f 42 75 67 32 38 20 63 6f 6d 6d 61 6e 64 2e  noBug28 command.
40c0: 73 71 6c 20 63 6f 6d 70 69 6c 65 2e 44 41 54 41  sql compile.DATA
40d0: 5c 0d 0a 63 6f 6d 70 69 6c 65 2e 45 4d 49 54 20  \..compile.EMIT 
40e0: 53 51 4c 69 74 65 20 53 79 73 74 65 6d 2e 44 61  SQLite System.Da
40f0: 74 61 2e 53 51 4c 69 74 65 7d 20 2d 72 65 73 75  ta.SQLite} -resu
4100: 6c 74 20 7b 7b 7b 63 6f 6e 76 65 72 74 20 74 72  lt {{{convert tr
4110: 75 65 7d 20 7b 63 6f 6d 6d 61 6e 64 20 74 72 75  ue} {command tru
4120: 65 7d 5c 0d 0a 7b 66 6c 61 67 73 20 7b 55 73 65  e}\..{flags {Use
4130: 43 6f 6e 6e 65 63 74 69 6f 6e 42 69 6e 64 56 61  ConnectionBindVa
4140: 6c 75 65 43 61 6c 6c 62 61 63 6b 73 2c 20 55 73  lueCallbacks, Us
4150: 65 50 61 72 61 6d 65 74 65 72 4e 61 6d 65 46 6f  eParameterNameFo
4160: 72 54 79 70 65 4e 61 6d 65 7d 7d 5c 0d 0a 7b 70  rTypeName}}\..{p
4170: 61 72 61 6d 65 74 65 72 20 74 72 75 65 7d 20 7b  arameter true} {
4180: 74 79 70 65 4e 61 6d 65 20 53 70 65 63 69 61 6c  typeName Special
4190: 7d 20 7b 69 6e 64 65 78 20 31 7d 20 7b 75 73 65  } {index 1} {use
41a0: 72 44 61 74 61 20 31 7d 7d 20 7b 7d 7d 7d 0d 0a  rData 1}} {}}}..
41b0: 0d 0a 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 23 23 23 23 23 23 23 23 23 23 23 23  ################
41e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
41f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4200: 23 0d 0a 0d 0a 72 75 6e 54 65 73 74 20 7b 74 65  #....runTest {te
4210: 73 74 20 74 79 70 65 73 2d 33 2e 33 20 7b 62 69  st types-3.3 {bi
4220: 6e 64 20 63 61 6c 6c 62 61 63 6b 20 28 6d 6f 64  nd callback (mod
4230: 69 66 79 2f 69 6e 63 6f 6d 70 6c 65 74 65 29 7d  ify/incomplete)}
4240: 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20 75 6e 73   -setup {..  uns
4250: 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 6c  et -nocomplain l
4260: 6f 67 0d 0a 0d 0a 20 20 73 65 74 75 70 44 62 20  og....  setupDb 
4270: 5b 73 65 74 20 66 69 6c 65 4e 61 6d 65 20 74 79  [set fileName ty
4280: 70 65 73 2d 33 2e 33 2e 64 62 5d 20 22 22 20 22  pes-3.3.db] "" "
4290: 22 20 22 22 20 5c 0d 0a 20 20 20 20 20 20 22 55  " "" \..      "U
42a0: 73 65 43 6f 6e 6e 65 63 74 69 6f 6e 42 69 6e 64  seConnectionBind
42b0: 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 73 20 55  ValueCallbacks U
42c0: 73 65 50 61 72 61 6d 65 74 65 72 4e 61 6d 65 46  seParameterNameF
42d0: 6f 72 54 79 70 65 4e 61 6d 65 22 0d 0a 7d 20 2d  orTypeName"..} -
42e0: 62 6f 64 79 20 7b 0d 0a 20 20 73 71 6c 20 65 78  body {..  sql ex
42f0: 65 63 75 74 65 20 24 64 62 20 7b 0d 0a 20 20 20  ecute $db {..   
4300: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31   CREATE TABLE t1
4310: 28 78 20 53 50 45 43 49 41 4c 29 3b 0d 0a 20 20  (x SPECIAL);..  
4320: 7d 0d 0a 0d 0a 20 20 73 65 74 20 63 61 6c 6c 62  }....  set callb
4330: 61 63 6b 20 7b 2d 63 61 6c 6c 62 61 63 6b 66 6c  ack {-callbackfl
4340: 61 67 73 20 2b 44 65 66 61 75 6c 74 20 62 69 6e  ags +Default bin
4350: 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b 31 7d  dValueCallback1}
4360: 0d 0a 20 20 73 65 74 20 63 6f 6e 6e 65 63 74 69  ..  set connecti
4370: 6f 6e 20 5b 67 65 74 44 62 43 6f 6e 6e 65 63 74  on [getDbConnect
4380: 69 6f 6e 5d 0d 0a 0d 0a 20 20 73 65 74 20 74 79  ion]....  set ty
4390: 70 65 43 61 6c 6c 62 61 63 6b 73 20 5b 6f 62 6a  peCallbacks [obj
43a0: 65 63 74 20 69 6e 76 6f 6b 65 20 2d 6d 61 72 73  ect invoke -mars
43b0: 68 61 6c 66 6c 61 67 73 20 2b 44 79 6e 61 6d 69  halflags +Dynami
43c0: 63 43 61 6c 6c 62 61 63 6b 20 5c 0d 0a 20 20 20  cCallback \..   
43d0: 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53     System.Data.S
43e0: 51 4c 69 74 65 2e 53 51 4c 69 74 65 54 79 70 65  QLite.SQLiteType
43f0: 43 61 6c 6c 62 61 63 6b 73 20 43 72 65 61 74 65  Callbacks Create
4400: 20 24 63 61 6c 6c 62 61 63 6b 20 6e 75 6c 6c 20   $callback null 
4410: 5c 0d 0a 20 20 20 20 20 20 32 20 6e 75 6c 6c 5d  \..      2 null]
4420: 0d 0a 0d 0a 20 20 24 63 6f 6e 6e 65 63 74 69 6f  ....  $connectio
4430: 6e 20 53 65 74 54 79 70 65 43 61 6c 6c 62 61 63  n SetTypeCallbac
4440: 6b 73 20 53 50 45 43 49 41 4c 20 24 74 79 70 65  ks SPECIAL $type
4450: 43 61 6c 6c 62 61 63 6b 73 0d 0a 0d 0a 20 20 73  Callbacks....  s
4460: 71 6c 20 65 78 65 63 75 74 65 20 24 64 62 20 7b  ql execute $db {
4470: 0d 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ..    INSERT INT
4480: 4f 20 74 31 20 28 78 29 20 56 41 4c 55 45 53 28  O t1 (x) VALUES(
4490: 3f 29 3b 0d 0a 20 20 7d 20 5b 6c 69 73 74 20 53  ?);..  } [list S
44a0: 70 65 63 69 61 6c 20 49 6e 74 36 34 20 39 39 39  pecial Int64 999
44b0: 39 5d 0d 0a 0d 0a 20 20 73 65 74 20 72 65 73 75  9]....  set resu
44c0: 6c 74 20 5b 6c 69 73 74 5d 0d 0a 0d 0a 20 20 6c  lt [list]....  l
44d0: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 65  append result [e
44e0: 78 70 72 20 7b 0d 0a 20 20 20 20 5b 69 6e 66 6f  xpr {..    [info
44f0: 20 65 78 69 73 74 73 20 6c 6f 67 28 62 69 6e 64   exists log(bind
4500: 29 5d 20 3f 20 24 6c 6f 67 28 62 69 6e 64 29 20  )] ? $log(bind) 
4510: 3a 20 22 3c 4d 49 53 53 49 4e 47 3e 22 0d 0a 20  : "<MISSING>".. 
4520: 20 7d 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64   }]....  lappend
4530: 20 72 65 73 75 6c 74 20 5b 73 71 6c 20 65 78 65   result [sql exe
4540: 63 75 74 65 20 2d 65 78 65 63 75 74 65 20 72 65  cute -execute re
4550: 61 64 65 72 20 2d 66 6f 72 6d 61 74 20 6c 69 73  ader -format lis
4560: 74 20 24 64 62 20 5c 0d 0a 20 20 20 20 20 20 22  t $db \..      "
4570: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 31  SELECT * FROM t1
4580: 20 4f 52 44 45 52 20 42 59 20 78 3b 22 5d 0d 0a   ORDER BY x;"]..
4590: 0d 0a 20 20 73 65 74 20 72 65 73 75 6c 74 0d 0a  ..  set result..
45a0: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0d 0a 20 20  } -cleanup {..  
45b0: 63 61 74 63 68 20 7b 6f 62 6a 65 63 74 20 72 65  catch {object re
45c0: 6d 6f 76 65 63 61 6c 6c 62 61 63 6b 20 24 63 61  movecallback $ca
45d0: 6c 6c 62 61 63 6b 7d 0d 0a 0d 0a 20 20 66 72 65  llback}....  fre
45e0: 65 44 62 43 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 0d  eDbConnection...
45f0: 0a 20 20 63 6c 65 61 6e 75 70 44 62 20 24 66 69  .  cleanupDb $fi
4600: 6c 65 4e 61 6d 65 0d 0a 0d 0a 20 20 75 6e 73 65  leName....  unse
4610: 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72 65  t -nocomplain re
4620: 73 75 6c 74 20 74 79 70 65 43 61 6c 6c 62 61 63  sult typeCallbac
4630: 6b 73 20 63 61 6c 6c 62 61 63 6b 20 6c 6f 67 20  ks callback log 
4640: 63 6f 6e 6e 65 63 74 69 6f 6e 20 64 62 20 66 69  connection db fi
4650: 6c 65 4e 61 6d 65 0d 0a 7d 20 2d 63 6f 6e 73 74  leName..} -const
4660: 72 61 69 6e 74 73 20 7b 65 61 67 6c 65 20 63 6f  raints {eagle co
4670: 6d 6d 61 6e 64 2e 6f 62 6a 65 63 74 20 6d 6f 6e  mmand.object mon
4680: 6f 42 75 67 32 38 20 63 6f 6d 6d 61 6e 64 2e 73  oBug28 command.s
4690: 71 6c 20 63 6f 6d 70 69 6c 65 2e 44 41 54 41 5c  ql compile.DATA\
46a0: 0d 0a 63 6f 6d 70 69 6c 65 2e 45 4d 49 54 20 53  ..compile.EMIT S
46b0: 51 4c 69 74 65 20 53 79 73 74 65 6d 2e 44 61 74  QLite System.Dat
46c0: 61 2e 53 51 4c 69 74 65 7d 20 2d 72 65 73 75 6c  a.SQLite} -resul
46d0: 74 20 7b 7b 7b 63 6f 6e 76 65 72 74 20 74 72 75  t {{{convert tru
46e0: 65 7d 20 7b 63 6f 6d 6d 61 6e 64 20 74 72 75 65  e} {command true
46f0: 7d 5c 0d 0a 7b 66 6c 61 67 73 20 7b 55 73 65 43  }\..{flags {UseC
4700: 6f 6e 6e 65 63 74 69 6f 6e 42 69 6e 64 56 61 6c  onnectionBindVal
4710: 75 65 43 61 6c 6c 62 61 63 6b 73 2c 20 55 73 65  ueCallbacks, Use
4720: 50 61 72 61 6d 65 74 65 72 4e 61 6d 65 46 6f 72  ParameterNameFor
4730: 54 79 70 65 4e 61 6d 65 7d 7d 5c 0d 0a 7b 70 61  TypeName}}\..{pa
4740: 72 61 6d 65 74 65 72 20 74 72 75 65 7d 20 7b 74  rameter true} {t
4750: 79 70 65 4e 61 6d 65 20 53 70 65 63 69 61 6c 7d  ypeName Special}
4760: 20 7b 69 6e 64 65 78 20 31 7d 20 7b 75 73 65 72   {index 1} {user
4770: 44 61 74 61 20 32 7d 7d 20 63 75 73 74 6f 6d 7d  Data 2}} custom}
4780: 7d 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 23  }....###########
4790: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
47a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
47b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
47c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
47d0: 23 23 23 23 0d 0a 0d 0a 72 75 6e 54 65 73 74 20  ####....runTest 
47e0: 7b 74 65 73 74 20 74 79 70 65 73 2d 34 2e 31 20  {test types-4.1 
47f0: 7b 72 65 61 64 20 63 61 6c 6c 62 61 63 6b 20 28  {read callback (
4800: 65 78 63 65 70 74 69 6f 6e 29 7d 20 2d 73 65 74  exception)} -set
4810: 75 70 20 7b 0d 0a 20 20 75 6e 73 65 74 20 2d 6e  up {..  unset -n
4820: 6f 63 6f 6d 70 6c 61 69 6e 20 6c 6f 67 0d 0a 0d  ocomplain log...
4830: 0a 20 20 73 65 74 75 70 44 62 20 5b 73 65 74 20  .  setupDb [set 
4840: 66 69 6c 65 4e 61 6d 65 20 74 79 70 65 73 2d 34  fileName types-4
4850: 2e 31 2e 64 62 5d 20 22 22 20 22 22 20 22 22 20  .1.db] "" "" "" 
4860: 5c 0d 0a 20 20 20 20 20 20 55 73 65 43 6f 6e 6e  \..      UseConn
4870: 65 63 74 69 6f 6e 52 65 61 64 56 61 6c 75 65 43  ectionReadValueC
4880: 61 6c 6c 62 61 63 6b 73 0d 0a 7d 20 2d 62 6f 64  allbacks..} -bod
4890: 79 20 7b 0d 0a 20 20 73 71 6c 20 65 78 65 63 75  y {..  sql execu
48a0: 74 65 20 24 64 62 20 7b 0d 0a 20 20 20 20 43 52  te $db {..    CR
48b0: 45 41 54 45 20 54 41 42 4c 45 20 74 31 28 78 20  EATE TABLE t1(x 
48c0: 53 50 45 43 49 41 4c 29 3b 0d 0a 20 20 20 20 49  SPECIAL);..    I
48d0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20 28 78  NSERT INTO t1 (x
48e0: 29 20 56 41 4c 55 45 53 28 38 38 38 38 29 3b 0d  ) VALUES(8888);.
48f0: 0a 20 20 7d 0d 0a 0d 0a 20 20 73 65 74 20 63 61  .  }....  set ca
4900: 6c 6c 62 61 63 6b 20 7b 2d 63 61 6c 6c 62 61 63  llback {-callbac
4910: 6b 66 6c 61 67 73 20 7b 2b 44 65 66 61 75 6c 74  kflags {+Default
4920: 20 54 68 72 6f 77 4f 6e 45 72 72 6f 72 7d 20 72   ThrowOnError} r
4930: 65 61 64 56 61 6c 75 65 43 61 6c 6c 62 61 63 6b  eadValueCallback
4940: 31 7d 0d 0a 20 20 73 65 74 20 63 6f 6e 6e 65 63  1}..  set connec
4950: 74 69 6f 6e 20 5b 67 65 74 44 62 43 6f 6e 6e 65  tion [getDbConne
4960: 63 74 69 6f 6e 5d 0d 0a 0d 0a 20 20 73 65 74 20  ction]....  set 
4970: 74 79 70 65 43 61 6c 6c 62 61 63 6b 73 20 5b 6f  typeCallbacks [o
4980: 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20 2d 6d 61  bject invoke -ma
4990: 72 73 68 61 6c 66 6c 61 67 73 20 2b 44 79 6e 61  rshalflags +Dyna
49a0: 6d 69 63 43 61 6c 6c 62 61 63 6b 20 5c 0d 0a 20  micCallback \.. 
49b0: 20 20 20 20 20 53 79 73 74 65 6d 2e 44 61 74 61       System.Data
49c0: 2e 53 51 4c 69 74 65 2e 53 51 4c 69 74 65 54 79  .SQLite.SQLiteTy
49d0: 70 65 43 61 6c 6c 62 61 63 6b 73 20 43 72 65 61  peCallbacks Crea
49e0: 74 65 20 6e 75 6c 6c 20 24 63 61 6c 6c 62 61 63  te null $callbac
49f0: 6b 20 5c 0d 0a 20 20 20 20 20 20 6e 75 6c 6c 20  k \..      null 
4a00: 33 5d 0d 0a 0d 0a 20 20 24 63 6f 6e 6e 65 63 74  3]....  $connect
4a10: 69 6f 6e 20 53 65 74 54 79 70 65 43 61 6c 6c 62  ion SetTypeCallb
4a20: 61 63 6b 73 20 53 50 45 43 49 41 4c 20 24 74 79  acks SPECIAL $ty
4a30: 70 65 43 61 6c 6c 62 61 63 6b 73 0d 0a 0d 0a 20  peCallbacks.... 
4a40: 20 73 65 74 20 72 65 73 75 6c 74 20 5b 6c 69 73   set result [lis
4a50: 74 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20  t]....  lappend 
4a60: 72 65 73 75 6c 74 20 5b 63 61 74 63 68 20 7b 0d  result [catch {.
4a70: 0a 20 20 20 20 73 71 6c 20 65 78 65 63 75 74 65  .    sql execute
4a80: 20 2d 65 78 65 63 75 74 65 20 72 65 61 64 65 72   -execute reader
4a90: 20 2d 66 6f 72 6d 61 74 20 6c 69 73 74 20 24 64   -format list $d
4aa0: 62 20 7b 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  b {SELECT * FROM
4ab0: 20 74 31 20 4f 52 44 45 52 20 42 59 20 78 3b 7d   t1 ORDER BY x;}
4ac0: 0d 0a 20 20 7d 20 65 72 72 6f 72 5d 0d 0a 0d 0a  ..  } error]....
4ad0: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74    lappend result
4ae0: 20 5b 65 78 74 72 61 63 74 53 79 73 74 65 6d 44   [extractSystemD
4af0: 61 74 61 53 51 4c 69 74 65 45 78 63 65 70 74 69  ataSQLiteExcepti
4b00: 6f 6e 4d 65 73 73 61 67 65 20 24 65 72 72 6f 72  onMessage $error
4b10: 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72  ]....  lappend r
4b20: 65 73 75 6c 74 20 5b 63 61 74 63 68 20 7b 0d 0a  esult [catch {..
4b30: 20 20 20 20 73 71 6c 20 65 78 65 63 75 74 65 20      sql execute 
4b40: 2d 65 78 65 63 75 74 65 20 73 63 61 6c 61 72 20  -execute scalar 
4b50: 24 64 62 20 7b 53 45 4c 45 43 54 20 43 4f 55 4e  $db {SELECT COUN
4b60: 54 28 2a 29 20 46 52 4f 4d 20 74 31 3b 7d 0d 0a  T(*) FROM t1;}..
4b70: 20 20 7d 20 65 72 72 6f 72 5d 0d 0a 0d 0a 20 20    } error]....  
4b80: 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b  lappend result [
4b90: 65 78 74 72 61 63 74 53 79 73 74 65 6d 44 61 74  extractSystemDat
4ba0: 61 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e  aSQLiteException
4bb0: 4d 65 73 73 61 67 65 20 24 65 72 72 6f 72 5d 0d  Message $error].
4bc0: 0a 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c  .  lappend resul
4bd0: 74 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65  t [expr {[info e
4be0: 78 69 73 74 73 20 6c 6f 67 28 72 65 61 64 29 5d  xists log(read)]
4bf0: 20 3f 20 24 6c 6f 67 28 72 65 61 64 29 20 3a 20   ? $log(read) : 
4c00: 22 3c 4d 49 53 53 49 4e 47 3e 22 7d 5d 0d 0a 0d  "<MISSING>"}]...
4c10: 0a 20 20 73 65 74 20 72 65 73 75 6c 74 0d 0a 7d  .  set result..}
4c20: 20 2d 63 6c 65 61 6e 75 70 20 7b 0d 0a 20 20 63   -cleanup {..  c
4c30: 61 74 63 68 20 7b 6f 62 6a 65 63 74 20 72 65 6d  atch {object rem
4c40: 6f 76 65 63 61 6c 6c 62 61 63 6b 20 24 63 61 6c  ovecallback $cal
4c50: 6c 62 61 63 6b 7d 0d 0a 0d 0a 20 20 66 72 65 65  lback}....  free
4c60: 44 62 43 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 0d 0a  DbConnection....
4c70: 20 20 63 6c 65 61 6e 75 70 44 62 20 24 66 69 6c    cleanupDb $fil
4c80: 65 4e 61 6d 65 0d 0a 0d 0a 20 20 75 6e 73 65 74  eName....  unset
4c90: 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 65 72 72   -nocomplain err
4ca0: 6f 72 20 72 65 73 75 6c 74 20 74 79 70 65 43 61  or result typeCa
4cb0: 6c 6c 62 61 63 6b 73 20 63 61 6c 6c 62 61 63 6b  llbacks callback
4cc0: 20 6c 6f 67 20 63 6f 6e 6e 65 63 74 69 6f 6e 20   log connection 
4cd0: 64 62 20 5c 0d 0a 20 20 20 20 20 20 66 69 6c 65  db \..      file
4ce0: 4e 61 6d 65 0d 0a 7d 20 2d 63 6f 6e 73 74 72 61  Name..} -constra
4cf0: 69 6e 74 73 20 7b 65 61 67 6c 65 20 63 6f 6d 6d  ints {eagle comm
4d00: 61 6e 64 2e 6f 62 6a 65 63 74 20 6d 6f 6e 6f 42  and.object monoB
4d10: 75 67 32 38 20 63 6f 6d 6d 61 6e 64 2e 73 71 6c  ug28 command.sql
4d20: 20 63 6f 6d 70 69 6c 65 2e 44 41 54 41 5c 0d 0a   compile.DATA\..
4d30: 63 6f 6d 70 69 6c 65 2e 45 4d 49 54 20 53 51 4c  compile.EMIT SQL
4d40: 69 74 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  ite System.Data.
4d50: 53 51 4c 69 74 65 7d 20 2d 72 65 73 75 6c 74 20  SQLite} -result 
4d60: 7b 31 20 7b 72 65 61 64 69 6e 67 20 6f 66 20 76  {1 {reading of v
4d70: 61 6c 75 65 20 63 61 6e 63 65 6c 65 64 7d 5c 0d  alue canceled}\.
4d80: 0a 30 20 31 20 7b 7b 63 6f 6e 76 65 72 74 20 74  .0 1 {{convert t
4d90: 72 75 65 7d 20 7b 64 61 74 61 52 65 61 64 65 72  rue} {dataReader
4da0: 20 74 72 75 65 7d 20 7b 66 6c 61 67 73 20 55 73   true} {flags Us
4db0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 52 65 61 64 56  eConnectionReadV
4dc0: 61 6c 75 65 43 61 6c 6c 62 61 63 6b 73 7d 5c 0d  alueCallbacks}\.
4dd0: 0a 7b 65 76 65 6e 74 41 72 67 73 20 74 72 75 65  .{eventArgs true
4de0: 7d 20 7b 74 79 70 65 4e 61 6d 65 20 53 50 45 43  } {typeName SPEC
4df0: 49 41 4c 7d 20 7b 69 6e 64 65 78 20 30 7d 20 7b  IAL} {index 0} {
4e00: 75 73 65 72 44 61 74 61 20 33 7d 7d 7d 7d 0d 0a  userData 3}}}}..
4e10: 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ..##############
4e20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4e30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4e40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4e50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
4e60: 23 0d 0a 0d 0a 72 75 6e 54 65 73 74 20 7b 74 65  #....runTest {te
4e70: 73 74 20 74 79 70 65 73 2d 35 2e 31 20 7b 62 69  st types-5.1 {bi
4e80: 6e 64 20 63 61 6c 6c 62 61 63 6b 20 28 65 78 63  nd callback (exc
4e90: 65 70 74 69 6f 6e 29 7d 20 2d 73 65 74 75 70 20  eption)} -setup 
4ea0: 7b 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f  {..  unset -noco
4eb0: 6d 70 6c 61 69 6e 20 6c 6f 67 0d 0a 0d 0a 20 20  mplain log....  
4ec0: 73 65 74 75 70 44 62 20 5b 73 65 74 20 66 69 6c  setupDb [set fil
4ed0: 65 4e 61 6d 65 20 74 79 70 65 73 2d 35 2e 31 2e  eName types-5.1.
4ee0: 64 62 5d 20 22 22 20 22 22 20 22 22 20 5c 0d 0a  db] "" "" "" \..
4ef0: 20 20 20 20 20 20 22 55 73 65 43 6f 6e 6e 65 63        "UseConnec
4f00: 74 69 6f 6e 42 69 6e 64 56 61 6c 75 65 43 61 6c  tionBindValueCal
4f10: 6c 62 61 63 6b 73 20 55 73 65 50 61 72 61 6d 65  lbacks UseParame
4f20: 74 65 72 4e 61 6d 65 46 6f 72 54 79 70 65 4e 61  terNameForTypeNa
4f30: 6d 65 22 0d 0a 7d 20 2d 62 6f 64 79 20 7b 0d 0a  me"..} -body {..
4f40: 20 20 73 71 6c 20 65 78 65 63 75 74 65 20 24 64    sql execute $d
4f50: 62 20 7b 0d 0a 20 20 20 20 43 52 45 41 54 45 20  b {..    CREATE 
4f60: 54 41 42 4c 45 20 74 31 28 78 20 53 50 45 43 49  TABLE t1(x SPECI
4f70: 41 4c 29 3b 0d 0a 20 20 7d 0d 0a 0d 0a 20 20 73  AL);..  }....  s
4f80: 65 74 20 63 61 6c 6c 62 61 63 6b 20 7b 2d 63 61  et callback {-ca
4f90: 6c 6c 62 61 63 6b 66 6c 61 67 73 20 7b 2b 44 65  llbackflags {+De
4fa0: 66 61 75 6c 74 20 54 68 72 6f 77 4f 6e 45 72 72  fault ThrowOnErr
4fb0: 6f 72 7d 20 62 69 6e 64 56 61 6c 75 65 43 61 6c  or} bindValueCal
4fc0: 6c 62 61 63 6b 31 7d 0d 0a 20 20 73 65 74 20 63  lback1}..  set c
4fd0: 6f 6e 6e 65 63 74 69 6f 6e 20 5b 67 65 74 44 62  onnection [getDb
4fe0: 43 6f 6e 6e 65 63 74 69 6f 6e 5d 0d 0a 0d 0a 20  Connection].... 
4ff0: 20 73 65 74 20 74 79 70 65 43 61 6c 6c 62 61 63   set typeCallbac
5000: 6b 73 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b  ks [object invok
5010: 65 20 2d 6d 61 72 73 68 61 6c 66 6c 61 67 73 20  e -marshalflags 
5020: 2b 44 79 6e 61 6d 69 63 43 61 6c 6c 62 61 63 6b  +DynamicCallback
5030: 20 5c 0d 0a 20 20 20 20 20 20 53 79 73 74 65 6d   \..      System
5040: 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 53 51 4c  .Data.SQLite.SQL
5050: 69 74 65 54 79 70 65 43 61 6c 6c 62 61 63 6b 73  iteTypeCallbacks
5060: 20 43 72 65 61 74 65 20 24 63 61 6c 6c 62 61 63   Create $callbac
5070: 6b 20 6e 75 6c 6c 20 5c 0d 0a 20 20 20 20 20 20  k null \..      
5080: 33 20 6e 75 6c 6c 5d 0d 0a 0d 0a 20 20 24 63 6f  3 null]....  $co
5090: 6e 6e 65 63 74 69 6f 6e 20 53 65 74 54 79 70 65  nnection SetType
50a0: 43 61 6c 6c 62 61 63 6b 73 20 53 50 45 43 49 41  Callbacks SPECIA
50b0: 4c 20 24 74 79 70 65 43 61 6c 6c 62 61 63 6b 73  L $typeCallbacks
50c0: 0d 0a 0d 0a 20 20 63 61 74 63 68 20 7b 0d 0a 20  ....  catch {.. 
50d0: 20 20 20 73 71 6c 20 65 78 65 63 75 74 65 20 24     sql execute $
50e0: 64 62 20 7b 0d 0a 20 20 20 20 20 20 49 4e 53 45  db {..      INSE
50f0: 52 54 20 49 4e 54 4f 20 74 31 20 28 78 29 20 56  RT INTO t1 (x) V
5100: 41 4c 55 45 53 28 3f 29 3b 0d 0a 20 20 20 20 7d  ALUES(?);..    }
5110: 20 5b 6c 69 73 74 20 53 70 65 63 69 61 6c 20 49   [list Special I
5120: 6e 74 36 34 20 34 33 32 31 5d 0d 0a 20 20 7d 0d  nt64 4321]..  }.
5130: 0a 0d 0a 20 20 73 65 74 20 72 65 73 75 6c 74 20  ...  set result 
5140: 5b 6c 69 73 74 5d 0d 0a 0d 0a 20 20 6c 61 70 70  [list]....  lapp
5150: 65 6e 64 20 72 65 73 75 6c 74 20 5b 65 78 70 72  end result [expr
5160: 20 7b 0d 0a 20 20 20 20 5b 69 6e 66 6f 20 65 78   {..    [info ex
5170: 69 73 74 73 20 6c 6f 67 28 62 69 6e 64 29 5d 20  ists log(bind)] 
5180: 3f 20 24 6c 6f 67 28 62 69 6e 64 29 20 3a 20 22  ? $log(bind) : "
5190: 3c 4d 49 53 53 49 4e 47 3e 22 0d 0a 20 20 7d 5d  <MISSING>"..  }]
51a0: 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72 65  ....  lappend re
51b0: 73 75 6c 74 20 5b 73 71 6c 20 65 78 65 63 75 74  sult [sql execut
51c0: 65 20 2d 65 78 65 63 75 74 65 20 72 65 61 64 65  e -execute reade
51d0: 72 20 2d 66 6f 72 6d 61 74 20 6c 69 73 74 20 24  r -format list $
51e0: 64 62 20 5c 0d 0a 20 20 20 20 20 20 22 53 45 4c  db \..      "SEL
51f0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 31 20 4f 52  ECT * FROM t1 OR
5200: 44 45 52 20 42 59 20 78 3b 22 5d 0d 0a 0d 0a 20  DER BY x;"].... 
5210: 20 73 65 74 20 72 65 73 75 6c 74 0d 0a 7d 20 2d   set result..} -
5220: 63 6c 65 61 6e 75 70 20 7b 0d 0a 20 20 63 61 74  cleanup {..  cat
5230: 63 68 20 7b 6f 62 6a 65 63 74 20 72 65 6d 6f 76  ch {object remov
5240: 65 63 61 6c 6c 62 61 63 6b 20 24 63 61 6c 6c 62  ecallback $callb
5250: 61 63 6b 7d 0d 0a 0d 0a 20 20 66 72 65 65 44 62  ack}....  freeDb
5260: 43 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 0d 0a 20 20  Connection....  
5270: 63 6c 65 61 6e 75 70 44 62 20 24 66 69 6c 65 4e  cleanupDb $fileN
5280: 61 6d 65 0d 0a 0d 0a 20 20 75 6e 73 65 74 20 2d  ame....  unset -
5290: 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72 65 73 75 6c  nocomplain resul
52a0: 74 20 74 79 70 65 43 61 6c 6c 62 61 63 6b 73 20  t typeCallbacks 
52b0: 63 61 6c 6c 62 61 63 6b 20 6c 6f 67 20 63 6f 6e  callback log con
52c0: 6e 65 63 74 69 6f 6e 20 64 62 20 66 69 6c 65 4e  nection db fileN
52d0: 61 6d 65 0d 0a 7d 20 2d 63 6f 6e 73 74 72 61 69  ame..} -constrai
52e0: 6e 74 73 20 7b 65 61 67 6c 65 20 63 6f 6d 6d 61  nts {eagle comma
52f0: 6e 64 2e 6f 62 6a 65 63 74 20 6d 6f 6e 6f 42 75  nd.object monoBu
5300: 67 32 38 20 63 6f 6d 6d 61 6e 64 2e 73 71 6c 20  g28 command.sql 
5310: 63 6f 6d 70 69 6c 65 2e 44 41 54 41 5c 0d 0a 63  compile.DATA\..c
5320: 6f 6d 70 69 6c 65 2e 45 4d 49 54 20 53 51 4c 69  ompile.EMIT SQLi
5330: 74 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  te System.Data.S
5340: 51 4c 69 74 65 7d 20 2d 72 65 73 75 6c 74 20 7b  QLite} -result {
5350: 7b 7b 63 6f 6e 76 65 72 74 20 74 72 75 65 7d 20  {{convert true} 
5360: 7b 63 6f 6d 6d 61 6e 64 20 74 72 75 65 7d 5c 0d  {command true}\.
5370: 0a 7b 66 6c 61 67 73 20 7b 55 73 65 43 6f 6e 6e  .{flags {UseConn
5380: 65 63 74 69 6f 6e 42 69 6e 64 56 61 6c 75 65 43  ectionBindValueC
5390: 61 6c 6c 62 61 63 6b 73 2c 20 55 73 65 50 61 72  allbacks, UsePar
53a0: 61 6d 65 74 65 72 4e 61 6d 65 46 6f 72 54 79 70  ameterNameForTyp
53b0: 65 4e 61 6d 65 7d 7d 5c 0d 0a 7b 70 61 72 61 6d  eName}}\..{param
53c0: 65 74 65 72 20 74 72 75 65 7d 20 7b 74 79 70 65  eter true} {type
53d0: 4e 61 6d 65 20 53 70 65 63 69 61 6c 7d 20 7b 69  Name Special} {i
53e0: 6e 64 65 78 20 31 7d 20 7b 75 73 65 72 44 61 74  ndex 1} {userDat
53f0: 61 20 33 7d 7d 20 7b 7d 7d 7d 0d 0a 0d 0a 23 23  a 3}} {}}}....##
5400: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5410: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5420: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5430: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5440: 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d  #############...
5450: 0a 63 61 74 63 68 20 7b 65 76 61 6c 20 6f 62 6a  .catch {eval obj
5460: 65 63 74 20 64 69 73 70 6f 73 65 20 5b 69 6e 66  ect dispose [inf
5470: 6f 20 6f 62 6a 65 63 74 73 20 53 79 73 74 65 6d  o objects System
5480: 23 42 6f 6f 6c 65 61 6e 23 2a 5d 7d 0d 0a 0d 0a  #Boolean#*]}....
5490: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
54a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
54b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
54c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
54d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
54e0: 0a 0d 0a 72 65 6e 61 6d 65 20 72 65 61 64 56 61  ...rename readVa
54f0: 6c 75 65 43 61 6c 6c 62 61 63 6b 31 20 22 22 0d  lueCallback1 "".
5500: 0a 72 65 6e 61 6d 65 20 62 69 6e 64 56 61 6c 75  .rename bindValu
5510: 65 43 61 6c 6c 62 61 63 6b 31 20 22 22 0d 0a 0d  eCallback1 ""...
5520: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
5530: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5540: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5550: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5560: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
5570: 0d 0a 0d 0a 72 75 6e 53 51 4c 69 74 65 54 65 73  ....runSQLiteTes
5580: 74 45 70 69 6c 6f 67 75 65 0d 0a 72 75 6e 54 65  tEpilogue..runTe
5590: 73 74 45 70 69 6c 6f 67 75 65 0d 0a              stEpilogue..