System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 8fdb4e6d137a51b65bb2d352bab2097cdd041fd5:


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 65 33 30 62 38 32  .#..# tkt-e30b82
0060: 30 32 34 38 2e 65 61 67 6c 65 20 2d 2d 0d 0a 23  0248.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 6d 65 6d 6f 72 79 5f 75 73 65 64 20 5b 72 65   memory_used [re
0280: 70 6f 72 74 53 51 4c 69 74 65 52 65 73 6f 75 72  portSQLiteResour
0290: 63 65 73 20 24 74 65 73 74 5f 63 68 61 6e 6e 65  ces $test_channe
02a0: 6c 20 74 72 75 65 5d 0d 0a 0d 0a 23 23 23 23 23  l true]....#####
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 23 23 23 23 23 23 23 23 0d 0a 0d 0a 72 75  ##########....ru
0300: 6e 54 65 73 74 20 7b 74 65 73 74 20 74 6b 74 2d  nTest {test tkt-
0310: 65 33 30 62 38 32 30 32 34 38 2d 31 2e 31 20 7b  e30b820248-1.1 {
0320: 64 69 73 70 6f 73 61 6c 20 6f 72 64 65 72 69 6e  disposal orderin
0330: 67 7d 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20 73  g} -setup {..  s
0340: 65 74 20 66 69 6c 65 4e 61 6d 65 20 74 6b 74 2d  et fileName tkt-
0350: 65 33 30 62 38 32 30 32 34 38 2d 31 2e 31 2e 64  e30b820248-1.1.d
0360: 62 0d 0a 7d 20 2d 62 6f 64 79 20 7b 0d 0a 20 20  b..} -body {..  
0370: 73 65 74 20 69 64 20 5b 6f 62 6a 65 63 74 20 69  set id [object i
0380: 6e 76 6f 6b 65 20 49 6e 74 65 72 70 72 65 74 65  nvoke Interprete
0390: 72 2e 47 65 74 41 63 74 69 76 65 20 4e 65 78 74  r.GetActive Next
03a0: 49 64 5d 0d 0a 20 20 73 65 74 20 64 61 74 61 53  Id]..  set dataS
03b0: 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e  ource [file join
03c0: 20 5b 67 65 74 44 61 74 61 62 61 73 65 44 69 72   [getDatabaseDir
03d0: 65 63 74 6f 72 79 5d 20 24 66 69 6c 65 4e 61 6d  ectory] $fileNam
03e0: 65 5d 0d 0a 20 20 73 65 74 20 6e 61 6d 65 20 5b  e]..  set name [
03f0: 66 69 6c 65 20 72 6f 6f 74 6e 61 6d 65 20 5b 66  file rootname [f
0400: 69 6c 65 20 74 61 69 6c 20 24 66 69 6c 65 4e 61  ile tail $fileNa
0410: 6d 65 5d 5d 0d 0a 0d 0a 20 20 73 65 74 20 73 71  me]]....  set sq
0420: 6c 20 7b 20 5c 0d 0a 20 20 20 20 43 52 45 41 54  l { \..    CREAT
0430: 45 20 54 41 42 4c 45 20 74 31 20 28 69 64 31 20  E TABLE t1 (id1 
0440: 49 4e 54 45 47 45 52 29 3b 20 5c 0d 0a 20 20 20  INTEGER); \..   
0450: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
0460: 28 69 64 31 29 20 56 41 4c 55 45 53 20 28 31 29  (id1) VALUES (1)
0470: 3b 20 5c 0d 0a 20 20 20 20 49 4e 53 45 52 54 20  ; \..    INSERT 
0480: 49 4e 54 4f 20 74 31 20 28 69 64 31 29 20 56 41  INTO t1 (id1) VA
0490: 4c 55 45 53 20 28 32 29 3b 20 5c 0d 0a 20 20 20  LUES (2); \..   
04a0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
04b0: 28 69 64 31 29 20 56 41 4c 55 45 53 20 28 3f 29  (id1) VALUES (?)
04c0: 3b 20 5c 0d 0a 20 20 20 20 49 4e 53 45 52 54 20  ; \..    INSERT 
04d0: 49 4e 54 4f 20 74 31 20 28 69 64 31 29 20 56 41  INTO t1 (id1) VA
04e0: 4c 55 45 53 20 28 3f 29 3b 20 5c 0d 0a 20 20 20  LUES (?); \..   
04f0: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
0500: 28 69 64 31 29 20 56 41 4c 55 45 53 20 28 3f 29  (id1) VALUES (?)
0510: 3b 20 5c 0d 0a 20 20 20 20 53 45 4c 45 43 54 20  ; \..    SELECT 
0520: 69 64 31 20 46 52 4f 4d 20 74 31 20 4f 52 44 45  id1 FROM t1 ORDE
0530: 52 20 42 59 20 69 64 31 3b 20 5c 0d 0a 20 20 7d  R BY id1; \..  }
0540: 0d 0a 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63  ....  unset -noc
0550: 6f 6d 70 6c 61 69 6e 20 72 65 73 75 6c 74 73 20  omplain results 
0560: 65 72 72 6f 72 73 0d 0a 0d 0a 20 20 73 65 74 20  errors....  set 
0570: 63 6f 64 65 20 5b 63 6f 6d 70 69 6c 65 43 53 68  code [compileCSh
0580: 61 72 70 57 69 74 68 20 5b 73 75 62 73 74 20 7b  arpWith [subst {
0590: 0d 0a 20 20 20 20 75 73 69 6e 67 20 53 79 73 74  ..    using Syst
05a0: 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 3b 0d  em.Data.SQLite;.
05b0: 0a 20 20 20 20 75 73 69 6e 67 20 53 79 73 74 65  .    using Syste
05c0: 6d 2e 44 69 61 67 6e 6f 73 74 69 63 73 3b 0d 0a  m.Diagnostics;..
05d0: 20 20 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d      using System
05e0: 2e 49 4f 3b 0d 0a 0d 0a 20 20 20 20 6e 61 6d 65  .IO;....    name
05f0: 73 70 61 63 65 20 5f 44 79 6e 61 6d 69 63 24 7b  space _Dynamic${
0600: 69 64 7d 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  id}..    {..    
0610: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
0620: 63 6c 61 73 73 20 54 65 73 74 24 7b 69 64 7d 0d  class Test${id}.
0630: 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  .      {..      
0640: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
0650: 76 6f 69 64 20 4d 61 69 6e 28 29 0d 0a 20 20 20  void Main()..   
0660: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
0670: 20 20 75 73 69 6e 67 20 28 54 72 61 63 65 4c 69    using (TraceLi
0680: 73 74 65 6e 65 72 20 6c 69 73 74 65 6e 65 72 20  stener listener 
0690: 3d 20 6e 65 77 20 54 65 78 74 57 72 69 74 65 72  = new TextWriter
06a0: 54 72 61 63 65 4c 69 73 74 65 6e 65 72 28 0d 0a  TraceListener(..
06b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
06c0: 77 20 46 69 6c 65 53 74 72 65 61 6d 28 22 24 7b  w FileStream("${
06d0: 74 65 73 74 5f 6c 6f 67 7d 22 2c 20 46 69 6c 65  test_log}", File
06e0: 4d 6f 64 65 2e 41 70 70 65 6e 64 2c 0d 0a 20 20  Mode.Append,..  
06f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0700: 46 69 6c 65 41 63 63 65 73 73 2e 57 72 69 74 65  FileAccess.Write
0710: 2c 20 46 69 6c 65 53 68 61 72 65 2e 52 65 61 64  , FileShare.Read
0720: 57 72 69 74 65 29 2c 20 22 24 7b 6e 61 6d 65 7d  Write), "${name}
0730: 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  "))..          {
0740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 72  ..            Tr
0750: 61 63 65 2e 4c 69 73 74 65 6e 65 72 73 2e 41 64  ace.Listeners.Ad
0760: 64 28 6c 69 73 74 65 6e 65 72 29 3b 0d 0a 20 20  d(listener);..  
0770: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
0780: 57 72 69 74 65 4c 69 6e 65 28 22 2d 2d 2d 2d 20  WriteLine("---- 
0790: 53 54 41 52 54 20 54 52 41 43 45 20 5c 5c 22 24  START TRACE \\"$
07a0: 7b 6e 61 6d 65 7d 5c 5c 22 22 29 3b 0d 0a 0d 0a  {name}\\"");....
07b0: 20 20 20 20 20 20 20 20 20 20 20 20 75 73 69 6e              usin
07c0: 67 20 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  g (SQLiteConnect
07d0: 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d  ion connection =
07e0: 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6e 6e 65   new SQLiteConne
07f0: 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ction(..        
0800: 20 20 20 20 20 20 20 20 22 44 61 74 61 20 53 6f          "Data So
0810: 75 72 63 65 3d 24 7b 64 61 74 61 53 6f 75 72 63  urce=${dataSourc
0820: 65 7d 3b 5b 67 65 74 54 65 73 74 50 72 6f 70 65  e};[getTestPrope
0830: 72 74 69 65 73 5d 22 29 29 0d 0a 20 20 20 20 20  rties]"))..     
0840: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
0850: 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69          connecti
0860: 6f 6e 2e 4f 70 65 6e 28 29 3b 0d 0a 20 20 20 20  on.Open();..    
0870: 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65 63            connec
0880: 74 69 6f 6e 2e 4c 6f 67 4d 65 73 73 61 67 65 28  tion.LogMessage(
0890: 30 2c 20 22 43 6f 6e 6e 65 63 74 69 6f 6e 20 6f  0, "Connection o
08a0: 70 65 6e 65 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20  pened.");....   
08b0: 20 20 20 20 20 20 20 20 20 20 20 75 73 69 6e 67             using
08c0: 20 28 53 51 4c 69 74 65 54 72 61 6e 73 61 63 74   (SQLiteTransact
08d0: 69 6f 6e 20 74 72 61 6e 73 61 63 74 69 6f 6e 20  ion transaction 
08e0: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
08f0: 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e       connection.
0900: 42 65 67 69 6e 54 72 61 6e 73 61 63 74 69 6f 6e  BeginTransaction
0910: 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ())..           
0920: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
0930: 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e        connection
0940: 2e 4c 6f 67 4d 65 73 73 61 67 65 28 30 2c 20 22  .LogMessage(0, "
0950: 54 72 61 6e 73 61 63 74 69 6f 6e 20 73 74 61 72  Transaction star
0960: 74 65 64 2e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  ted.");....     
0970: 20 20 20 20 20 20 20 20 20 20 20 75 73 69 6e 67             using
0980: 20 28 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 20   (SQLiteCommand 
0990: 63 6f 6d 6d 61 6e 64 20 3d 20 63 6f 6e 6e 65 63  command = connec
09a0: 74 69 6f 6e 2e 43 72 65 61 74 65 43 6f 6d 6d 61  tion.CreateComma
09b0: 6e 64 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20  nd())..         
09c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
09d0: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d              comm
09e0: 61 6e 64 2e 54 72 61 6e 73 61 63 74 69 6f 6e 20  and.Transaction 
09f0: 3d 20 74 72 61 6e 73 61 63 74 69 6f 6e 3b 0d 0a  = transaction;..
0a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a10: 20 20 63 6f 6d 6d 61 6e 64 2e 43 6f 6d 6d 61 6e    command.Comman
0a20: 64 54 65 78 74 20 3d 20 22 24 7b 73 71 6c 7d 22  dText = "${sql}"
0a30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
0a40: 20 20 20 20 20 20 20 63 6f 6d 6d 61 6e 64 2e 50         command.P
0a50: 61 72 61 6d 65 74 65 72 73 2e 41 64 64 57 69 74  arameters.AddWit
0a60: 68 56 61 6c 75 65 28 22 78 22 2c 20 33 29 3b 0d  hValue("x", 3);.
0a70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0a80: 20 20 20 63 6f 6d 6d 61 6e 64 2e 50 61 72 61 6d     command.Param
0a90: 65 74 65 72 73 2e 41 64 64 57 69 74 68 56 61 6c  eters.AddWithVal
0aa0: 75 65 28 22 79 22 2c 20 34 29 3b 0d 0a 20 20 20  ue("y", 4);..   
0ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
0ac0: 6f 6d 6d 61 6e 64 2e 50 61 72 61 6d 65 74 65 72  ommand.Parameter
0ad0: 73 2e 41 64 64 57 69 74 68 56 61 6c 75 65 28 22  s.AddWithValue("
0ae0: 7a 22 2c 20 35 29 3b 0d 0a 0d 0a 20 20 20 20 20  z", 5);....     
0af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d               com
0b00: 6d 61 6e 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51  mand.ExecuteNonQ
0b10: 75 65 72 79 28 29 3b 0d 0a 20 20 20 20 20 20 20  uery();..       
0b20: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e 65             conne
0b30: 63 74 69 6f 6e 2e 4c 6f 67 4d 65 73 73 61 67 65  ction.LogMessage
0b40: 28 30 2c 20 22 43 6f 6d 6d 61 6e 64 20 65 78 65  (0, "Command exe
0b50: 63 75 74 65 64 2e 22 29 3b 0d 0a 20 20 20 20 20  cuted.");..     
0b60: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
0b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b80: 74 72 61 6e 73 61 63 74 69 6f 6e 2e 43 6f 6d 6d  transaction.Comm
0b90: 69 74 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  it();..         
0ba0: 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f         connectio
0bb0: 6e 2e 4c 6f 67 4d 65 73 73 61 67 65 28 30 2c 20  n.LogMessage(0, 
0bc0: 22 54 72 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d  "Transaction com
0bd0: 6d 69 74 74 65 64 2e 22 29 3b 0d 0a 20 20 20 20  mitted.");..    
0be0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
0bf0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
0c00: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e            Trace.
0c10: 57 72 69 74 65 4c 69 6e 65 28 22 2d 2d 2d 2d 20  WriteLine("---- 
0c20: 45 4e 44 20 54 52 41 43 45 20 5c 5c 22 24 7b 6e  END TRACE \\"${n
0c30: 61 6d 65 7d 5c 5c 22 22 29 3b 0d 0a 20 20 20 20  ame}\\"");..    
0c40: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 4c 69          Trace.Li
0c50: 73 74 65 6e 65 72 73 2e 52 65 6d 6f 76 65 28 6c  steners.Remove(l
0c60: 69 73 74 65 6e 65 72 29 3b 0d 0a 20 20 20 20 20  istener);..     
0c70: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
0c80: 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  }..      }..    
0c90: 7d 0d 0a 20 20 7d 5d 20 74 72 75 65 20 66 61 6c  }..  }] true fal
0ca0: 73 65 20 74 72 75 65 20 72 65 73 75 6c 74 73 20  se true results 
0cb0: 65 72 72 6f 72 73 20 53 79 73 74 65 6d 2e 44 61  errors System.Da
0cc0: 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 5d 0d 0a  ta.SQLite.dll]..
0cd0: 0d 0a 20 20 6c 69 73 74 20 24 63 6f 64 65 20 24  ..  list $code $
0ce0: 72 65 73 75 6c 74 73 20 5c 0d 0a 20 20 20 20 20  results \..     
0cf0: 20 5b 65 78 70 72 20 7b 5b 69 6e 66 6f 20 65 78   [expr {[info ex
0d00: 69 73 74 73 20 65 72 72 6f 72 73 5d 20 3f 20 24  ists errors] ? $
0d10: 65 72 72 6f 72 73 20 3a 20 22 22 7d 5d 20 5c 0d  errors : ""}] \.
0d20: 0a 20 20 20 20 20 20 5b 65 78 70 72 20 7b 24 63  .      [expr {$c
0d30: 6f 64 65 20 65 71 20 22 4f 6b 22 20 3f 20 5b 63  ode eq "Ok" ? [c
0d40: 61 74 63 68 20 7b 0d 0a 20 20 20 20 20 20 20 20  atch {..        
0d50: 6f 62 6a 65 63 74 20 69 6e 76 6f 6b 65 20 5f 44  object invoke _D
0d60: 79 6e 61 6d 69 63 24 7b 69 64 7d 2e 54 65 73 74  ynamic${id}.Test
0d70: 24 7b 69 64 7d 20 4d 61 69 6e 0d 0a 20 20 20 20  ${id} Main..    
0d80: 20 20 7d 20 72 65 73 75 6c 74 5d 20 3a 20 5b 73    } result] : [s
0d90: 65 74 20 72 65 73 75 6c 74 20 22 22 5d 7d 5d 20  et result ""]}] 
0da0: 24 72 65 73 75 6c 74 20 5c 0d 0a 20 20 20 20 20  $result \..     
0db0: 20 5b 72 65 70 6f 72 74 53 51 4c 69 74 65 52 65   [reportSQLiteRe
0dc0: 73 6f 75 72 63 65 73 20 24 74 65 73 74 5f 63 68  sources $test_ch
0dd0: 61 6e 6e 65 6c 20 74 72 75 65 5d 0d 0a 7d 20 2d  annel true]..} -
0de0: 63 6c 65 61 6e 75 70 20 7b 0d 0a 20 20 63 6c 65  cleanup {..  cle
0df0: 61 6e 75 70 44 62 20 24 66 69 6c 65 4e 61 6d 65  anupDb $fileName
0e00: 0d 0a 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63  ....  unset -noc
0e10: 6f 6d 70 6c 61 69 6e 20 72 65 73 75 6c 74 20 63  omplain result c
0e20: 6f 64 65 20 72 65 73 75 6c 74 73 20 65 72 72 6f  ode results erro
0e30: 72 73 20 73 71 6c 20 6e 61 6d 65 20 64 61 74 61  rs sql name data
0e40: 53 6f 75 72 63 65 20 69 64 20 66 69 6c 65 4e 61  Source id fileNa
0e50: 6d 65 0d 0a 7d 20 2d 63 6f 6e 73 74 72 61 69 6e  me..} -constrain
0e60: 74 73 20 7b 65 61 67 6c 65 20 63 6f 6d 6d 61 6e  ts {eagle comman
0e70: 64 2e 6f 62 6a 65 63 74 20 6c 6f 67 46 69 6c 65  d.object logFile
0e80: 20 6d 6f 6e 6f 42 75 67 32 38 20 63 6f 6d 6d 61   monoBug28 comma
0e90: 6e 64 2e 73 71 6c 20 63 6f 6d 70 69 6c 65 2e 44  nd.sql compile.D
0ea0: 41 54 41 5c 0d 0a 53 51 4c 69 74 65 20 53 79 73  ATA\..SQLite Sys
0eb0: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20  tem.Data.SQLite 
0ec0: 63 6f 6d 70 69 6c 65 43 53 68 61 72 70 7d 20 2d  compileCSharp} -
0ed0: 6d 61 74 63 68 20 72 65 67 65 78 70 20 2d 72 65  match regexp -re
0ee0: 73 75 6c 74 20 5b 61 70 70 65 6e 64 41 72 67 73  sult [appendArgs
0ef0: 20 22 5e 4f 6b 5c 0d 0a 53 79 73 74 65 6d 23 43   "^Ok\..System#C
0f00: 6f 64 65 44 6f 6d 23 43 6f 6d 70 69 6c 65 72 23  odeDom#Compiler#
0f10: 43 6f 6d 70 69 6c 65 72 52 65 73 75 6c 74 73 23  CompilerResults#
0f20: 5c 5c 64 2b 20 5c 5c 7b 5c 5c 7d 20 30 20 5c 5c  \\d+ \\{\\} 0 \\
0f30: 7b 5c 5c 7d 20 22 20 24 6d 65 6d 6f 72 79 5f 75  {\\} " $memory_u
0f40: 73 65 64 20 5c 24 5d 7d 0d 0a 0d 0a 23 23 23 23  sed \$]}....####
0f50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0f90: 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 66  ###########....f
0fa0: 6f 72 20 7b 73 65 74 20 69 20 32 7d 20 7b 24 69  or {set i 2} {$i
0fb0: 20 3c 20 35 7d 20 7b 69 6e 63 72 20 69 7d 20 7b   < 5} {incr i} {
0fc0: 0d 0a 20 20 73 65 74 20 6d 65 6d 6f 72 79 5f 75  ..  set memory_u
0fd0: 73 65 64 20 5b 72 65 70 6f 72 74 53 51 4c 69 74  sed [reportSQLit
0fe0: 65 52 65 73 6f 75 72 63 65 73 20 24 74 65 73 74  eResources $test
0ff0: 5f 63 68 61 6e 6e 65 6c 20 74 72 75 65 5d 0d 0a  _channel true]..
1000: 0d 0a 20 20 23 23 23 23 23 23 23 23 23 23 23 23  ..  ############
1010: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1020: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1030: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1040: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1050: 23 0d 0a 0d 0a 20 20 72 75 6e 54 65 73 74 20 7b  #....  runTest {
1060: 74 65 73 74 20 5b 61 70 70 65 6e 64 41 72 67 73  test [appendArgs
1070: 20 74 6b 74 2d 65 33 30 62 38 32 30 32 34 38 2d   tkt-e30b820248-
1080: 31 2e 20 24 69 5d 20 7b 64 69 73 70 6f 73 61 6c  1. $i] {disposal
1090: 20 6f 72 64 65 72 69 6e 67 7d 20 2d 73 65 74 75   ordering} -setu
10a0: 70 20 7b 0d 0a 20 20 20 20 73 65 74 20 66 69 6c  p {..    set fil
10b0: 65 4e 61 6d 65 20 5b 61 70 70 65 6e 64 41 72 67  eName [appendArg
10c0: 73 20 74 6b 74 2d 65 33 30 62 38 32 30 32 34 38  s tkt-e30b820248
10d0: 2d 31 2e 20 24 69 20 2e 64 62 5d 0d 0a 20 20 7d  -1. $i .db]..  }
10e0: 20 2d 62 6f 64 79 20 7b 0d 0a 20 20 20 20 73 65   -body {..    se
10f0: 74 20 69 64 20 5b 6f 62 6a 65 63 74 20 69 6e 76  t id [object inv
1100: 6f 6b 65 20 49 6e 74 65 72 70 72 65 74 65 72 2e  oke Interpreter.
1110: 47 65 74 41 63 74 69 76 65 20 4e 65 78 74 49 64  GetActive NextId
1120: 5d 0d 0a 20 20 20 20 73 65 74 20 64 61 74 61 53  ]..    set dataS
1130: 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e  ource [file join
1140: 20 5b 67 65 74 44 61 74 61 62 61 73 65 44 69 72   [getDatabaseDir
1150: 65 63 74 6f 72 79 5d 20 24 66 69 6c 65 4e 61 6d  ectory] $fileNam
1160: 65 5d 0d 0a 20 20 20 20 73 65 74 20 6e 61 6d 65  e]..    set name
1170: 20 5b 66 69 6c 65 20 72 6f 6f 74 6e 61 6d 65 20   [file rootname 
1180: 5b 66 69 6c 65 20 74 61 69 6c 20 24 66 69 6c 65  [file tail $file
1190: 4e 61 6d 65 5d 5d 0d 0a 0d 0a 20 20 20 20 73 65  Name]]....    se
11a0: 74 20 73 71 6c 20 7b 20 5c 0d 0a 20 20 20 20 20  t sql { \..     
11b0: 20 43 52 45 41 54 45 20 54 41 42 4c 45 20 74 31   CREATE TABLE t1
11c0: 20 28 69 64 31 20 49 4e 54 45 47 45 52 29 3b 20   (id1 INTEGER); 
11d0: 5c 0d 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20  \..      INSERT 
11e0: 49 4e 54 4f 20 74 31 20 28 69 64 31 29 20 56 41  INTO t1 (id1) VA
11f0: 4c 55 45 53 20 28 31 29 3b 20 5c 0d 0a 20 20 20  LUES (1); \..   
1200: 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74     INSERT INTO t
1210: 31 20 28 69 64 31 29 20 56 41 4c 55 45 53 20 28  1 (id1) VALUES (
1220: 32 29 3b 20 5c 0d 0a 20 20 20 20 20 20 49 4e 53  2); \..      INS
1230: 45 52 54 20 49 4e 54 4f 20 74 31 20 28 69 64 31  ERT INTO t1 (id1
1240: 29 20 56 41 4c 55 45 53 20 28 33 29 3b 20 5c 0d  ) VALUES (3); \.
1250: 0a 20 20 20 20 20 20 49 4e 53 45 52 54 20 49 4e  .      INSERT IN
1260: 54 4f 20 74 31 20 28 69 64 31 29 20 56 41 4c 55  TO t1 (id1) VALU
1270: 45 53 20 28 34 29 3b 20 5c 0d 0a 20 20 20 20 20  ES (4); \..     
1280: 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 20   INSERT INTO t1 
1290: 28 69 64 31 29 20 56 41 4c 55 45 53 20 28 35 29  (id1) VALUES (5)
12a0: 3b 20 5c 0d 0a 20 20 20 20 20 20 53 45 4c 45 43  ; \..      SELEC
12b0: 54 20 69 64 31 20 46 52 4f 4d 20 74 31 20 4f 52  T id1 FROM t1 OR
12c0: 44 45 52 20 42 59 20 69 64 31 3b 20 5c 0d 0a 20  DER BY id1; \.. 
12d0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 75 6e 73 65     }....    unse
12e0: 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72 65  t -nocomplain re
12f0: 73 75 6c 74 73 20 65 72 72 6f 72 73 0d 0a 0d 0a  sults errors....
1300: 20 20 20 20 73 65 74 20 63 6f 64 65 20 5b 63 6f      set code [co
1310: 6d 70 69 6c 65 43 53 68 61 72 70 57 69 74 68 20  mpileCSharpWith 
1320: 5b 73 75 62 73 74 20 7b 0d 0a 20 20 20 20 20 20  [subst {..      
1330: 75 73 69 6e 67 20 53 79 73 74 65 6d 3b 0d 0a 20  using System;.. 
1340: 20 20 20 20 20 75 73 69 6e 67 20 53 79 73 74 65       using Syste
1350: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 3b 0d 0a  m.Data.SQLite;..
1360: 20 20 20 20 20 20 75 73 69 6e 67 20 53 79 73 74        using Syst
1370: 65 6d 2e 44 69 61 67 6e 6f 73 74 69 63 73 3b 0d  em.Diagnostics;.
1380: 0a 20 20 20 20 20 20 75 73 69 6e 67 20 53 79 73  .      using Sys
1390: 74 65 6d 2e 49 4f 3b 0d 0a 0d 0a 20 20 20 20 20  tem.IO;....     
13a0: 20 6e 61 6d 65 73 70 61 63 65 20 5f 44 79 6e 61   namespace _Dyna
13b0: 6d 69 63 24 7b 69 64 7d 0d 0a 20 20 20 20 20 20  mic${id}..      
13c0: 7b 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  {..        publi
13d0: 63 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 54  c static class T
13e0: 65 73 74 24 7b 69 64 7d 0d 0a 20 20 20 20 20 20  est${id}..      
13f0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23    {..          #
1400: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 53  region Private S
1410: 74 61 74 69 63 20 44 61 74 61 0d 0a 20 20 20 20  tatic Data..    
1420: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
1430: 61 74 69 63 20 53 51 4c 69 74 65 43 6f 6e 6e 65  atic SQLiteConne
1440: 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e  ction connection
1450: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e  ;..          #en
1460: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
1470: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
14c0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
14d0: 50 75 62 6c 69 63 20 53 74 61 74 69 63 20 4d 65  Public Static Me
14e0: 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20  thods..         
14f0: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76   public static v
1500: 6f 69 64 20 4f 70 65 6e 43 6f 6e 6e 65 63 74 69  oid OpenConnecti
1510: 6f 6e 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  on()..          
1520: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
1530: 6f 6e 6e 65 63 74 69 6f 6e 20 3d 20 6e 65 77 20  onnection = new 
1540: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
1550: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1560: 20 20 20 22 44 61 74 61 20 53 6f 75 72 63 65 3d     "Data Source=
1570: 24 7b 64 61 74 61 53 6f 75 72 63 65 7d 3b 5b 67  ${dataSource};[g
1580: 65 74 54 65 73 74 50 72 6f 70 65 72 74 69 65 73  etTestProperties
1590: 5d 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ]");....        
15a0: 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 4f      connection.O
15b0: 70 65 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  pen();..        
15c0: 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 4c      connection.L
15d0: 6f 67 4d 65 73 73 61 67 65 28 30 2c 20 22 43 6f  ogMessage(0, "Co
15e0: 6e 6e 65 63 74 69 6f 6e 20 6f 70 65 6e 65 64 2e  nnection opened.
15f0: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d  ");..          }
1600: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f  ....          //
1610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1650: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1660: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 53   public static S
1670: 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 20 43 72 65  QLiteCommand Cre
1680: 61 74 65 43 6f 6d 6d 61 6e 64 28 0d 0a 20 20 20  ateCommand(..   
1690: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
16a0: 73 71 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  sql..           
16b0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b 0d   )..          {.
16c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
16d0: 69 74 65 43 6f 6d 6d 61 6e 64 20 63 6f 6d 6d 61  iteCommand comma
16e0: 6e 64 20 3d 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e  nd = connection.
16f0: 43 72 65 61 74 65 43 6f 6d 6d 61 6e 64 28 29 3b  CreateCommand();
1700: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f  ..            co
1710: 6d 6d 61 6e 64 2e 43 6f 6d 6d 61 6e 64 54 65 78  mmand.CommandTex
1720: 74 20 3d 20 73 71 6c 3b 0d 0a 20 20 20 20 20 20  t = sql;..      
1730: 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e        connection
1740: 2e 4c 6f 67 4d 65 73 73 61 67 65 28 30 2c 20 22  .LogMessage(0, "
1750: 43 6f 6d 6d 61 6e 64 20 63 72 65 61 74 65 64 2e  Command created.
1760: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ");..           
1770: 20 72 65 74 75 72 6e 20 63 6f 6d 6d 61 6e 64 3b   return command;
1780: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d  ..          }...
1790: 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  .          /////
17a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  ....          pu
17f0: 62 6c 69 63 20 73 74 61 74 69 63 20 53 51 4c 69  blic static SQLi
1800: 74 65 44 61 74 61 52 65 61 64 65 72 20 45 78 65  teDataReader Exe
1810: 63 75 74 65 52 65 61 64 65 72 28 0d 0a 20 20 20  cuteReader(..   
1820: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
1830: 6f 6d 6d 61 6e 64 20 63 6f 6d 6d 61 6e 64 0d 0a  ommand command..
1840: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
1850: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1860: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 44 61          SQLiteDa
1870: 74 61 52 65 61 64 65 72 20 64 61 74 61 52 65 61  taReader dataRea
1880: 64 65 72 20 3d 20 63 6f 6d 6d 61 6e 64 2e 45 78  der = command.Ex
1890: 65 63 75 74 65 52 65 61 64 65 72 28 29 3b 0d 0a  ecuteReader();..
18a0: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 6e              conn
18b0: 65 63 74 69 6f 6e 2e 4c 6f 67 4d 65 73 73 61 67  ection.LogMessag
18c0: 65 28 30 2c 20 22 43 6f 6d 6d 61 6e 64 20 65 78  e(0, "Command ex
18d0: 65 63 75 74 65 64 2e 22 29 3b 0d 0a 20 20 20 20  ecuted.");..    
18e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64          return d
18f0: 61 74 61 52 65 61 64 65 72 3b 0d 0a 20 20 20 20  ataReader;..    
1900: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1910: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1960: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
1970: 74 61 74 69 63 20 53 51 4c 69 74 65 44 61 74 61  tatic SQLiteData
1980: 52 65 61 64 65 72 20 45 78 65 63 75 74 65 52 65  Reader ExecuteRe
1990: 61 64 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20  ader(..         
19a0: 20 20 20 73 74 72 69 6e 67 20 73 71 6c 0d 0a 20     string sql.. 
19b0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
19c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
19d0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6d         SQLiteCom
19e0: 6d 61 6e 64 20 63 6f 6d 6d 61 6e 64 20 3d 20 43  mand command = C
19f0: 72 65 61 74 65 43 6f 6d 6d 61 6e 64 28 73 71 6c  reateCommand(sql
1a00: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1a10: 53 51 4c 69 74 65 44 61 74 61 52 65 61 64 65 72  SQLiteDataReader
1a20: 20 64 61 74 61 52 65 61 64 65 72 20 3d 20 63 6f   dataReader = co
1a30: 6d 6d 61 6e 64 2e 45 78 65 63 75 74 65 52 65 61  mmand.ExecuteRea
1a40: 64 65 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  der();..        
1a50: 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 4c      connection.L
1a60: 6f 67 4d 65 73 73 61 67 65 28 30 2c 20 22 43 6f  ogMessage(0, "Co
1a70: 6d 6d 61 6e 64 20 65 78 65 63 75 74 65 64 2e 22  mmand executed."
1a80: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1a90: 72 65 74 75 72 6e 20 64 61 74 61 52 65 61 64 65  return dataReade
1aa0: 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  r;..          }.
1ab0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  ...          ///
1ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b00: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
1b10: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
1b20: 69 64 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69  id CloseConnecti
1b30: 6f 6e 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  on()..          
1b40: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  {..            c
1b50: 6f 6e 6e 65 63 74 69 6f 6e 2e 4c 6f 67 4d 65 73  onnection.LogMes
1b60: 73 61 67 65 28 30 2c 20 22 43 6c 6f 73 69 6e 67  sage(0, "Closing
1b70: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 2e 2e 22 29   connection...")
1b80: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63  ;..            c
1b90: 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6c 6f 73 65 28  onnection.Close(
1ba0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
1bb0: 0a 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72  .          #endr
1bc0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
1bd0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c10: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1c20: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
1c30: 74 69 63 20 76 6f 69 64 20 4d 61 69 6e 28 29 0d  tic void Main().
1c40: 0a 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  .          {..  
1c50: 20 20 20 20 20 20 20 20 20 20 75 73 69 6e 67 20            using 
1c60: 28 54 72 61 63 65 4c 69 73 74 65 6e 65 72 20 6c  (TraceListener l
1c70: 69 73 74 65 6e 65 72 20 3d 20 6e 65 77 20 54 65  istener = new Te
1c80: 78 74 57 72 69 74 65 72 54 72 61 63 65 4c 69 73  xtWriterTraceLis
1c90: 74 65 6e 65 72 28 0d 0a 20 20 20 20 20 20 20 20  tener(..        
1ca0: 20 20 20 20 20 20 20 20 6e 65 77 20 46 69 6c 65          new File
1cb0: 53 74 72 65 61 6d 28 22 24 7b 74 65 73 74 5f 6c  Stream("${test_l
1cc0: 6f 67 7d 22 2c 20 46 69 6c 65 4d 6f 64 65 2e 41  og}", FileMode.A
1cd0: 70 70 65 6e 64 2c 0d 0a 20 20 20 20 20 20 20 20  ppend,..        
1ce0: 20 20 20 20 20 20 20 20 20 20 20 20 46 69 6c 65              File
1cf0: 41 63 63 65 73 73 2e 57 72 69 74 65 2c 20 46 69  Access.Write, Fi
1d00: 6c 65 53 68 61 72 65 2e 52 65 61 64 57 72 69 74  leShare.ReadWrit
1d10: 65 29 2c 20 22 24 7b 6e 61 6d 65 7d 22 29 29 0d  e), "${name}")).
1d20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1d40: 61 63 65 2e 4c 69 73 74 65 6e 65 72 73 2e 41 64  ace.Listeners.Ad
1d50: 64 28 6c 69 73 74 65 6e 65 72 29 3b 0d 0a 20 20  d(listener);..  
1d60: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
1d70: 65 2e 57 72 69 74 65 4c 69 6e 65 28 22 2d 2d 2d  e.WriteLine("---
1d80: 2d 20 53 54 41 52 54 20 54 52 41 43 45 20 5c 5c  - START TRACE \\
1d90: 22 24 7b 6e 61 6d 65 7d 5c 5c 22 22 29 3b 0d 0a  "${name}\\"");..
1da0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1db0: 4f 70 65 6e 43 6f 6e 6e 65 63 74 69 6f 6e 28 29  OpenConnection()
1dc0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1dd0: 20 53 51 4c 69 74 65 44 61 74 61 52 65 61 64 65   SQLiteDataReade
1de0: 72 20 64 61 74 61 52 65 61 64 65 72 20 3d 20 45  r dataReader = E
1df0: 78 65 63 75 74 65 52 65 61 64 65 72 28 22 24 7b  xecuteReader("${
1e00: 73 71 6c 7d 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  sql}");....     
1e10: 20 20 20 20 20 20 20 20 20 5b 65 78 70 72 20 7b           [expr {
1e20: 24 69 20 3c 3d 20 32 20 3f 20 7b 0d 0a 20 20 20  $i <= 2 ? {..   
1e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 47 43 2e               GC.
1e40: 43 6f 6c 6c 65 63 74 28 29 3b 0d 0a 20 20 20 20  Collect();..    
1e50: 20 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 57              GC.W
1e60: 61 69 74 46 6f 72 50 65 6e 64 69 6e 67 46 69 6e  aitForPendingFin
1e70: 61 6c 69 7a 65 72 73 28 29 3b 0d 0a 20 20 20 20  alizers();..    
1e80: 20 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 43              GC.C
1e90: 6f 6c 6c 65 63 74 28 29 3b 0d 0a 20 20 20 20 20  ollect();..     
1ea0: 20 20 20 20 20 20 20 20 20 7d 20 3a 20 22 22 7d           } : ""}
1eb0: 5d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ]....           
1ec0: 20 20 20 64 61 74 61 52 65 61 64 65 72 2e 43 6c     dataReader.Cl
1ed0: 6f 73 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ose();....      
1ee0: 20 20 20 20 20 20 20 20 5b 65 78 70 72 20 7b 24          [expr {$
1ef0: 69 20 3c 3d 20 33 20 3f 20 7b 0d 0a 20 20 20 20  i <= 3 ? {..    
1f00: 20 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 43              GC.C
1f10: 6f 6c 6c 65 63 74 28 29 3b 0d 0a 20 20 20 20 20  ollect();..     
1f20: 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 57 61             GC.Wa
1f30: 69 74 46 6f 72 50 65 6e 64 69 6e 67 46 69 6e 61  itForPendingFina
1f40: 6c 69 7a 65 72 73 28 29 3b 0d 0a 20 20 20 20 20  lizers();..     
1f50: 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 43 6f             GC.Co
1f60: 6c 6c 65 63 74 28 29 3b 0d 0a 20 20 20 20 20 20  llect();..      
1f70: 20 20 20 20 20 20 20 20 7d 20 3a 20 22 22 7d 5d          } : ""}]
1f80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1f90: 20 20 43 6c 6f 73 65 43 6f 6e 6e 65 63 74 69 6f    CloseConnectio
1fa0: 6e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  n();....        
1fb0: 20 20 20 20 20 20 5b 65 78 70 72 20 7b 24 69 20        [expr {$i 
1fc0: 3c 3d 20 34 20 3f 20 7b 0d 0a 20 20 20 20 20 20  <= 4 ? {..      
1fd0: 20 20 20 20 20 20 20 20 20 20 47 43 2e 43 6f 6c            GC.Col
1fe0: 6c 65 63 74 28 29 3b 0d 0a 20 20 20 20 20 20 20  lect();..       
1ff0: 20 20 20 20 20 20 20 20 20 47 43 2e 57 61 69 74           GC.Wait
2000: 46 6f 72 50 65 6e 64 69 6e 67 46 69 6e 61 6c 69  ForPendingFinali
2010: 7a 65 72 73 28 29 3b 0d 0a 20 20 20 20 20 20 20  zers();..       
2020: 20 20 20 20 20 20 20 20 20 47 43 2e 43 6f 6c 6c           GC.Coll
2030: 65 63 74 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ect();..        
2040: 20 20 20 20 20 20 7d 20 3a 20 22 22 7d 5d 0d 0a        } : ""}]..
2050: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2060: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
2070: 22 2d 2d 2d 2d 20 45 4e 44 20 54 52 41 43 45 20  "---- END TRACE 
2080: 5c 5c 22 24 7b 6e 61 6d 65 7d 5c 5c 22 22 29 3b  \\"${name}\\"");
2090: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20a0: 54 72 61 63 65 2e 4c 69 73 74 65 6e 65 72 73 2e  Trace.Listeners.
20b0: 52 65 6d 6f 76 65 28 6c 69 73 74 65 6e 65 72 29  Remove(listener)
20c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
20d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20  ..          }.. 
20e0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
20f0: 7d 0d 0a 20 20 20 20 7d 5d 20 74 72 75 65 20 66  }..    }] true f
2100: 61 6c 73 65 20 74 72 75 65 20 72 65 73 75 6c 74  alse true result
2110: 73 20 65 72 72 6f 72 73 20 53 79 73 74 65 6d 2e  s errors System.
2120: 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 5d  Data.SQLite.dll]
2130: 0d 0a 0d 0a 20 20 20 20 6c 69 73 74 20 24 63 6f  ....    list $co
2140: 64 65 20 24 72 65 73 75 6c 74 73 20 5c 0d 0a 20  de $results \.. 
2150: 20 20 20 20 20 20 20 5b 65 78 70 72 20 7b 5b 69         [expr {[i
2160: 6e 66 6f 20 65 78 69 73 74 73 20 65 72 72 6f 72  nfo exists error
2170: 73 5d 20 3f 20 24 65 72 72 6f 72 73 20 3a 20 22  s] ? $errors : "
2180: 22 7d 5d 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b  "}] \..        [
2190: 65 78 70 72 20 7b 24 63 6f 64 65 20 65 71 20 22  expr {$code eq "
21a0: 4f 6b 22 20 3f 20 5b 63 61 74 63 68 20 7b 0d 0a  Ok" ? [catch {..
21b0: 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74            object
21c0: 20 69 6e 76 6f 6b 65 20 5f 44 79 6e 61 6d 69 63   invoke _Dynamic
21d0: 24 7b 69 64 7d 2e 54 65 73 74 24 7b 69 64 7d 20  ${id}.Test${id} 
21e0: 4d 61 69 6e 0d 0a 20 20 20 20 20 20 20 20 7d 20  Main..        } 
21f0: 72 65 73 75 6c 74 5d 20 3a 20 5b 73 65 74 20 72  result] : [set r
2200: 65 73 75 6c 74 20 22 22 5d 7d 5d 20 24 72 65 73  esult ""]}] $res
2210: 75 6c 74 20 5c 0d 0a 20 20 20 20 20 20 20 20 5b  ult \..        [
2220: 72 65 70 6f 72 74 53 51 4c 69 74 65 52 65 73 6f  reportSQLiteReso
2230: 75 72 63 65 73 20 24 74 65 73 74 5f 63 68 61 6e  urces $test_chan
2240: 6e 65 6c 20 74 72 75 65 5d 0d 0a 20 20 7d 20 2d  nel true]..  } -
2250: 63 6c 65 61 6e 75 70 20 7b 0d 0a 20 20 20 20 63  cleanup {..    c
2260: 6c 65 61 6e 75 70 44 62 20 24 66 69 6c 65 4e 61  leanupDb $fileNa
2270: 6d 65 0d 0a 0d 0a 20 20 20 20 75 6e 73 65 74 20  me....    unset 
2280: 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 72 65 73 75  -nocomplain resu
2290: 6c 74 20 63 6f 64 65 20 72 65 73 75 6c 74 73 20  lt code results 
22a0: 65 72 72 6f 72 73 20 73 71 6c 20 6e 61 6d 65 20  errors sql name 
22b0: 64 61 74 61 53 6f 75 72 63 65 20 69 64 20 5c 0d  dataSource id \.
22c0: 0a 20 20 20 20 20 20 20 20 66 69 6c 65 4e 61 6d  .        fileNam
22d0: 65 0d 0a 20 20 7d 20 2d 63 6f 6e 73 74 72 61 69  e..  } -constrai
22e0: 6e 74 73 20 7b 65 61 67 6c 65 20 63 6f 6d 6d 61  nts {eagle comma
22f0: 6e 64 2e 6f 62 6a 65 63 74 20 6c 6f 67 46 69 6c  nd.object logFil
2300: 65 20 6d 6f 6e 6f 42 75 67 32 38 20 63 6f 6d 6d  e monoBug28 comm
2310: 61 6e 64 2e 73 71 6c 5c 0d 0a 63 6f 6d 70 69 6c  and.sql\..compil
2320: 65 2e 44 41 54 41 20 53 51 4c 69 74 65 20 53 79  e.DATA SQLite Sy
2330: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
2340: 20 63 6f 6d 70 69 6c 65 43 53 68 61 72 70 7d 20   compileCSharp} 
2350: 2d 6d 61 74 63 68 20 72 65 67 65 78 70 20 2d 72  -match regexp -r
2360: 65 73 75 6c 74 20 5c 0d 0a 5b 61 70 70 65 6e 64  esult \..[append
2370: 41 72 67 73 20 22 5e 4f 6b 20 53 79 73 74 65 6d  Args "^Ok System
2380: 23 43 6f 64 65 44 6f 6d 23 43 6f 6d 70 69 6c 65  #CodeDom#Compile
2390: 72 23 43 6f 6d 70 69 6c 65 72 52 65 73 75 6c 74  r#CompilerResult
23a0: 73 23 5c 5c 64 2b 20 5c 5c 7b 5c 5c 7d 20 30 20  s#\\d+ \\{\\} 0 
23b0: 5c 5c 7b 5c 5c 7d 20 22 5c 0d 0a 24 6d 65 6d 6f  \\{\\} "\..$memo
23c0: 72 79 5f 75 73 65 64 20 5c 24 5d 7d 0d 0a 7d 0d  ry_used \$]}..}.
23d0: 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23  ...#############
23e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
23f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2400: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2410: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2420: 23 23 0d 0a 0d 0a 75 6e 73 65 74 20 2d 6e 6f 63  ##....unset -noc
2430: 6f 6d 70 6c 61 69 6e 20 69 0d 0a 0d 0a 23 23 23  omplain i....###
2440: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
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 0d 0a 0d 0a  ############....
2490: 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d 70 6c 61 69  unset -nocomplai
24a0: 6e 20 6d 65 6d 6f 72 79 5f 75 73 65 64 0d 0a 0d  n memory_used...
24b0: 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  .###############
24c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
24d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
24e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
24f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
2500: 0d 0a 0d 0a 72 75 6e 53 51 4c 69 74 65 54 65 73  ....runSQLiteTes
2510: 74 45 70 69 6c 6f 67 75 65 0d 0a 72 75 6e 54 65  tEpilogue..runTe
2520: 73 74 45 70 69 6c 6f 67 75 65 0d 0a              stEpilogue..