System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact ac2b1330792252e8ffa154968d13edd3a7a668b7:


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 6b 74 2d 61 37 64 30 34 66  .#..# tkt-a7d04f
0060: 62 31 31 31 2e 65 61 67 6c 65 20 2d 2d 0d 0a 23  b111.eagle --..#
0070: 0d 0a 23 20 57 72 69 74 74 65 6e 20 62 79 20 4a  ..# Written by J
0080: 6f 65 20 4d 69 73 74 61 63 68 6b 69 6e 2e 0d 0a  oe Mistachkin...
0090: 23 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74 68  # Released to th
00a0: 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 2c  e public domain,
00b0: 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77 6e   use at your own
00c0: 20 72 69 73 6b 21 0d 0a 23 0d 0a 23 23 23 23 23   risk!..#..#####
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 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 70 61  ##########....pa
0120: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 45 61  ckage require Ea
0130: 67 6c 65 0d 0a 70 61 63 6b 61 67 65 20 72 65 71  gle..package req
0140: 75 69 72 65 20 45 61 67 6c 65 2e 4c 69 62 72 61  uire Eagle.Libra
0150: 72 79 0d 0a 70 61 63 6b 61 67 65 20 72 65 71 75  ry..package requ
0160: 69 72 65 20 45 61 67 6c 65 2e 54 65 73 74 0d 0a  ire Eagle.Test..
0170: 0d 0a 72 75 6e 54 65 73 74 50 72 6f 6c 6f 67 75  ..runTestPrologu
0180: 65 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 23  e....###########
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 23 23 23 23 23  ################
01d0: 23 23 23 23 0d 0a 0d 0a 70 61 63 6b 61 67 65 20  ####....package 
01e0: 72 65 71 75 69 72 65 20 53 79 73 74 65 6d 2e 44  require System.D
01f0: 61 74 61 2e 53 51 4c 69 74 65 2e 54 65 73 74 0d  ata.SQLite.Test.
0200: 0a 72 75 6e 53 51 4c 69 74 65 54 65 73 74 50 72  .runSQLiteTestPr
0210: 6f 6c 6f 67 75 65 0d 0a 0d 0a 23 23 23 23 23 23  ologue....######
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: 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 73 65 74  #########....set
0270: 20 72 61 77 44 61 74 65 54 69 6d 65 56 61 6c 75   rawDateTimeValu
0280: 65 20 22 32 30 31 35 2d 30 32 2d 31 38 20 30 30  e "2015-02-18 00
0290: 3a 30 30 3a 30 30 2e 30 30 30 30 30 30 30 22 0d  :00:00.0000000".
02a0: 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  ...#############
02b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
02c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
02d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
02e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
02f0: 23 23 0d 0a 0d 0a 72 75 6e 54 65 73 74 20 7b 74  ##....runTest {t
0300: 65 73 74 20 74 6b 74 2d 61 37 64 30 34 66 62 31  est tkt-a7d04fb1
0310: 31 31 2d 31 2e 31 20 7b 42 69 6e 64 20 44 61 74  11-1.1 {Bind Dat
0320: 65 54 69 6d 65 20 55 74 63 20 54 69 63 6b 73 7d  eTime Utc Ticks}
0330: 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20 73 65 74   -setup {..  set
0340: 75 70 44 62 20 5b 73 65 74 20 66 69 6c 65 4e 61  upDb [set fileNa
0350: 6d 65 20 74 6b 74 2d 61 37 64 30 34 66 62 31 31  me tkt-a7d04fb11
0360: 31 2d 31 2e 31 2e 64 62 5d 20 22 22 20 54 69 63  1-1.1.db] "" Tic
0370: 6b 73 20 55 74 63 20 5c 0d 0a 20 20 20 20 20 20  ks Utc \..      
0380: 42 69 6e 64 44 61 74 65 54 69 6d 65 57 69 74 68  BindDateTimeWith
0390: 4b 69 6e 64 0d 0a 7d 20 2d 62 6f 64 79 20 7b 0d  Kind..} -body {.
03a0: 0a 20 20 73 65 74 20 64 61 74 65 54 69 6d 65 56  .  set dateTimeV
03b0: 61 6c 75 65 28 30 29 20 5b 6f 62 6a 65 63 74 20  alue(0) [object 
03c0: 69 6e 76 6f 6b 65 20 5c 0d 0a 20 20 20 20 20 20  invoke \..      
03d0: 2d 63 72 65 61 74 65 20 44 61 74 65 54 69 6d 65  -create DateTime
03e0: 20 50 61 72 73 65 45 78 61 63 74 20 24 72 61 77   ParseExact $raw
03f0: 44 61 74 65 54 69 6d 65 56 61 6c 75 65 20 5c 0d  DateTimeValue \.
0400: 0a 20 20 20 20 20 20 5b 67 65 74 44 61 74 65 54  .      [getDateT
0410: 69 6d 65 46 6f 72 6d 61 74 5d 20 6e 75 6c 6c 5d  imeFormat] null]
0420: 0d 0a 0d 0a 20 20 73 65 74 20 64 61 74 65 54 69  ....  set dateTi
0430: 6d 65 56 61 6c 75 65 28 31 29 20 5b 6f 62 6a 65  meValue(1) [obje
0440: 63 74 20 69 6e 76 6f 6b 65 20 2d 63 72 65 61 74  ct invoke -creat
0450: 65 20 2d 61 6c 69 61 73 20 5c 0d 0a 20 20 20 20  e -alias \..    
0460: 20 20 44 61 74 65 54 69 6d 65 20 53 70 65 63 69    DateTime Speci
0470: 66 79 4b 69 6e 64 20 24 64 61 74 65 54 69 6d 65  fyKind $dateTime
0480: 56 61 6c 75 65 28 30 29 20 55 74 63 5d 0d 0a 0d  Value(0) Utc]...
0490: 0a 20 20 73 65 74 20 64 61 74 65 54 69 6d 65 56  .  set dateTimeV
04a0: 61 6c 75 65 28 32 29 20 5b 6f 62 6a 65 63 74 20  alue(2) [object 
04b0: 69 6e 76 6f 6b 65 20 2d 63 72 65 61 74 65 20 2d  invoke -create -
04c0: 61 6c 69 61 73 20 5c 0d 0a 20 20 20 20 20 20 44  alias \..      D
04d0: 61 74 65 54 69 6d 65 20 53 70 65 63 69 66 79 4b  ateTime SpecifyK
04e0: 69 6e 64 20 24 64 61 74 65 54 69 6d 65 56 61 6c  ind $dateTimeVal
04f0: 75 65 28 30 29 20 4c 6f 63 61 6c 5d 0d 0a 0d 0a  ue(0) Local]....
0500: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74    lappend result
0510: 20 5b 73 71 6c 20 65 78 65 63 75 74 65 20 2d 65   [sql execute -e
0520: 78 65 63 75 74 65 20 73 63 61 6c 61 72 20 24 64  xecute scalar $d
0530: 62 20 22 53 45 4c 45 43 54 20 3f 3b 22 20 5c 0d  b "SELECT ?;" \.
0540: 0a 20 20 20 20 20 20 5b 6c 69 73 74 20 70 61 72  .      [list par
0550: 61 6d 31 20 44 61 74 65 54 69 6d 65 20 24 64 61  am1 DateTime $da
0560: 74 65 54 69 6d 65 56 61 6c 75 65 28 30 29 5d 5d  teTimeValue(0)]]
0570: 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72 65  ....  lappend re
0580: 73 75 6c 74 20 5b 73 71 6c 20 65 78 65 63 75 74  sult [sql execut
0590: 65 20 2d 65 78 65 63 75 74 65 20 73 63 61 6c 61  e -execute scala
05a0: 72 20 24 64 62 20 22 53 45 4c 45 43 54 20 3f 3b  r $db "SELECT ?;
05b0: 22 20 5c 0d 0a 20 20 20 20 20 20 5b 6c 69 73 74  " \..      [list
05c0: 20 70 61 72 61 6d 31 20 44 61 74 65 54 69 6d 65   param1 DateTime
05d0: 20 24 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28   $dateTimeValue(
05e0: 31 29 5d 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e  1)]]....  lappen
05f0: 64 20 72 65 73 75 6c 74 20 5b 73 71 6c 20 65 78  d result [sql ex
0600: 65 63 75 74 65 20 2d 65 78 65 63 75 74 65 20 73  ecute -execute s
0610: 63 61 6c 61 72 20 24 64 62 20 22 53 45 4c 45 43  calar $db "SELEC
0620: 54 20 3f 3b 22 20 5c 0d 0a 20 20 20 20 20 20 5b  T ?;" \..      [
0630: 6c 69 73 74 20 70 61 72 61 6d 31 20 44 61 74 65  list param1 Date
0640: 54 69 6d 65 20 24 64 61 74 65 54 69 6d 65 56 61  Time $dateTimeVa
0650: 6c 75 65 28 32 29 5d 5d 0d 0a 0d 0a 20 20 6c 61  lue(2)]]....  la
0660: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 65 78  ppend result [ex
0670: 70 72 20 7b 5b 6c 69 6e 64 65 78 20 24 72 65 73  pr {[lindex $res
0680: 75 6c 74 20 30 5d 20 3d 3d 20 5b 6c 69 6e 64 65  ult 0] == [linde
0690: 78 20 24 72 65 73 75 6c 74 20 31 5d 7d 5d 0d 0a  x $result 1]}]..
06a0: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74    lappend result
06b0: 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65 78 20   [expr {[lindex 
06c0: 24 72 65 73 75 6c 74 20 30 5d 20 3d 3d 20 5b 6c  $result 0] == [l
06d0: 69 6e 64 65 78 20 24 72 65 73 75 6c 74 20 32 5d  index $result 2]
06e0: 7d 5d 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72 65  }]..  lappend re
06f0: 73 75 6c 74 20 5b 65 78 70 72 20 7b 5b 6c 69 6e  sult [expr {[lin
0700: 64 65 78 20 24 72 65 73 75 6c 74 20 31 5d 20 3d  dex $result 1] =
0710: 3d 20 5b 6c 69 6e 64 65 78 20 24 72 65 73 75 6c  = [lindex $resul
0720: 74 20 32 5d 7d 5d 0d 0a 7d 20 2d 63 6c 65 61 6e  t 2]}]..} -clean
0730: 75 70 20 7b 0d 0a 20 20 63 6c 65 61 6e 75 70 44  up {..  cleanupD
0740: 62 20 24 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20  b $fileName.... 
0750: 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61   unset -nocompla
0760: 69 6e 20 72 65 73 75 6c 74 20 64 61 74 65 54 69  in result dateTi
0770: 6d 65 56 61 6c 75 65 20 64 62 20 66 69 6c 65 4e  meValue db fileN
0780: 61 6d 65 0d 0a 7d 20 2d 63 6f 6e 73 74 72 61 69  ame..} -constrai
0790: 6e 74 73 20 5c 0d 0a 7b 65 61 67 6c 65 20 6d 6f  nts \..{eagle mo
07a0: 6e 6f 42 75 67 32 38 20 63 6f 6d 6d 61 6e 64 2e  noBug28 command.
07b0: 73 71 6c 20 63 6f 6d 70 69 6c 65 2e 44 41 54 41  sql compile.DATA
07c0: 20 53 51 4c 69 74 65 20 53 79 73 74 65 6d 2e 44   SQLite System.D
07d0: 61 74 61 2e 53 51 4c 69 74 65 7d 20 2d 72 65 73  ata.SQLite} -res
07e0: 75 6c 74 20 5c 0d 0a 7b 36 33 35 35 39 38 31 34  ult \..{63559814
07f0: 34 30 30 30 30 30 30 30 30 30 20 36 33 35 35 39  4000000000 63559
0800: 38 31 34 34 30 30 30 30 30 30 30 30 30 20 36 33  8144000000000 63
0810: 35 35 39 38 34 33 32 30 30 30 30 30 30 30 30 30  5598432000000000
0820: 20 54 72 75 65 20 46 61 6c 73 65 20 46 61 6c 73   True False Fals
0830: 65 7d 7d 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23  e}}....#########
0840: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0850: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0860: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0870: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0880: 23 23 23 23 23 23 0d 0a 0d 0a 72 75 6e 54 65 73  ######....runTes
0890: 74 20 7b 74 65 73 74 20 74 6b 74 2d 61 37 64 30  t {test tkt-a7d0
08a0: 34 66 62 31 31 31 2d 31 2e 32 20 7b 42 69 6e 64  4fb111-1.2 {Bind
08b0: 20 44 61 74 65 54 69 6d 65 20 4c 6f 63 61 6c 20   DateTime Local 
08c0: 54 69 63 6b 73 7d 20 2d 73 65 74 75 70 20 7b 0d  Ticks} -setup {.
08d0: 0a 20 20 73 65 74 75 70 44 62 20 5b 73 65 74 20  .  setupDb [set 
08e0: 66 69 6c 65 4e 61 6d 65 20 74 6b 74 2d 61 37 64  fileName tkt-a7d
08f0: 30 34 66 62 31 31 31 2d 31 2e 32 2e 64 62 5d 20  04fb111-1.2.db] 
0900: 22 22 20 54 69 63 6b 73 20 4c 6f 63 61 6c 20 5c  "" Ticks Local \
0910: 0d 0a 20 20 20 20 20 20 42 69 6e 64 44 61 74 65  ..      BindDate
0920: 54 69 6d 65 57 69 74 68 4b 69 6e 64 0d 0a 7d 20  TimeWithKind..} 
0930: 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 65 74 20 64  -body {..  set d
0940: 61 74 65 54 69 6d 65 56 61 6c 75 65 28 30 29 20  ateTimeValue(0) 
0950: 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20 5c  [object invoke \
0960: 0d 0a 20 20 20 20 20 20 2d 63 72 65 61 74 65 20  ..      -create 
0970: 44 61 74 65 54 69 6d 65 20 50 61 72 73 65 45 78  DateTime ParseEx
0980: 61 63 74 20 24 72 61 77 44 61 74 65 54 69 6d 65  act $rawDateTime
0990: 56 61 6c 75 65 20 5c 0d 0a 20 20 20 20 20 20 5b  Value \..      [
09a0: 67 65 74 44 61 74 65 54 69 6d 65 46 6f 72 6d 61  getDateTimeForma
09b0: 74 5d 20 6e 75 6c 6c 5d 0d 0a 0d 0a 20 20 73 65  t] null]....  se
09c0: 74 20 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28  t dateTimeValue(
09d0: 31 29 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b  1) [object invok
09e0: 65 20 2d 63 72 65 61 74 65 20 2d 61 6c 69 61 73  e -create -alias
09f0: 20 5c 0d 0a 20 20 20 20 20 20 44 61 74 65 54 69   \..      DateTi
0a00: 6d 65 20 53 70 65 63 69 66 79 4b 69 6e 64 20 24  me SpecifyKind $
0a10: 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28 30 29  dateTimeValue(0)
0a20: 20 55 74 63 5d 0d 0a 0d 0a 20 20 73 65 74 20 64   Utc]....  set d
0a30: 61 74 65 54 69 6d 65 56 61 6c 75 65 28 32 29 20  ateTimeValue(2) 
0a40: 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20 2d  [object invoke -
0a50: 63 72 65 61 74 65 20 2d 61 6c 69 61 73 20 5c 0d  create -alias \.
0a60: 0a 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 20  .      DateTime 
0a70: 53 70 65 63 69 66 79 4b 69 6e 64 20 24 64 61 74  SpecifyKind $dat
0a80: 65 54 69 6d 65 56 61 6c 75 65 28 30 29 20 4c 6f  eTimeValue(0) Lo
0a90: 63 61 6c 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e  cal]....  lappen
0aa0: 64 20 72 65 73 75 6c 74 20 5b 73 71 6c 20 65 78  d result [sql ex
0ab0: 65 63 75 74 65 20 2d 65 78 65 63 75 74 65 20 73  ecute -execute s
0ac0: 63 61 6c 61 72 20 24 64 62 20 22 53 45 4c 45 43  calar $db "SELEC
0ad0: 54 20 3f 3b 22 20 5c 0d 0a 20 20 20 20 20 20 5b  T ?;" \..      [
0ae0: 6c 69 73 74 20 70 61 72 61 6d 31 20 44 61 74 65  list param1 Date
0af0: 54 69 6d 65 20 24 64 61 74 65 54 69 6d 65 56 61  Time $dateTimeVa
0b00: 6c 75 65 28 30 29 5d 5d 0d 0a 0d 0a 20 20 6c 61  lue(0)]]....  la
0b10: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 73 71  ppend result [sq
0b20: 6c 20 65 78 65 63 75 74 65 20 2d 65 78 65 63 75  l execute -execu
0b30: 74 65 20 73 63 61 6c 61 72 20 24 64 62 20 22 53  te scalar $db "S
0b40: 45 4c 45 43 54 20 3f 3b 22 20 5c 0d 0a 20 20 20  ELECT ?;" \..   
0b50: 20 20 20 5b 6c 69 73 74 20 70 61 72 61 6d 31 20     [list param1 
0b60: 44 61 74 65 54 69 6d 65 20 24 64 61 74 65 54 69  DateTime $dateTi
0b70: 6d 65 56 61 6c 75 65 28 31 29 5d 5d 0d 0a 0d 0a  meValue(1)]]....
0b80: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74    lappend result
0b90: 20 5b 73 71 6c 20 65 78 65 63 75 74 65 20 2d 65   [sql execute -e
0ba0: 78 65 63 75 74 65 20 73 63 61 6c 61 72 20 24 64  xecute scalar $d
0bb0: 62 20 22 53 45 4c 45 43 54 20 3f 3b 22 20 5c 0d  b "SELECT ?;" \.
0bc0: 0a 20 20 20 20 20 20 5b 6c 69 73 74 20 70 61 72  .      [list par
0bd0: 61 6d 31 20 44 61 74 65 54 69 6d 65 20 24 64 61  am1 DateTime $da
0be0: 74 65 54 69 6d 65 56 61 6c 75 65 28 32 29 5d 5d  teTimeValue(2)]]
0bf0: 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72 65  ....  lappend re
0c00: 73 75 6c 74 20 5b 65 78 70 72 20 7b 5b 6c 69 6e  sult [expr {[lin
0c10: 64 65 78 20 24 72 65 73 75 6c 74 20 30 5d 20 3d  dex $result 0] =
0c20: 3d 20 5b 6c 69 6e 64 65 78 20 24 72 65 73 75 6c  = [lindex $resul
0c30: 74 20 31 5d 7d 5d 0d 0a 20 20 6c 61 70 70 65 6e  t 1]}]..  lappen
0c40: 64 20 72 65 73 75 6c 74 20 5b 65 78 70 72 20 7b  d result [expr {
0c50: 5b 6c 69 6e 64 65 78 20 24 72 65 73 75 6c 74 20  [lindex $result 
0c60: 30 5d 20 3d 3d 20 5b 6c 69 6e 64 65 78 20 24 72  0] == [lindex $r
0c70: 65 73 75 6c 74 20 32 5d 7d 5d 0d 0a 20 20 6c 61  esult 2]}]..  la
0c80: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 65 78  ppend result [ex
0c90: 70 72 20 7b 5b 6c 69 6e 64 65 78 20 24 72 65 73  pr {[lindex $res
0ca0: 75 6c 74 20 31 5d 20 3d 3d 20 5b 6c 69 6e 64 65  ult 1] == [linde
0cb0: 78 20 24 72 65 73 75 6c 74 20 32 5d 7d 5d 0d 0a  x $result 2]}]..
0cc0: 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0d 0a 20 20  } -cleanup {..  
0cd0: 63 6c 65 61 6e 75 70 44 62 20 24 66 69 6c 65 4e  cleanupDb $fileN
0ce0: 61 6d 65 0d 0a 0d 0a 20 20 75 6e 73 65 74 20 2d  ame....  unset -
0cf0: 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72 65 73 75 6c  nocomplain resul
0d00: 74 20 64 61 74 65 54 69 6d 65 56 61 6c 75 65 20  t dateTimeValue 
0d10: 64 62 20 66 69 6c 65 4e 61 6d 65 0d 0a 7d 20 2d  db fileName..} -
0d20: 63 6f 6e 73 74 72 61 69 6e 74 73 20 5c 0d 0a 7b  constraints \..{
0d30: 65 61 67 6c 65 20 6d 6f 6e 6f 42 75 67 32 38 20  eagle monoBug28 
0d40: 63 6f 6d 6d 61 6e 64 2e 73 71 6c 20 63 6f 6d 70  command.sql comp
0d50: 69 6c 65 2e 44 41 54 41 20 53 51 4c 69 74 65 20  ile.DATA SQLite 
0d60: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
0d70: 74 65 7d 20 2d 72 65 73 75 6c 74 20 5c 0d 0a 7b  te} -result \..{
0d80: 36 33 35 35 39 38 31 34 34 30 30 30 30 30 30 30  6355981440000000
0d90: 30 30 20 36 33 35 35 39 37 38 35 36 30 30 30 30  00 6355978560000
0da0: 30 30 30 30 30 20 36 33 35 35 39 38 31 34 34 30  00000 6355981440
0db0: 30 30 30 30 30 30 30 30 20 46 61 6c 73 65 20 54  00000000 False T
0dc0: 72 75 65 20 46 61 6c 73 65 7d 7d 0d 0a 0d 0a 23  rue False}}....#
0dd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0de0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0df0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a  ##############..
0e20: 0d 0a 72 75 6e 54 65 73 74 20 7b 74 65 73 74 20  ..runTest {test 
0e30: 74 6b 74 2d 61 37 64 30 34 66 62 31 31 31 2d 31  tkt-a7d04fb111-1
0e40: 2e 33 20 7b 42 69 6e 64 20 44 61 74 65 54 69 6d  .3 {Bind DateTim
0e50: 65 20 55 74 63 20 49 53 4f 38 36 30 31 7d 20 2d  e Utc ISO8601} -
0e60: 73 65 74 75 70 20 7b 0d 0a 20 20 73 65 74 75 70  setup {..  setup
0e70: 44 62 20 5b 73 65 74 20 66 69 6c 65 4e 61 6d 65  Db [set fileName
0e80: 20 74 6b 74 2d 61 37 64 30 34 66 62 31 31 31 2d   tkt-a7d04fb111-
0e90: 31 2e 33 2e 64 62 5d 20 22 22 20 49 53 4f 38 36  1.3.db] "" ISO86
0ea0: 30 31 20 55 74 63 20 5c 0d 0a 20 20 20 20 20 20  01 Utc \..      
0eb0: 42 69 6e 64 44 61 74 65 54 69 6d 65 57 69 74 68  BindDateTimeWith
0ec0: 4b 69 6e 64 0d 0a 7d 20 2d 62 6f 64 79 20 7b 0d  Kind..} -body {.
0ed0: 0a 20 20 73 65 74 20 64 61 74 65 54 69 6d 65 56  .  set dateTimeV
0ee0: 61 6c 75 65 28 30 29 20 5b 6f 62 6a 65 63 74 20  alue(0) [object 
0ef0: 69 6e 76 6f 6b 65 20 5c 0d 0a 20 20 20 20 20 20  invoke \..      
0f00: 2d 63 72 65 61 74 65 20 44 61 74 65 54 69 6d 65  -create DateTime
0f10: 20 50 61 72 73 65 45 78 61 63 74 20 24 72 61 77   ParseExact $raw
0f20: 44 61 74 65 54 69 6d 65 56 61 6c 75 65 20 5c 0d  DateTimeValue \.
0f30: 0a 20 20 20 20 20 20 5b 67 65 74 44 61 74 65 54  .      [getDateT
0f40: 69 6d 65 46 6f 72 6d 61 74 5d 20 6e 75 6c 6c 5d  imeFormat] null]
0f50: 0d 0a 0d 0a 20 20 73 65 74 20 64 61 74 65 54 69  ....  set dateTi
0f60: 6d 65 56 61 6c 75 65 28 31 29 20 5b 6f 62 6a 65  meValue(1) [obje
0f70: 63 74 20 69 6e 76 6f 6b 65 20 2d 63 72 65 61 74  ct invoke -creat
0f80: 65 20 2d 61 6c 69 61 73 20 5c 0d 0a 20 20 20 20  e -alias \..    
0f90: 20 20 44 61 74 65 54 69 6d 65 20 53 70 65 63 69    DateTime Speci
0fa0: 66 79 4b 69 6e 64 20 24 64 61 74 65 54 69 6d 65  fyKind $dateTime
0fb0: 56 61 6c 75 65 28 30 29 20 55 74 63 5d 0d 0a 0d  Value(0) Utc]...
0fc0: 0a 20 20 73 65 74 20 64 61 74 65 54 69 6d 65 56  .  set dateTimeV
0fd0: 61 6c 75 65 28 32 29 20 5b 6f 62 6a 65 63 74 20  alue(2) [object 
0fe0: 69 6e 76 6f 6b 65 20 2d 63 72 65 61 74 65 20 2d  invoke -create -
0ff0: 61 6c 69 61 73 20 5c 0d 0a 20 20 20 20 20 20 44  alias \..      D
1000: 61 74 65 54 69 6d 65 20 53 70 65 63 69 66 79 4b  ateTime SpecifyK
1010: 69 6e 64 20 24 64 61 74 65 54 69 6d 65 56 61 6c  ind $dateTimeVal
1020: 75 65 28 30 29 20 4c 6f 63 61 6c 5d 0d 0a 0d 0a  ue(0) Local]....
1030: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74    lappend result
1040: 20 5b 73 71 6c 20 65 78 65 63 75 74 65 20 2d 65   [sql execute -e
1050: 78 65 63 75 74 65 20 73 63 61 6c 61 72 20 24 64  xecute scalar $d
1060: 62 20 22 53 45 4c 45 43 54 20 3f 3b 22 20 5c 0d  b "SELECT ?;" \.
1070: 0a 20 20 20 20 20 20 5b 6c 69 73 74 20 70 61 72  .      [list par
1080: 61 6d 31 20 44 61 74 65 54 69 6d 65 20 24 64 61  am1 DateTime $da
1090: 74 65 54 69 6d 65 56 61 6c 75 65 28 30 29 5d 5d  teTimeValue(0)]]
10a0: 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72 65  ....  lappend re
10b0: 73 75 6c 74 20 5b 73 71 6c 20 65 78 65 63 75 74  sult [sql execut
10c0: 65 20 2d 65 78 65 63 75 74 65 20 73 63 61 6c 61  e -execute scala
10d0: 72 20 24 64 62 20 22 53 45 4c 45 43 54 20 3f 3b  r $db "SELECT ?;
10e0: 22 20 5c 0d 0a 20 20 20 20 20 20 5b 6c 69 73 74  " \..      [list
10f0: 20 70 61 72 61 6d 31 20 44 61 74 65 54 69 6d 65   param1 DateTime
1100: 20 24 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28   $dateTimeValue(
1110: 31 29 5d 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e  1)]]....  lappen
1120: 64 20 72 65 73 75 6c 74 20 5b 73 71 6c 20 65 78  d result [sql ex
1130: 65 63 75 74 65 20 2d 65 78 65 63 75 74 65 20 73  ecute -execute s
1140: 63 61 6c 61 72 20 24 64 62 20 22 53 45 4c 45 43  calar $db "SELEC
1150: 54 20 3f 3b 22 20 5c 0d 0a 20 20 20 20 20 20 5b  T ?;" \..      [
1160: 6c 69 73 74 20 70 61 72 61 6d 31 20 44 61 74 65  list param1 Date
1170: 54 69 6d 65 20 24 64 61 74 65 54 69 6d 65 56 61  Time $dateTimeVa
1180: 6c 75 65 28 32 29 5d 5d 0d 0a 0d 0a 20 20 6c 61  lue(2)]]....  la
1190: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 65 78  ppend result [ex
11a0: 70 72 20 7b 5b 6c 69 6e 64 65 78 20 24 72 65 73  pr {[lindex $res
11b0: 75 6c 74 20 30 5d 20 65 71 20 5b 6c 69 6e 64 65  ult 0] eq [linde
11c0: 78 20 24 72 65 73 75 6c 74 20 31 5d 7d 5d 0d 0a  x $result 1]}]..
11d0: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74    lappend result
11e0: 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65 78 20   [expr {[lindex 
11f0: 24 72 65 73 75 6c 74 20 30 5d 20 65 71 20 5b 6c  $result 0] eq [l
1200: 69 6e 64 65 78 20 24 72 65 73 75 6c 74 20 32 5d  index $result 2]
1210: 7d 5d 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72 65  }]..  lappend re
1220: 73 75 6c 74 20 5b 65 78 70 72 20 7b 5b 6c 69 6e  sult [expr {[lin
1230: 64 65 78 20 24 72 65 73 75 6c 74 20 31 5d 20 65  dex $result 1] e
1240: 71 20 5b 6c 69 6e 64 65 78 20 24 72 65 73 75 6c  q [lindex $resul
1250: 74 20 32 5d 7d 5d 0d 0a 7d 20 2d 63 6c 65 61 6e  t 2]}]..} -clean
1260: 75 70 20 7b 0d 0a 20 20 63 6c 65 61 6e 75 70 44  up {..  cleanupD
1270: 62 20 24 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20  b $fileName.... 
1280: 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61   unset -nocompla
1290: 69 6e 20 72 65 73 75 6c 74 20 64 61 74 65 54 69  in result dateTi
12a0: 6d 65 56 61 6c 75 65 20 64 62 20 66 69 6c 65 4e  meValue db fileN
12b0: 61 6d 65 0d 0a 7d 20 2d 63 6f 6e 73 74 72 61 69  ame..} -constrai
12c0: 6e 74 73 20 5c 0d 0a 7b 65 61 67 6c 65 20 6d 6f  nts \..{eagle mo
12d0: 6e 6f 42 75 67 32 38 20 63 6f 6d 6d 61 6e 64 2e  noBug28 command.
12e0: 73 71 6c 20 63 6f 6d 70 69 6c 65 2e 44 41 54 41  sql compile.DATA
12f0: 20 53 51 4c 69 74 65 20 53 79 73 74 65 6d 2e 44   SQLite System.D
1300: 61 74 61 2e 53 51 4c 69 74 65 7d 20 2d 72 65 73  ata.SQLite} -res
1310: 75 6c 74 20 5c 0d 0a 7b 7b 32 30 31 35 2d 30 32  ult \..{{2015-02
1320: 2d 31 38 20 30 30 3a 30 30 3a 30 30 5a 7d 20 7b  -18 00:00:00Z} {
1330: 32 30 31 35 2d 30 32 2d 31 38 20 30 30 3a 30 30  2015-02-18 00:00
1340: 3a 30 30 5a 7d 20 7b 32 30 31 35 2d 30 32 2d 31  :00Z} {2015-02-1
1350: 38 20 30 38 3a 30 30 3a 30 30 5a 7d 20 54 72 75  8 08:00:00Z} Tru
1360: 65 5c 0d 0a 46 61 6c 73 65 20 46 61 6c 73 65 7d  e\..False False}
1370: 7d 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 23  }....###########
1380: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1390: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
13c0: 23 23 23 23 0d 0a 0d 0a 72 75 6e 54 65 73 74 20  ####....runTest 
13d0: 7b 74 65 73 74 20 74 6b 74 2d 61 37 64 30 34 66  {test tkt-a7d04f
13e0: 62 31 31 31 2d 31 2e 34 20 7b 42 69 6e 64 20 44  b111-1.4 {Bind D
13f0: 61 74 65 54 69 6d 65 20 4c 6f 63 61 6c 20 49 53  ateTime Local IS
1400: 4f 38 36 30 31 7d 20 2d 73 65 74 75 70 20 7b 0d  O8601} -setup {.
1410: 0a 20 20 73 65 74 75 70 44 62 20 5b 73 65 74 20  .  setupDb [set 
1420: 66 69 6c 65 4e 61 6d 65 20 74 6b 74 2d 61 37 64  fileName tkt-a7d
1430: 30 34 66 62 31 31 31 2d 31 2e 34 2e 64 62 5d 20  04fb111-1.4.db] 
1440: 22 22 20 49 53 4f 38 36 30 31 20 4c 6f 63 61 6c  "" ISO8601 Local
1450: 20 5c 0d 0a 20 20 20 20 20 20 42 69 6e 64 44 61   \..      BindDa
1460: 74 65 54 69 6d 65 57 69 74 68 4b 69 6e 64 0d 0a  teTimeWithKind..
1470: 7d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 65 74  } -body {..  set
1480: 20 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28 30   dateTimeValue(0
1490: 29 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65  ) [object invoke
14a0: 20 5c 0d 0a 20 20 20 20 20 20 2d 63 72 65 61 74   \..      -creat
14b0: 65 20 44 61 74 65 54 69 6d 65 20 50 61 72 73 65  e DateTime Parse
14c0: 45 78 61 63 74 20 24 72 61 77 44 61 74 65 54 69  Exact $rawDateTi
14d0: 6d 65 56 61 6c 75 65 20 5c 0d 0a 20 20 20 20 20  meValue \..     
14e0: 20 5b 67 65 74 44 61 74 65 54 69 6d 65 46 6f 72   [getDateTimeFor
14f0: 6d 61 74 5d 20 6e 75 6c 6c 5d 0d 0a 0d 0a 20 20  mat] null]....  
1500: 73 65 74 20 64 61 74 65 54 69 6d 65 56 61 6c 75  set dateTimeValu
1510: 65 28 31 29 20 5b 6f 62 6a 65 63 74 20 69 6e 76  e(1) [object inv
1520: 6f 6b 65 20 2d 63 72 65 61 74 65 20 2d 61 6c 69  oke -create -ali
1530: 61 73 20 5c 0d 0a 20 20 20 20 20 20 44 61 74 65  as \..      Date
1540: 54 69 6d 65 20 53 70 65 63 69 66 79 4b 69 6e 64  Time SpecifyKind
1550: 20 24 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28   $dateTimeValue(
1560: 30 29 20 55 74 63 5d 0d 0a 0d 0a 20 20 73 65 74  0) Utc]....  set
1570: 20 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28 32   dateTimeValue(2
1580: 29 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65  ) [object invoke
1590: 20 2d 63 72 65 61 74 65 20 2d 61 6c 69 61 73 20   -create -alias 
15a0: 5c 0d 0a 20 20 20 20 20 20 44 61 74 65 54 69 6d  \..      DateTim
15b0: 65 20 53 70 65 63 69 66 79 4b 69 6e 64 20 24 64  e SpecifyKind $d
15c0: 61 74 65 54 69 6d 65 56 61 6c 75 65 28 30 29 20  ateTimeValue(0) 
15d0: 4c 6f 63 61 6c 5d 0d 0a 0d 0a 20 20 6c 61 70 70  Local]....  lapp
15e0: 65 6e 64 20 72 65 73 75 6c 74 20 5b 73 71 6c 20  end result [sql 
15f0: 65 78 65 63 75 74 65 20 2d 65 78 65 63 75 74 65  execute -execute
1600: 20 73 63 61 6c 61 72 20 24 64 62 20 22 53 45 4c   scalar $db "SEL
1610: 45 43 54 20 3f 3b 22 20 5c 0d 0a 20 20 20 20 20  ECT ?;" \..     
1620: 20 5b 6c 69 73 74 20 70 61 72 61 6d 31 20 44 61   [list param1 Da
1630: 74 65 54 69 6d 65 20 24 64 61 74 65 54 69 6d 65  teTime $dateTime
1640: 56 61 6c 75 65 28 30 29 5d 5d 0d 0a 0d 0a 20 20  Value(0)]]....  
1650: 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b  lappend result [
1660: 73 71 6c 20 65 78 65 63 75 74 65 20 2d 65 78 65  sql execute -exe
1670: 63 75 74 65 20 73 63 61 6c 61 72 20 24 64 62 20  cute scalar $db 
1680: 22 53 45 4c 45 43 54 20 3f 3b 22 20 5c 0d 0a 20  "SELECT ?;" \.. 
1690: 20 20 20 20 20 5b 6c 69 73 74 20 70 61 72 61 6d       [list param
16a0: 31 20 44 61 74 65 54 69 6d 65 20 24 64 61 74 65  1 DateTime $date
16b0: 54 69 6d 65 56 61 6c 75 65 28 31 29 5d 5d 0d 0a  TimeValue(1)]]..
16c0: 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75  ..  lappend resu
16d0: 6c 74 20 5b 73 71 6c 20 65 78 65 63 75 74 65 20  lt [sql execute 
16e0: 2d 65 78 65 63 75 74 65 20 73 63 61 6c 61 72 20  -execute scalar 
16f0: 24 64 62 20 22 53 45 4c 45 43 54 20 3f 3b 22 20  $db "SELECT ?;" 
1700: 5c 0d 0a 20 20 20 20 20 20 5b 6c 69 73 74 20 70  \..      [list p
1710: 61 72 61 6d 31 20 44 61 74 65 54 69 6d 65 20 24  aram1 DateTime $
1720: 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28 32 29  dateTimeValue(2)
1730: 5d 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20  ]]....  lappend 
1740: 72 65 73 75 6c 74 20 5b 65 78 70 72 20 7b 5b 6c  result [expr {[l
1750: 69 6e 64 65 78 20 24 72 65 73 75 6c 74 20 30 5d  index $result 0]
1760: 20 65 71 20 5b 6c 69 6e 64 65 78 20 24 72 65 73   eq [lindex $res
1770: 75 6c 74 20 31 5d 7d 5d 0d 0a 20 20 6c 61 70 70  ult 1]}]..  lapp
1780: 65 6e 64 20 72 65 73 75 6c 74 20 5b 65 78 70 72  end result [expr
1790: 20 7b 5b 6c 69 6e 64 65 78 20 24 72 65 73 75 6c   {[lindex $resul
17a0: 74 20 30 5d 20 65 71 20 5b 6c 69 6e 64 65 78 20  t 0] eq [lindex 
17b0: 24 72 65 73 75 6c 74 20 32 5d 7d 5d 0d 0a 20 20  $result 2]}]..  
17c0: 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b  lappend result [
17d0: 65 78 70 72 20 7b 5b 6c 69 6e 64 65 78 20 24 72  expr {[lindex $r
17e0: 65 73 75 6c 74 20 31 5d 20 65 71 20 5b 6c 69 6e  esult 1] eq [lin
17f0: 64 65 78 20 24 72 65 73 75 6c 74 20 32 5d 7d 5d  dex $result 2]}]
1800: 0d 0a 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0d 0a  ..} -cleanup {..
1810: 20 20 63 6c 65 61 6e 75 70 44 62 20 24 66 69 6c    cleanupDb $fil
1820: 65 4e 61 6d 65 0d 0a 0d 0a 20 20 75 6e 73 65 74  eName....  unset
1830: 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72 65 73   -nocomplain res
1840: 75 6c 74 20 64 61 74 65 54 69 6d 65 56 61 6c 75  ult dateTimeValu
1850: 65 20 64 62 20 66 69 6c 65 4e 61 6d 65 0d 0a 7d  e db fileName..}
1860: 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 5c 0d   -constraints \.
1870: 0a 7b 65 61 67 6c 65 20 6d 6f 6e 6f 42 75 67 32  .{eagle monoBug2
1880: 38 20 63 6f 6d 6d 61 6e 64 2e 73 71 6c 20 63 6f  8 command.sql co
1890: 6d 70 69 6c 65 2e 44 41 54 41 20 53 51 4c 69 74  mpile.DATA SQLit
18a0: 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  e System.Data.SQ
18b0: 4c 69 74 65 7d 20 2d 72 65 73 75 6c 74 20 5c 0d  Lite} -result \.
18c0: 0a 7b 7b 32 30 31 35 2d 30 32 2d 31 38 20 30 30  .{{2015-02-18 00
18d0: 3a 30 30 3a 30 30 7d 20 7b 32 30 31 35 2d 30 32  :00:00} {2015-02
18e0: 2d 31 37 20 31 36 3a 30 30 3a 30 30 7d 20 7b 32  -17 16:00:00} {2
18f0: 30 31 35 2d 30 32 2d 31 38 20 30 30 3a 30 30 3a  015-02-18 00:00:
1900: 30 30 7d 20 46 61 6c 73 65 20 54 72 75 65 5c 0d  00} False True\.
1910: 0a 46 61 6c 73 65 7d 7d 0d 0a 0d 0a 23 23 23 23  .False}}....####
1920: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1930: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1940: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1950: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1960: 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72  ###########....r
1970: 75 6e 54 65 73 74 20 7b 74 65 73 74 20 74 6b 74  unTest {test tkt
1980: 2d 61 37 64 30 34 66 62 31 31 31 2d 31 2e 35 20  -a7d04fb111-1.5 
1990: 7b 42 69 6e 64 20 44 61 74 65 54 69 6d 65 20 55  {Bind DateTime U
19a0: 74 63 20 4a 75 6c 69 61 6e 44 61 79 7d 20 2d 73  tc JulianDay} -s
19b0: 65 74 75 70 20 7b 0d 0a 20 20 73 65 74 75 70 44  etup {..  setupD
19c0: 62 20 5b 73 65 74 20 66 69 6c 65 4e 61 6d 65 20  b [set fileName 
19d0: 74 6b 74 2d 61 37 64 30 34 66 62 31 31 31 2d 31  tkt-a7d04fb111-1
19e0: 2e 35 2e 64 62 5d 20 22 22 20 4a 75 6c 69 61 6e  .5.db] "" Julian
19f0: 44 61 79 20 55 74 63 20 5c 0d 0a 20 20 20 20 20  Day Utc \..     
1a00: 20 42 69 6e 64 44 61 74 65 54 69 6d 65 57 69 74   BindDateTimeWit
1a10: 68 4b 69 6e 64 0d 0a 7d 20 2d 62 6f 64 79 20 7b  hKind..} -body {
1a20: 0d 0a 20 20 73 65 74 20 64 61 74 65 54 69 6d 65  ..  set dateTime
1a30: 56 61 6c 75 65 28 30 29 20 5b 6f 62 6a 65 63 74  Value(0) [object
1a40: 20 69 6e 76 6f 6b 65 20 5c 0d 0a 20 20 20 20 20   invoke \..     
1a50: 20 2d 63 72 65 61 74 65 20 44 61 74 65 54 69 6d   -create DateTim
1a60: 65 20 50 61 72 73 65 45 78 61 63 74 20 24 72 61  e ParseExact $ra
1a70: 77 44 61 74 65 54 69 6d 65 56 61 6c 75 65 20 5c  wDateTimeValue \
1a80: 0d 0a 20 20 20 20 20 20 5b 67 65 74 44 61 74 65  ..      [getDate
1a90: 54 69 6d 65 46 6f 72 6d 61 74 5d 20 6e 75 6c 6c  TimeFormat] null
1aa0: 5d 0d 0a 0d 0a 20 20 73 65 74 20 64 61 74 65 54  ]....  set dateT
1ab0: 69 6d 65 56 61 6c 75 65 28 31 29 20 5b 6f 62 6a  imeValue(1) [obj
1ac0: 65 63 74 20 69 6e 76 6f 6b 65 20 2d 63 72 65 61  ect invoke -crea
1ad0: 74 65 20 2d 61 6c 69 61 73 20 5c 0d 0a 20 20 20  te -alias \..   
1ae0: 20 20 20 44 61 74 65 54 69 6d 65 20 53 70 65 63     DateTime Spec
1af0: 69 66 79 4b 69 6e 64 20 24 64 61 74 65 54 69 6d  ifyKind $dateTim
1b00: 65 56 61 6c 75 65 28 30 29 20 55 74 63 5d 0d 0a  eValue(0) Utc]..
1b10: 0d 0a 20 20 73 65 74 20 64 61 74 65 54 69 6d 65  ..  set dateTime
1b20: 56 61 6c 75 65 28 32 29 20 5b 6f 62 6a 65 63 74  Value(2) [object
1b30: 20 69 6e 76 6f 6b 65 20 2d 63 72 65 61 74 65 20   invoke -create 
1b40: 2d 61 6c 69 61 73 20 5c 0d 0a 20 20 20 20 20 20  -alias \..      
1b50: 44 61 74 65 54 69 6d 65 20 53 70 65 63 69 66 79  DateTime Specify
1b60: 4b 69 6e 64 20 24 64 61 74 65 54 69 6d 65 56 61  Kind $dateTimeVa
1b70: 6c 75 65 28 30 29 20 4c 6f 63 61 6c 5d 0d 0a 0d  lue(0) Local]...
1b80: 0a 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c  .  lappend resul
1b90: 74 20 5b 73 71 6c 20 65 78 65 63 75 74 65 20 2d  t [sql execute -
1ba0: 65 78 65 63 75 74 65 20 73 63 61 6c 61 72 20 24  execute scalar $
1bb0: 64 62 20 22 53 45 4c 45 43 54 20 3f 3b 22 20 5c  db "SELECT ?;" \
1bc0: 0d 0a 20 20 20 20 20 20 5b 6c 69 73 74 20 70 61  ..      [list pa
1bd0: 72 61 6d 31 20 44 61 74 65 54 69 6d 65 20 24 64  ram1 DateTime $d
1be0: 61 74 65 54 69 6d 65 56 61 6c 75 65 28 30 29 5d  ateTimeValue(0)]
1bf0: 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72  ]....  lappend r
1c00: 65 73 75 6c 74 20 5b 73 71 6c 20 65 78 65 63 75  esult [sql execu
1c10: 74 65 20 2d 65 78 65 63 75 74 65 20 73 63 61 6c  te -execute scal
1c20: 61 72 20 24 64 62 20 22 53 45 4c 45 43 54 20 3f  ar $db "SELECT ?
1c30: 3b 22 20 5c 0d 0a 20 20 20 20 20 20 5b 6c 69 73  ;" \..      [lis
1c40: 74 20 70 61 72 61 6d 31 20 44 61 74 65 54 69 6d  t param1 DateTim
1c50: 65 20 24 64 61 74 65 54 69 6d 65 56 61 6c 75 65  e $dateTimeValue
1c60: 28 31 29 5d 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65  (1)]]....  lappe
1c70: 6e 64 20 72 65 73 75 6c 74 20 5b 65 78 70 72 20  nd result [expr 
1c80: 7b 72 6f 75 6e 64 32 28 5b 73 71 6c 20 65 78 65  {round2([sql exe
1c90: 63 75 74 65 20 2d 65 78 65 63 75 74 65 20 73 63  cute -execute sc
1ca0: 61 6c 61 72 20 24 64 62 20 22 53 45 4c 45 43 54  alar $db "SELECT
1cb0: 20 3f 3b 22 20 5c 0d 0a 20 20 20 20 20 20 5b 6c   ?;" \..      [l
1cc0: 69 73 74 20 70 61 72 61 6d 31 20 44 61 74 65 54  ist param1 DateT
1cd0: 69 6d 65 20 24 64 61 74 65 54 69 6d 65 56 61 6c  ime $dateTimeVal
1ce0: 75 65 28 32 29 5d 5d 2c 20 32 29 7d 5d 0d 0a 0d  ue(2)]], 2)}]...
1cf0: 0a 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c  .  lappend resul
1d00: 74 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65 78  t [expr {[lindex
1d10: 20 24 72 65 73 75 6c 74 20 30 5d 20 3d 3d 20 5b   $result 0] == [
1d20: 6c 69 6e 64 65 78 20 24 72 65 73 75 6c 74 20 31  lindex $result 1
1d30: 5d 7d 5d 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72  ]}]..  lappend r
1d40: 65 73 75 6c 74 20 5b 65 78 70 72 20 7b 5b 6c 69  esult [expr {[li
1d50: 6e 64 65 78 20 24 72 65 73 75 6c 74 20 30 5d 20  ndex $result 0] 
1d60: 3d 3d 20 5b 6c 69 6e 64 65 78 20 24 72 65 73 75  == [lindex $resu
1d70: 6c 74 20 32 5d 7d 5d 0d 0a 20 20 6c 61 70 70 65  lt 2]}]..  lappe
1d80: 6e 64 20 72 65 73 75 6c 74 20 5b 65 78 70 72 20  nd result [expr 
1d90: 7b 5b 6c 69 6e 64 65 78 20 24 72 65 73 75 6c 74  {[lindex $result
1da0: 20 31 5d 20 3d 3d 20 5b 6c 69 6e 64 65 78 20 24   1] == [lindex $
1db0: 72 65 73 75 6c 74 20 32 5d 7d 5d 0d 0a 7d 20 2d  result 2]}]..} -
1dc0: 63 6c 65 61 6e 75 70 20 7b 0d 0a 20 20 63 6c 65  cleanup {..  cle
1dd0: 61 6e 75 70 44 62 20 24 66 69 6c 65 4e 61 6d 65  anupDb $fileName
1de0: 0d 0a 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63  ....  unset -noc
1df0: 6f 6d 70 6c 61 69 6e 20 72 65 73 75 6c 74 20 64  omplain result d
1e00: 61 74 65 54 69 6d 65 56 61 6c 75 65 20 64 62 20  ateTimeValue db 
1e10: 66 69 6c 65 4e 61 6d 65 0d 0a 7d 20 2d 63 6f 6e  fileName..} -con
1e20: 73 74 72 61 69 6e 74 73 20 5c 0d 0a 7b 65 61 67  straints \..{eag
1e30: 6c 65 20 6d 6f 6e 6f 42 75 67 32 38 20 63 6f 6d  le monoBug28 com
1e40: 6d 61 6e 64 2e 73 71 6c 20 63 6f 6d 70 69 6c 65  mand.sql compile
1e50: 2e 44 41 54 41 20 53 51 4c 69 74 65 20 53 79 73  .DATA SQLite Sys
1e60: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 7d  tem.Data.SQLite}
1e70: 20 2d 72 65 73 75 6c 74 20 5c 0d 0a 7b 32 34 35   -result \..{245
1e80: 37 30 37 31 2e 35 20 32 34 35 37 30 37 31 2e 35  7071.5 2457071.5
1e90: 20 32 34 35 37 30 37 31 2e 38 33 20 54 72 75 65   2457071.83 True
1ea0: 20 46 61 6c 73 65 20 46 61 6c 73 65 7d 7d 0d 0a   False False}}..
1eb0: 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ..##############
1ec0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1ed0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1ee0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1ef0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1f00: 23 0d 0a 0d 0a 72 75 6e 54 65 73 74 20 7b 74 65  #....runTest {te
1f10: 73 74 20 74 6b 74 2d 61 37 64 30 34 66 62 31 31  st tkt-a7d04fb11
1f20: 31 2d 31 2e 36 20 7b 42 69 6e 64 20 44 61 74 65  1-1.6 {Bind Date
1f30: 54 69 6d 65 20 4c 6f 63 61 6c 20 4a 75 6c 69 61  Time Local Julia
1f40: 6e 44 61 79 7d 20 2d 73 65 74 75 70 20 7b 0d 0a  nDay} -setup {..
1f50: 20 20 73 65 74 75 70 44 62 20 5b 73 65 74 20 66    setupDb [set f
1f60: 69 6c 65 4e 61 6d 65 20 74 6b 74 2d 61 37 64 30  ileName tkt-a7d0
1f70: 34 66 62 31 31 31 2d 31 2e 36 2e 64 62 5d 20 22  4fb111-1.6.db] "
1f80: 22 20 4a 75 6c 69 61 6e 44 61 79 20 4c 6f 63 61  " JulianDay Loca
1f90: 6c 20 5c 0d 0a 20 20 20 20 20 20 42 69 6e 64 44  l \..      BindD
1fa0: 61 74 65 54 69 6d 65 57 69 74 68 4b 69 6e 64 0d  ateTimeWithKind.
1fb0: 0a 7d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 65  .} -body {..  se
1fc0: 74 20 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28  t dateTimeValue(
1fd0: 30 29 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b  0) [object invok
1fe0: 65 20 5c 0d 0a 20 20 20 20 20 20 2d 63 72 65 61  e \..      -crea
1ff0: 74 65 20 44 61 74 65 54 69 6d 65 20 50 61 72 73  te DateTime Pars
2000: 65 45 78 61 63 74 20 24 72 61 77 44 61 74 65 54  eExact $rawDateT
2010: 69 6d 65 56 61 6c 75 65 20 5c 0d 0a 20 20 20 20  imeValue \..    
2020: 20 20 5b 67 65 74 44 61 74 65 54 69 6d 65 46 6f    [getDateTimeFo
2030: 72 6d 61 74 5d 20 6e 75 6c 6c 5d 0d 0a 0d 0a 20  rmat] null].... 
2040: 20 73 65 74 20 64 61 74 65 54 69 6d 65 56 61 6c   set dateTimeVal
2050: 75 65 28 31 29 20 5b 6f 62 6a 65 63 74 20 69 6e  ue(1) [object in
2060: 76 6f 6b 65 20 2d 63 72 65 61 74 65 20 2d 61 6c  voke -create -al
2070: 69 61 73 20 5c 0d 0a 20 20 20 20 20 20 44 61 74  ias \..      Dat
2080: 65 54 69 6d 65 20 53 70 65 63 69 66 79 4b 69 6e  eTime SpecifyKin
2090: 64 20 24 64 61 74 65 54 69 6d 65 56 61 6c 75 65  d $dateTimeValue
20a0: 28 30 29 20 55 74 63 5d 0d 0a 0d 0a 20 20 73 65  (0) Utc]....  se
20b0: 74 20 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28  t dateTimeValue(
20c0: 32 29 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b  2) [object invok
20d0: 65 20 2d 63 72 65 61 74 65 20 2d 61 6c 69 61 73  e -create -alias
20e0: 20 5c 0d 0a 20 20 20 20 20 20 44 61 74 65 54 69   \..      DateTi
20f0: 6d 65 20 53 70 65 63 69 66 79 4b 69 6e 64 20 24  me SpecifyKind $
2100: 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28 30 29  dateTimeValue(0)
2110: 20 4c 6f 63 61 6c 5d 0d 0a 0d 0a 20 20 6c 61 70   Local]....  lap
2120: 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 73 71 6c  pend result [sql
2130: 20 65 78 65 63 75 74 65 20 2d 65 78 65 63 75 74   execute -execut
2140: 65 20 73 63 61 6c 61 72 20 24 64 62 20 22 53 45  e scalar $db "SE
2150: 4c 45 43 54 20 3f 3b 22 20 5c 0d 0a 20 20 20 20  LECT ?;" \..    
2160: 20 20 5b 6c 69 73 74 20 70 61 72 61 6d 31 20 44    [list param1 D
2170: 61 74 65 54 69 6d 65 20 24 64 61 74 65 54 69 6d  ateTime $dateTim
2180: 65 56 61 6c 75 65 28 30 29 5d 5d 0d 0a 0d 0a 20  eValue(0)]].... 
2190: 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20   lappend result 
21a0: 5b 65 78 70 72 20 7b 72 6f 75 6e 64 32 28 5b 73  [expr {round2([s
21b0: 71 6c 20 65 78 65 63 75 74 65 20 2d 65 78 65 63  ql execute -exec
21c0: 75 74 65 20 73 63 61 6c 61 72 20 24 64 62 20 22  ute scalar $db "
21d0: 53 45 4c 45 43 54 20 3f 3b 22 20 5c 0d 0a 20 20  SELECT ?;" \..  
21e0: 20 20 20 20 5b 6c 69 73 74 20 70 61 72 61 6d 31      [list param1
21f0: 20 44 61 74 65 54 69 6d 65 20 24 64 61 74 65 54   DateTime $dateT
2200: 69 6d 65 56 61 6c 75 65 28 31 29 5d 5d 2c 20 32  imeValue(1)]], 2
2210: 29 7d 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64  )}]....  lappend
2220: 20 72 65 73 75 6c 74 20 5b 73 71 6c 20 65 78 65   result [sql exe
2230: 63 75 74 65 20 2d 65 78 65 63 75 74 65 20 73 63  cute -execute sc
2240: 61 6c 61 72 20 24 64 62 20 22 53 45 4c 45 43 54  alar $db "SELECT
2250: 20 3f 3b 22 20 5c 0d 0a 20 20 20 20 20 20 5b 6c   ?;" \..      [l
2260: 69 73 74 20 70 61 72 61 6d 31 20 44 61 74 65 54  ist param1 DateT
2270: 69 6d 65 20 24 64 61 74 65 54 69 6d 65 56 61 6c  ime $dateTimeVal
2280: 75 65 28 32 29 5d 5d 0d 0a 0d 0a 20 20 6c 61 70  ue(2)]]....  lap
2290: 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 65 78 70  pend result [exp
22a0: 72 20 7b 5b 6c 69 6e 64 65 78 20 24 72 65 73 75  r {[lindex $resu
22b0: 6c 74 20 30 5d 20 3d 3d 20 5b 6c 69 6e 64 65 78  lt 0] == [lindex
22c0: 20 24 72 65 73 75 6c 74 20 31 5d 7d 5d 0d 0a 20   $result 1]}].. 
22d0: 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20   lappend result 
22e0: 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65 78 20 24  [expr {[lindex $
22f0: 72 65 73 75 6c 74 20 30 5d 20 3d 3d 20 5b 6c 69  result 0] == [li
2300: 6e 64 65 78 20 24 72 65 73 75 6c 74 20 32 5d 7d  ndex $result 2]}
2310: 5d 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72 65 73  ]..  lappend res
2320: 75 6c 74 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64  ult [expr {[lind
2330: 65 78 20 24 72 65 73 75 6c 74 20 31 5d 20 3d 3d  ex $result 1] ==
2340: 20 5b 6c 69 6e 64 65 78 20 24 72 65 73 75 6c 74   [lindex $result
2350: 20 32 5d 7d 5d 0d 0a 7d 20 2d 63 6c 65 61 6e 75   2]}]..} -cleanu
2360: 70 20 7b 0d 0a 20 20 63 6c 65 61 6e 75 70 44 62  p {..  cleanupDb
2370: 20 24 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20 20   $fileName....  
2380: 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69  unset -nocomplai
2390: 6e 20 72 65 73 75 6c 74 20 64 61 74 65 54 69 6d  n result dateTim
23a0: 65 56 61 6c 75 65 20 64 62 20 66 69 6c 65 4e 61  eValue db fileNa
23b0: 6d 65 0d 0a 7d 20 2d 63 6f 6e 73 74 72 61 69 6e  me..} -constrain
23c0: 74 73 20 5c 0d 0a 7b 65 61 67 6c 65 20 6d 6f 6e  ts \..{eagle mon
23d0: 6f 42 75 67 32 38 20 63 6f 6d 6d 61 6e 64 2e 73  oBug28 command.s
23e0: 71 6c 20 63 6f 6d 70 69 6c 65 2e 44 41 54 41 20  ql compile.DATA 
23f0: 53 51 4c 69 74 65 20 53 79 73 74 65 6d 2e 44 61  SQLite System.Da
2400: 74 61 2e 53 51 4c 69 74 65 7d 20 2d 72 65 73 75  ta.SQLite} -resu
2410: 6c 74 20 5c 0d 0a 7b 32 34 35 37 30 37 31 2e 35  lt \..{2457071.5
2420: 20 32 34 35 37 30 37 31 2e 31 37 20 32 34 35 37   2457071.17 2457
2430: 30 37 31 2e 35 20 46 61 6c 73 65 20 54 72 75 65  071.5 False True
2440: 20 46 61 6c 73 65 7d 7d 0d 0a 0d 0a 23 23 23 23   False}}....####
2450: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2470: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2480: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2490: 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72  ###########....r
24a0: 75 6e 54 65 73 74 20 7b 74 65 73 74 20 74 6b 74  unTest {test tkt
24b0: 2d 61 37 64 30 34 66 62 31 31 31 2d 31 2e 37 20  -a7d04fb111-1.7 
24c0: 7b 42 69 6e 64 20 44 61 74 65 54 69 6d 65 20 55  {Bind DateTime U
24d0: 74 63 20 55 6e 69 78 45 70 6f 63 68 7d 20 2d 73  tc UnixEpoch} -s
24e0: 65 74 75 70 20 7b 0d 0a 20 20 73 65 74 75 70 44  etup {..  setupD
24f0: 62 20 5b 73 65 74 20 66 69 6c 65 4e 61 6d 65 20  b [set fileName 
2500: 74 6b 74 2d 61 37 64 30 34 66 62 31 31 31 2d 31  tkt-a7d04fb111-1
2510: 2e 37 2e 64 62 5d 20 22 22 20 55 6e 69 78 45 70  .7.db] "" UnixEp
2520: 6f 63 68 20 55 74 63 20 5c 0d 0a 20 20 20 20 20  och Utc \..     
2530: 20 42 69 6e 64 44 61 74 65 54 69 6d 65 57 69 74   BindDateTimeWit
2540: 68 4b 69 6e 64 0d 0a 7d 20 2d 62 6f 64 79 20 7b  hKind..} -body {
2550: 0d 0a 20 20 73 65 74 20 64 61 74 65 54 69 6d 65  ..  set dateTime
2560: 56 61 6c 75 65 28 30 29 20 5b 6f 62 6a 65 63 74  Value(0) [object
2570: 20 69 6e 76 6f 6b 65 20 5c 0d 0a 20 20 20 20 20   invoke \..     
2580: 20 2d 63 72 65 61 74 65 20 44 61 74 65 54 69 6d   -create DateTim
2590: 65 20 50 61 72 73 65 45 78 61 63 74 20 24 72 61  e ParseExact $ra
25a0: 77 44 61 74 65 54 69 6d 65 56 61 6c 75 65 20 5c  wDateTimeValue \
25b0: 0d 0a 20 20 20 20 20 20 5b 67 65 74 44 61 74 65  ..      [getDate
25c0: 54 69 6d 65 46 6f 72 6d 61 74 5d 20 6e 75 6c 6c  TimeFormat] null
25d0: 5d 0d 0a 0d 0a 20 20 73 65 74 20 64 61 74 65 54  ]....  set dateT
25e0: 69 6d 65 56 61 6c 75 65 28 31 29 20 5b 6f 62 6a  imeValue(1) [obj
25f0: 65 63 74 20 69 6e 76 6f 6b 65 20 2d 63 72 65 61  ect invoke -crea
2600: 74 65 20 2d 61 6c 69 61 73 20 5c 0d 0a 20 20 20  te -alias \..   
2610: 20 20 20 44 61 74 65 54 69 6d 65 20 53 70 65 63     DateTime Spec
2620: 69 66 79 4b 69 6e 64 20 24 64 61 74 65 54 69 6d  ifyKind $dateTim
2630: 65 56 61 6c 75 65 28 30 29 20 55 74 63 5d 0d 0a  eValue(0) Utc]..
2640: 0d 0a 20 20 73 65 74 20 64 61 74 65 54 69 6d 65  ..  set dateTime
2650: 56 61 6c 75 65 28 32 29 20 5b 6f 62 6a 65 63 74  Value(2) [object
2660: 20 69 6e 76 6f 6b 65 20 2d 63 72 65 61 74 65 20   invoke -create 
2670: 2d 61 6c 69 61 73 20 5c 0d 0a 20 20 20 20 20 20  -alias \..      
2680: 44 61 74 65 54 69 6d 65 20 53 70 65 63 69 66 79  DateTime Specify
2690: 4b 69 6e 64 20 24 64 61 74 65 54 69 6d 65 56 61  Kind $dateTimeVa
26a0: 6c 75 65 28 30 29 20 4c 6f 63 61 6c 5d 0d 0a 0d  lue(0) Local]...
26b0: 0a 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c  .  lappend resul
26c0: 74 20 5b 73 71 6c 20 65 78 65 63 75 74 65 20 2d  t [sql execute -
26d0: 65 78 65 63 75 74 65 20 73 63 61 6c 61 72 20 24  execute scalar $
26e0: 64 62 20 22 53 45 4c 45 43 54 20 3f 3b 22 20 5c  db "SELECT ?;" \
26f0: 0d 0a 20 20 20 20 20 20 5b 6c 69 73 74 20 70 61  ..      [list pa
2700: 72 61 6d 31 20 44 61 74 65 54 69 6d 65 20 24 64  ram1 DateTime $d
2710: 61 74 65 54 69 6d 65 56 61 6c 75 65 28 30 29 5d  ateTimeValue(0)]
2720: 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72  ]....  lappend r
2730: 65 73 75 6c 74 20 5b 73 71 6c 20 65 78 65 63 75  esult [sql execu
2740: 74 65 20 2d 65 78 65 63 75 74 65 20 73 63 61 6c  te -execute scal
2750: 61 72 20 24 64 62 20 22 53 45 4c 45 43 54 20 3f  ar $db "SELECT ?
2760: 3b 22 20 5c 0d 0a 20 20 20 20 20 20 5b 6c 69 73  ;" \..      [lis
2770: 74 20 70 61 72 61 6d 31 20 44 61 74 65 54 69 6d  t param1 DateTim
2780: 65 20 24 64 61 74 65 54 69 6d 65 56 61 6c 75 65  e $dateTimeValue
2790: 28 31 29 5d 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65  (1)]]....  lappe
27a0: 6e 64 20 72 65 73 75 6c 74 20 5b 73 71 6c 20 65  nd result [sql e
27b0: 78 65 63 75 74 65 20 2d 65 78 65 63 75 74 65 20  xecute -execute 
27c0: 73 63 61 6c 61 72 20 24 64 62 20 22 53 45 4c 45  scalar $db "SELE
27d0: 43 54 20 3f 3b 22 20 5c 0d 0a 20 20 20 20 20 20  CT ?;" \..      
27e0: 5b 6c 69 73 74 20 70 61 72 61 6d 31 20 44 61 74  [list param1 Dat
27f0: 65 54 69 6d 65 20 24 64 61 74 65 54 69 6d 65 56  eTime $dateTimeV
2800: 61 6c 75 65 28 32 29 5d 5d 0d 0a 0d 0a 20 20 6c  alue(2)]]....  l
2810: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 65  append result [e
2820: 78 70 72 20 7b 5b 6c 69 6e 64 65 78 20 24 72 65  xpr {[lindex $re
2830: 73 75 6c 74 20 30 5d 20 3d 3d 20 5b 6c 69 6e 64  sult 0] == [lind
2840: 65 78 20 24 72 65 73 75 6c 74 20 31 5d 7d 5d 0d  ex $result 1]}].
2850: 0a 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c  .  lappend resul
2860: 74 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65 78  t [expr {[lindex
2870: 20 24 72 65 73 75 6c 74 20 30 5d 20 3d 3d 20 5b   $result 0] == [
2880: 6c 69 6e 64 65 78 20 24 72 65 73 75 6c 74 20 32  lindex $result 2
2890: 5d 7d 5d 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72  ]}]..  lappend r
28a0: 65 73 75 6c 74 20 5b 65 78 70 72 20 7b 5b 6c 69  esult [expr {[li
28b0: 6e 64 65 78 20 24 72 65 73 75 6c 74 20 31 5d 20  ndex $result 1] 
28c0: 3d 3d 20 5b 6c 69 6e 64 65 78 20 24 72 65 73 75  == [lindex $resu
28d0: 6c 74 20 32 5d 7d 5d 0d 0a 7d 20 2d 63 6c 65 61  lt 2]}]..} -clea
28e0: 6e 75 70 20 7b 0d 0a 20 20 63 6c 65 61 6e 75 70  nup {..  cleanup
28f0: 44 62 20 24 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a  Db $fileName....
2900: 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c    unset -nocompl
2910: 61 69 6e 20 72 65 73 75 6c 74 20 64 61 74 65 54  ain result dateT
2920: 69 6d 65 56 61 6c 75 65 20 64 62 20 66 69 6c 65  imeValue db file
2930: 4e 61 6d 65 0d 0a 7d 20 2d 63 6f 6e 73 74 72 61  Name..} -constra
2940: 69 6e 74 73 20 5c 0d 0a 7b 65 61 67 6c 65 20 6d  ints \..{eagle m
2950: 6f 6e 6f 42 75 67 32 38 20 63 6f 6d 6d 61 6e 64  onoBug28 command
2960: 2e 73 71 6c 20 63 6f 6d 70 69 6c 65 2e 44 41 54  .sql compile.DAT
2970: 41 20 53 51 4c 69 74 65 20 53 79 73 74 65 6d 2e  A SQLite System.
2980: 44 61 74 61 2e 53 51 4c 69 74 65 7d 20 2d 72 65  Data.SQLite} -re
2990: 73 75 6c 74 20 5c 0d 0a 7b 31 34 32 34 32 31 37  sult \..{1424217
29a0: 36 30 30 20 31 34 32 34 32 31 37 36 30 30 20 31  600 1424217600 1
29b0: 34 32 34 32 34 36 34 30 30 20 54 72 75 65 20 46  424246400 True F
29c0: 61 6c 73 65 20 46 61 6c 73 65 7d 7d 0d 0a 0d 0a  alse False}}....
29d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
29e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
29f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2a00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2a10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d  ###############.
2a20: 0a 0d 0a 72 75 6e 54 65 73 74 20 7b 74 65 73 74  ...runTest {test
2a30: 20 74 6b 74 2d 61 37 64 30 34 66 62 31 31 31 2d   tkt-a7d04fb111-
2a40: 31 2e 38 20 7b 42 69 6e 64 20 44 61 74 65 54 69  1.8 {Bind DateTi
2a50: 6d 65 20 4c 6f 63 61 6c 20 55 6e 69 78 45 70 6f  me Local UnixEpo
2a60: 63 68 7d 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20  ch} -setup {..  
2a70: 73 65 74 75 70 44 62 20 5b 73 65 74 20 66 69 6c  setupDb [set fil
2a80: 65 4e 61 6d 65 20 74 6b 74 2d 61 37 64 30 34 66  eName tkt-a7d04f
2a90: 62 31 31 31 2d 31 2e 38 2e 64 62 5d 20 22 22 20  b111-1.8.db] "" 
2aa0: 55 6e 69 78 45 70 6f 63 68 20 4c 6f 63 61 6c 20  UnixEpoch Local 
2ab0: 5c 0d 0a 20 20 20 20 20 20 42 69 6e 64 44 61 74  \..      BindDat
2ac0: 65 54 69 6d 65 57 69 74 68 4b 69 6e 64 0d 0a 7d  eTimeWithKind..}
2ad0: 20 2d 62 6f 64 79 20 7b 0d 0a 20 20 73 65 74 20   -body {..  set 
2ae0: 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28 30 29  dateTimeValue(0)
2af0: 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20   [object invoke 
2b00: 5c 0d 0a 20 20 20 20 20 20 2d 63 72 65 61 74 65  \..      -create
2b10: 20 44 61 74 65 54 69 6d 65 20 50 61 72 73 65 45   DateTime ParseE
2b20: 78 61 63 74 20 24 72 61 77 44 61 74 65 54 69 6d  xact $rawDateTim
2b30: 65 56 61 6c 75 65 20 5c 0d 0a 20 20 20 20 20 20  eValue \..      
2b40: 5b 67 65 74 44 61 74 65 54 69 6d 65 46 6f 72 6d  [getDateTimeForm
2b50: 61 74 5d 20 6e 75 6c 6c 5d 0d 0a 0d 0a 20 20 73  at] null]....  s
2b60: 65 74 20 64 61 74 65 54 69 6d 65 56 61 6c 75 65  et dateTimeValue
2b70: 28 31 29 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f  (1) [object invo
2b80: 6b 65 20 2d 63 72 65 61 74 65 20 2d 61 6c 69 61  ke -create -alia
2b90: 73 20 5c 0d 0a 20 20 20 20 20 20 44 61 74 65 54  s \..      DateT
2ba0: 69 6d 65 20 53 70 65 63 69 66 79 4b 69 6e 64 20  ime SpecifyKind 
2bb0: 24 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28 30  $dateTimeValue(0
2bc0: 29 20 55 74 63 5d 0d 0a 0d 0a 20 20 73 65 74 20  ) Utc]....  set 
2bd0: 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28 32 29  dateTimeValue(2)
2be0: 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20   [object invoke 
2bf0: 2d 63 72 65 61 74 65 20 2d 61 6c 69 61 73 20 5c  -create -alias \
2c00: 0d 0a 20 20 20 20 20 20 44 61 74 65 54 69 6d 65  ..      DateTime
2c10: 20 53 70 65 63 69 66 79 4b 69 6e 64 20 24 64 61   SpecifyKind $da
2c20: 74 65 54 69 6d 65 56 61 6c 75 65 28 30 29 20 4c  teTimeValue(0) L
2c30: 6f 63 61 6c 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65  ocal]....  lappe
2c40: 6e 64 20 72 65 73 75 6c 74 20 5b 73 71 6c 20 65  nd result [sql e
2c50: 78 65 63 75 74 65 20 2d 65 78 65 63 75 74 65 20  xecute -execute 
2c60: 73 63 61 6c 61 72 20 24 64 62 20 22 53 45 4c 45  scalar $db "SELE
2c70: 43 54 20 3f 3b 22 20 5c 0d 0a 20 20 20 20 20 20  CT ?;" \..      
2c80: 5b 6c 69 73 74 20 70 61 72 61 6d 31 20 44 61 74  [list param1 Dat
2c90: 65 54 69 6d 65 20 24 64 61 74 65 54 69 6d 65 56  eTime $dateTimeV
2ca0: 61 6c 75 65 28 30 29 5d 5d 0d 0a 0d 0a 20 20 6c  alue(0)]]....  l
2cb0: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 73  append result [s
2cc0: 71 6c 20 65 78 65 63 75 74 65 20 2d 65 78 65 63  ql execute -exec
2cd0: 75 74 65 20 73 63 61 6c 61 72 20 24 64 62 20 22  ute scalar $db "
2ce0: 53 45 4c 45 43 54 20 3f 3b 22 20 5c 0d 0a 20 20  SELECT ?;" \..  
2cf0: 20 20 20 20 5b 6c 69 73 74 20 70 61 72 61 6d 31      [list param1
2d00: 20 44 61 74 65 54 69 6d 65 20 24 64 61 74 65 54   DateTime $dateT
2d10: 69 6d 65 56 61 6c 75 65 28 31 29 5d 5d 0d 0a 0d  imeValue(1)]]...
2d20: 0a 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c  .  lappend resul
2d30: 74 20 5b 73 71 6c 20 65 78 65 63 75 74 65 20 2d  t [sql execute -
2d40: 65 78 65 63 75 74 65 20 73 63 61 6c 61 72 20 24  execute scalar $
2d50: 64 62 20 22 53 45 4c 45 43 54 20 3f 3b 22 20 5c  db "SELECT ?;" \
2d60: 0d 0a 20 20 20 20 20 20 5b 6c 69 73 74 20 70 61  ..      [list pa
2d70: 72 61 6d 31 20 44 61 74 65 54 69 6d 65 20 24 64  ram1 DateTime $d
2d80: 61 74 65 54 69 6d 65 56 61 6c 75 65 28 32 29 5d  ateTimeValue(2)]
2d90: 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72  ]....  lappend r
2da0: 65 73 75 6c 74 20 5b 65 78 70 72 20 7b 5b 6c 69  esult [expr {[li
2db0: 6e 64 65 78 20 24 72 65 73 75 6c 74 20 30 5d 20  ndex $result 0] 
2dc0: 3d 3d 20 5b 6c 69 6e 64 65 78 20 24 72 65 73 75  == [lindex $resu
2dd0: 6c 74 20 31 5d 7d 5d 0d 0a 20 20 6c 61 70 70 65  lt 1]}]..  lappe
2de0: 6e 64 20 72 65 73 75 6c 74 20 5b 65 78 70 72 20  nd result [expr 
2df0: 7b 5b 6c 69 6e 64 65 78 20 24 72 65 73 75 6c 74  {[lindex $result
2e00: 20 30 5d 20 3d 3d 20 5b 6c 69 6e 64 65 78 20 24   0] == [lindex $
2e10: 72 65 73 75 6c 74 20 32 5d 7d 5d 0d 0a 20 20 6c  result 2]}]..  l
2e20: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 65  append result [e
2e30: 78 70 72 20 7b 5b 6c 69 6e 64 65 78 20 24 72 65  xpr {[lindex $re
2e40: 73 75 6c 74 20 31 5d 20 3d 3d 20 5b 6c 69 6e 64  sult 1] == [lind
2e50: 65 78 20 24 72 65 73 75 6c 74 20 32 5d 7d 5d 0d  ex $result 2]}].
2e60: 0a 7d 20 2d 63 6c 65 61 6e 75 70 20 7b 0d 0a 20  .} -cleanup {.. 
2e70: 20 63 6c 65 61 6e 75 70 44 62 20 24 66 69 6c 65   cleanupDb $file
2e80: 4e 61 6d 65 0d 0a 0d 0a 20 20 75 6e 73 65 74 20  Name....  unset 
2e90: 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72 65 73 75  -nocomplain resu
2ea0: 6c 74 20 64 61 74 65 54 69 6d 65 56 61 6c 75 65  lt dateTimeValue
2eb0: 20 64 62 20 66 69 6c 65 4e 61 6d 65 0d 0a 7d 20   db fileName..} 
2ec0: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 5c 0d 0a  -constraints \..
2ed0: 7b 65 61 67 6c 65 20 6d 6f 6e 6f 42 75 67 32 38  {eagle monoBug28
2ee0: 20 63 6f 6d 6d 61 6e 64 2e 73 71 6c 20 63 6f 6d   command.sql com
2ef0: 70 69 6c 65 2e 44 41 54 41 20 53 51 4c 69 74 65  pile.DATA SQLite
2f00: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
2f10: 69 74 65 7d 20 2d 72 65 73 75 6c 74 20 5c 0d 0a  ite} -result \..
2f20: 7b 31 34 32 34 32 31 37 36 30 30 20 31 34 32 34  {1424217600 1424
2f30: 31 38 38 38 30 30 20 31 34 32 34 32 31 37 36 30  188800 142421760
2f40: 30 20 46 61 6c 73 65 20 54 72 75 65 20 46 61 6c  0 False True Fal
2f50: 73 65 7d 7d 0d 0a 0d 0a 23 23 23 23 23 23 23 23  se}}....########
2f60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2f70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2f80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2f90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2fa0: 23 23 23 23 23 23 23 0d 0a 0d 0a 72 75 6e 54 65  #######....runTe
2fb0: 73 74 20 7b 74 65 73 74 20 74 6b 74 2d 61 37 64  st {test tkt-a7d
2fc0: 30 34 66 62 31 31 31 2d 31 2e 39 20 7b 42 69 6e  04fb111-1.9 {Bin
2fd0: 64 20 44 61 74 65 54 69 6d 65 20 55 74 63 20 49  d DateTime Utc I
2fe0: 6e 76 61 72 69 61 6e 74 7d 20 2d 73 65 74 75 70  nvariant} -setup
2ff0: 20 7b 0d 0a 20 20 73 65 74 75 70 44 62 20 5b 73   {..  setupDb [s
3000: 65 74 20 66 69 6c 65 4e 61 6d 65 20 74 6b 74 2d  et fileName tkt-
3010: 61 37 64 30 34 66 62 31 31 31 2d 31 2e 39 2e 64  a7d04fb111-1.9.d
3020: 62 5d 20 22 22 20 49 6e 76 61 72 69 61 6e 74 43  b] "" InvariantC
3030: 75 6c 74 75 72 65 20 55 74 63 20 5c 0d 0a 20 20  ulture Utc \..  
3040: 20 20 20 20 42 69 6e 64 44 61 74 65 54 69 6d 65      BindDateTime
3050: 57 69 74 68 4b 69 6e 64 0d 0a 7d 20 2d 62 6f 64  WithKind..} -bod
3060: 79 20 7b 0d 0a 20 20 73 65 74 20 64 61 74 65 54  y {..  set dateT
3070: 69 6d 65 56 61 6c 75 65 28 30 29 20 5b 6f 62 6a  imeValue(0) [obj
3080: 65 63 74 20 69 6e 76 6f 6b 65 20 5c 0d 0a 20 20  ect invoke \..  
3090: 20 20 20 20 2d 63 72 65 61 74 65 20 44 61 74 65      -create Date
30a0: 54 69 6d 65 20 50 61 72 73 65 45 78 61 63 74 20  Time ParseExact 
30b0: 24 72 61 77 44 61 74 65 54 69 6d 65 56 61 6c 75  $rawDateTimeValu
30c0: 65 20 5c 0d 0a 20 20 20 20 20 20 5b 67 65 74 44  e \..      [getD
30d0: 61 74 65 54 69 6d 65 46 6f 72 6d 61 74 5d 20 6e  ateTimeFormat] n
30e0: 75 6c 6c 5d 0d 0a 0d 0a 20 20 73 65 74 20 64 61  ull]....  set da
30f0: 74 65 54 69 6d 65 56 61 6c 75 65 28 31 29 20 5b  teTimeValue(1) [
3100: 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20 2d 63  object invoke -c
3110: 72 65 61 74 65 20 2d 61 6c 69 61 73 20 5c 0d 0a  reate -alias \..
3120: 20 20 20 20 20 20 44 61 74 65 54 69 6d 65 20 53        DateTime S
3130: 70 65 63 69 66 79 4b 69 6e 64 20 24 64 61 74 65  pecifyKind $date
3140: 54 69 6d 65 56 61 6c 75 65 28 30 29 20 55 74 63  TimeValue(0) Utc
3150: 5d 0d 0a 0d 0a 20 20 73 65 74 20 64 61 74 65 54  ]....  set dateT
3160: 69 6d 65 56 61 6c 75 65 28 32 29 20 5b 6f 62 6a  imeValue(2) [obj
3170: 65 63 74 20 69 6e 76 6f 6b 65 20 2d 63 72 65 61  ect invoke -crea
3180: 74 65 20 2d 61 6c 69 61 73 20 5c 0d 0a 20 20 20  te -alias \..   
3190: 20 20 20 44 61 74 65 54 69 6d 65 20 53 70 65 63     DateTime Spec
31a0: 69 66 79 4b 69 6e 64 20 24 64 61 74 65 54 69 6d  ifyKind $dateTim
31b0: 65 56 61 6c 75 65 28 30 29 20 4c 6f 63 61 6c 5d  eValue(0) Local]
31c0: 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72 65  ....  lappend re
31d0: 73 75 6c 74 20 5b 73 71 6c 20 65 78 65 63 75 74  sult [sql execut
31e0: 65 20 2d 65 78 65 63 75 74 65 20 73 63 61 6c 61  e -execute scala
31f0: 72 20 24 64 62 20 22 53 45 4c 45 43 54 20 3f 3b  r $db "SELECT ?;
3200: 22 20 5c 0d 0a 20 20 20 20 20 20 5b 6c 69 73 74  " \..      [list
3210: 20 70 61 72 61 6d 31 20 44 61 74 65 54 69 6d 65   param1 DateTime
3220: 20 24 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28   $dateTimeValue(
3230: 30 29 5d 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e  0)]]....  lappen
3240: 64 20 72 65 73 75 6c 74 20 5b 73 71 6c 20 65 78  d result [sql ex
3250: 65 63 75 74 65 20 2d 65 78 65 63 75 74 65 20 73  ecute -execute s
3260: 63 61 6c 61 72 20 24 64 62 20 22 53 45 4c 45 43  calar $db "SELEC
3270: 54 20 3f 3b 22 20 5c 0d 0a 20 20 20 20 20 20 5b  T ?;" \..      [
3280: 6c 69 73 74 20 70 61 72 61 6d 31 20 44 61 74 65  list param1 Date
3290: 54 69 6d 65 20 24 64 61 74 65 54 69 6d 65 56 61  Time $dateTimeVa
32a0: 6c 75 65 28 31 29 5d 5d 0d 0a 0d 0a 20 20 6c 61  lue(1)]]....  la
32b0: 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 73 71  ppend result [sq
32c0: 6c 20 65 78 65 63 75 74 65 20 2d 65 78 65 63 75  l execute -execu
32d0: 74 65 20 73 63 61 6c 61 72 20 24 64 62 20 22 53  te scalar $db "S
32e0: 45 4c 45 43 54 20 3f 3b 22 20 5c 0d 0a 20 20 20  ELECT ?;" \..   
32f0: 20 20 20 5b 6c 69 73 74 20 70 61 72 61 6d 31 20     [list param1 
3300: 44 61 74 65 54 69 6d 65 20 24 64 61 74 65 54 69  DateTime $dateTi
3310: 6d 65 56 61 6c 75 65 28 32 29 5d 5d 0d 0a 0d 0a  meValue(2)]]....
3320: 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c 74    lappend result
3330: 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65 78 20   [expr {[lindex 
3340: 24 72 65 73 75 6c 74 20 30 5d 20 65 71 20 5b 6c  $result 0] eq [l
3350: 69 6e 64 65 78 20 24 72 65 73 75 6c 74 20 31 5d  index $result 1]
3360: 7d 5d 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72 65  }]..  lappend re
3370: 73 75 6c 74 20 5b 65 78 70 72 20 7b 5b 6c 69 6e  sult [expr {[lin
3380: 64 65 78 20 24 72 65 73 75 6c 74 20 30 5d 20 65  dex $result 0] e
3390: 71 20 5b 6c 69 6e 64 65 78 20 24 72 65 73 75 6c  q [lindex $resul
33a0: 74 20 32 5d 7d 5d 0d 0a 20 20 6c 61 70 70 65 6e  t 2]}]..  lappen
33b0: 64 20 72 65 73 75 6c 74 20 5b 65 78 70 72 20 7b  d result [expr {
33c0: 5b 6c 69 6e 64 65 78 20 24 72 65 73 75 6c 74 20  [lindex $result 
33d0: 31 5d 20 65 71 20 5b 6c 69 6e 64 65 78 20 24 72  1] eq [lindex $r
33e0: 65 73 75 6c 74 20 32 5d 7d 5d 0d 0a 7d 20 2d 63  esult 2]}]..} -c
33f0: 6c 65 61 6e 75 70 20 7b 0d 0a 20 20 63 6c 65 61  leanup {..  clea
3400: 6e 75 70 44 62 20 24 66 69 6c 65 4e 61 6d 65 0d  nupDb $fileName.
3410: 0a 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f  ...  unset -noco
3420: 6d 70 6c 61 69 6e 20 72 65 73 75 6c 74 20 64 61  mplain result da
3430: 74 65 54 69 6d 65 56 61 6c 75 65 20 64 62 20 66  teTimeValue db f
3440: 69 6c 65 4e 61 6d 65 0d 0a 7d 20 2d 63 6f 6e 73  ileName..} -cons
3450: 74 72 61 69 6e 74 73 20 5c 0d 0a 7b 65 61 67 6c  traints \..{eagl
3460: 65 20 6d 6f 6e 6f 42 75 67 32 38 20 63 6f 6d 6d  e monoBug28 comm
3470: 61 6e 64 2e 73 71 6c 20 63 6f 6d 70 69 6c 65 2e  and.sql compile.
3480: 44 41 54 41 20 53 51 4c 69 74 65 20 53 79 73 74  DATA SQLite Syst
3490: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 7d 20  em.Data.SQLite} 
34a0: 2d 72 65 73 75 6c 74 20 5c 0d 0a 7b 32 30 31 35  -result \..{2015
34b0: 2d 30 32 2d 31 38 54 30 30 3a 30 30 3a 30 30 2e  -02-18T00:00:00.
34c0: 30 30 30 30 30 30 30 20 32 30 31 35 2d 30 32 2d  0000000 2015-02-
34d0: 31 38 54 30 30 3a 30 30 3a 30 30 2e 30 30 30 30  18T00:00:00.0000
34e0: 30 30 30 5a 5c 0d 0a 32 30 31 35 2d 30 32 2d 31  000Z\..2015-02-1
34f0: 38 54 30 38 3a 30 30 3a 30 30 2e 30 30 30 30 30  8T08:00:00.00000
3500: 30 30 5a 20 46 61 6c 73 65 20 46 61 6c 73 65 20  00Z False False 
3510: 46 61 6c 73 65 7d 7d 0d 0a 0d 0a 23 23 23 23 23  False}}....#####
3520: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3530: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3540: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3550: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3560: 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72 75  ##########....ru
3570: 6e 54 65 73 74 20 7b 74 65 73 74 20 74 6b 74 2d  nTest {test tkt-
3580: 61 37 64 30 34 66 62 31 31 31 2d 31 2e 31 30 20  a7d04fb111-1.10 
3590: 7b 42 69 6e 64 20 44 61 74 65 54 69 6d 65 20 4c  {Bind DateTime L
35a0: 6f 63 61 6c 20 49 6e 76 61 72 69 61 6e 74 7d 20  ocal Invariant} 
35b0: 2d 73 65 74 75 70 20 7b 0d 0a 20 20 73 65 74 75  -setup {..  setu
35c0: 70 44 62 20 5b 73 65 74 20 66 69 6c 65 4e 61 6d  pDb [set fileNam
35d0: 65 20 74 6b 74 2d 61 37 64 30 34 66 62 31 31 31  e tkt-a7d04fb111
35e0: 2d 31 2e 31 30 2e 64 62 5d 20 22 22 20 49 6e 76  -1.10.db] "" Inv
35f0: 61 72 69 61 6e 74 43 75 6c 74 75 72 65 20 4c 6f  ariantCulture Lo
3600: 63 61 6c 20 5c 0d 0a 20 20 20 20 20 20 42 69 6e  cal \..      Bin
3610: 64 44 61 74 65 54 69 6d 65 57 69 74 68 4b 69 6e  dDateTimeWithKin
3620: 64 0d 0a 7d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20  d..} -body {..  
3630: 73 65 74 20 64 61 74 65 54 69 6d 65 56 61 6c 75  set dateTimeValu
3640: 65 28 30 29 20 5b 6f 62 6a 65 63 74 20 69 6e 76  e(0) [object inv
3650: 6f 6b 65 20 5c 0d 0a 20 20 20 20 20 20 2d 63 72  oke \..      -cr
3660: 65 61 74 65 20 44 61 74 65 54 69 6d 65 20 50 61  eate DateTime Pa
3670: 72 73 65 45 78 61 63 74 20 24 72 61 77 44 61 74  rseExact $rawDat
3680: 65 54 69 6d 65 56 61 6c 75 65 20 5c 0d 0a 20 20  eTimeValue \..  
3690: 20 20 20 20 5b 67 65 74 44 61 74 65 54 69 6d 65      [getDateTime
36a0: 46 6f 72 6d 61 74 5d 20 6e 75 6c 6c 5d 0d 0a 0d  Format] null]...
36b0: 0a 20 20 73 65 74 20 64 61 74 65 54 69 6d 65 56  .  set dateTimeV
36c0: 61 6c 75 65 28 31 29 20 5b 6f 62 6a 65 63 74 20  alue(1) [object 
36d0: 69 6e 76 6f 6b 65 20 2d 63 72 65 61 74 65 20 2d  invoke -create -
36e0: 61 6c 69 61 73 20 5c 0d 0a 20 20 20 20 20 20 44  alias \..      D
36f0: 61 74 65 54 69 6d 65 20 53 70 65 63 69 66 79 4b  ateTime SpecifyK
3700: 69 6e 64 20 24 64 61 74 65 54 69 6d 65 56 61 6c  ind $dateTimeVal
3710: 75 65 28 30 29 20 55 74 63 5d 0d 0a 0d 0a 20 20  ue(0) Utc]....  
3720: 73 65 74 20 64 61 74 65 54 69 6d 65 56 61 6c 75  set dateTimeValu
3730: 65 28 32 29 20 5b 6f 62 6a 65 63 74 20 69 6e 76  e(2) [object inv
3740: 6f 6b 65 20 2d 63 72 65 61 74 65 20 2d 61 6c 69  oke -create -ali
3750: 61 73 20 5c 0d 0a 20 20 20 20 20 20 44 61 74 65  as \..      Date
3760: 54 69 6d 65 20 53 70 65 63 69 66 79 4b 69 6e 64  Time SpecifyKind
3770: 20 24 64 61 74 65 54 69 6d 65 56 61 6c 75 65 28   $dateTimeValue(
3780: 30 29 20 4c 6f 63 61 6c 5d 0d 0a 0d 0a 20 20 6c  0) Local]....  l
3790: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 73  append result [s
37a0: 71 6c 20 65 78 65 63 75 74 65 20 2d 65 78 65 63  ql execute -exec
37b0: 75 74 65 20 73 63 61 6c 61 72 20 24 64 62 20 22  ute scalar $db "
37c0: 53 45 4c 45 43 54 20 3f 3b 22 20 5c 0d 0a 20 20  SELECT ?;" \..  
37d0: 20 20 20 20 5b 6c 69 73 74 20 70 61 72 61 6d 31      [list param1
37e0: 20 44 61 74 65 54 69 6d 65 20 24 64 61 74 65 54   DateTime $dateT
37f0: 69 6d 65 56 61 6c 75 65 28 30 29 5d 5d 0d 0a 0d  imeValue(0)]]...
3800: 0a 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c  .  lappend resul
3810: 74 20 5b 73 71 6c 20 65 78 65 63 75 74 65 20 2d  t [sql execute -
3820: 65 78 65 63 75 74 65 20 73 63 61 6c 61 72 20 24  execute scalar $
3830: 64 62 20 22 53 45 4c 45 43 54 20 3f 3b 22 20 5c  db "SELECT ?;" \
3840: 0d 0a 20 20 20 20 20 20 5b 6c 69 73 74 20 70 61  ..      [list pa
3850: 72 61 6d 31 20 44 61 74 65 54 69 6d 65 20 24 64  ram1 DateTime $d
3860: 61 74 65 54 69 6d 65 56 61 6c 75 65 28 31 29 5d  ateTimeValue(1)]
3870: 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65 6e 64 20 72  ]....  lappend r
3880: 65 73 75 6c 74 20 5b 73 71 6c 20 65 78 65 63 75  esult [sql execu
3890: 74 65 20 2d 65 78 65 63 75 74 65 20 73 63 61 6c  te -execute scal
38a0: 61 72 20 24 64 62 20 22 53 45 4c 45 43 54 20 3f  ar $db "SELECT ?
38b0: 3b 22 20 5c 0d 0a 20 20 20 20 20 20 5b 6c 69 73  ;" \..      [lis
38c0: 74 20 70 61 72 61 6d 31 20 44 61 74 65 54 69 6d  t param1 DateTim
38d0: 65 20 24 64 61 74 65 54 69 6d 65 56 61 6c 75 65  e $dateTimeValue
38e0: 28 32 29 5d 5d 0d 0a 0d 0a 20 20 6c 61 70 70 65  (2)]]....  lappe
38f0: 6e 64 20 72 65 73 75 6c 74 20 5b 65 78 70 72 20  nd result [expr 
3900: 7b 5b 6c 69 6e 64 65 78 20 24 72 65 73 75 6c 74  {[lindex $result
3910: 20 30 5d 20 65 71 20 5b 6c 69 6e 64 65 78 20 24   0] eq [lindex $
3920: 72 65 73 75 6c 74 20 31 5d 7d 5d 0d 0a 20 20 6c  result 1]}]..  l
3930: 61 70 70 65 6e 64 20 72 65 73 75 6c 74 20 5b 65  append result [e
3940: 78 70 72 20 7b 5b 6c 69 6e 64 65 78 20 24 72 65  xpr {[lindex $re
3950: 73 75 6c 74 20 30 5d 20 65 71 20 5b 6c 69 6e 64  sult 0] eq [lind
3960: 65 78 20 24 72 65 73 75 6c 74 20 32 5d 7d 5d 0d  ex $result 2]}].
3970: 0a 20 20 6c 61 70 70 65 6e 64 20 72 65 73 75 6c  .  lappend resul
3980: 74 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64 65 78  t [expr {[lindex
3990: 20 24 72 65 73 75 6c 74 20 31 5d 20 65 71 20 5b   $result 1] eq [
39a0: 6c 69 6e 64 65 78 20 24 72 65 73 75 6c 74 20 32  lindex $result 2
39b0: 5d 7d 5d 0d 0a 7d 20 2d 63 6c 65 61 6e 75 70 20  ]}]..} -cleanup 
39c0: 7b 0d 0a 20 20 63 6c 65 61 6e 75 70 44 62 20 24  {..  cleanupDb $
39d0: 66 69 6c 65 4e 61 6d 65 0d 0a 0d 0a 20 20 75 6e  fileName....  un
39e0: 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20  set -nocomplain 
39f0: 72 65 73 75 6c 74 20 64 61 74 65 54 69 6d 65 56  result dateTimeV
3a00: 61 6c 75 65 20 64 62 20 66 69 6c 65 4e 61 6d 65  alue db fileName
3a10: 0d 0a 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73  ..} -constraints
3a20: 20 5c 0d 0a 7b 65 61 67 6c 65 20 6d 6f 6e 6f 42   \..{eagle monoB
3a30: 75 67 32 38 20 63 6f 6d 6d 61 6e 64 2e 73 71 6c  ug28 command.sql
3a40: 20 63 6f 6d 70 69 6c 65 2e 44 41 54 41 20 53 51   compile.DATA SQ
3a50: 4c 69 74 65 20 53 79 73 74 65 6d 2e 44 61 74 61  Lite System.Data
3a60: 2e 53 51 4c 69 74 65 7d 20 2d 72 65 73 75 6c 74  .SQLite} -result
3a70: 20 5c 0d 0a 7b 32 30 31 35 2d 30 32 2d 31 38 54   \..{2015-02-18T
3a80: 30 30 3a 30 30 3a 30 30 2e 30 30 30 30 30 30 30  00:00:00.0000000
3a90: 20 32 30 31 35 2d 30 32 2d 31 37 54 31 36 3a 30   2015-02-17T16:0
3aa0: 30 3a 30 30 2e 30 30 30 30 30 30 30 2d 30 38 3a  0:00.0000000-08:
3ab0: 30 30 5c 0d 0a 32 30 31 35 2d 30 32 2d 31 38 54  00\..2015-02-18T
3ac0: 30 30 3a 30 30 3a 30 30 2e 30 30 30 30 30 30 30  00:00:00.0000000
3ad0: 2d 30 38 3a 30 30 20 46 61 6c 73 65 20 46 61 6c  -08:00 False Fal
3ae0: 73 65 20 46 61 6c 73 65 7d 7d 0d 0a 0d 0a 23 23  se False}}....##
3af0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3b00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3b10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3b20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3b30: 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d  #############...
3b40: 0a 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61  .unset -nocompla
3b50: 69 6e 20 72 61 77 44 61 74 65 54 69 6d 65 56 61  in rawDateTimeVa
3b60: 6c 75 65 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23  lue....#########
3b70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3b80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3b90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3ba0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
3bb0: 23 23 23 23 23 23 0d 0a 0d 0a 72 75 6e 53 51 4c  ######....runSQL
3bc0: 69 74 65 54 65 73 74 45 70 69 6c 6f 67 75 65 0d  iteTestEpilogue.
3bd0: 0a 72 75 6e 54 65 73 74 45 70 69 6c 6f 67 75 65  .runTestEpilogue
3be0: 0d 0a                                            ..