System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 0e8a762fcaecdcfa606bb43d5dd3b0a25e3671d4:


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 35 63 65 65 35 34  .#..# tkt-5cee54
0060: 30 39 66 38 2e 65 61 67 6c 65 20 2d 2d 0d 0a 23  09f8.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 72 75 6e  #########....run
0270: 54 65 73 74 20 7b 74 65 73 74 20 74 6b 74 2d 35  Test {test tkt-5
0280: 63 65 65 35 34 30 39 66 38 2d 31 2e 31 20 7b 61  cee5409f8-1.1 {a
0290: 73 79 6e 63 68 72 6f 6e 6f 75 73 20 74 72 61 6e  synchronous tran
02a0: 73 61 63 74 69 6f 6e 20 68 61 6e 64 6c 69 6e 67  saction handling
02b0: 7d 20 2d 73 65 74 75 70 20 7b 0d 0a 20 20 73 65  } -setup {..  se
02c0: 74 75 70 44 62 20 5b 73 65 74 20 66 69 6c 65 4e  tupDb [set fileN
02d0: 61 6d 65 20 74 6b 74 2d 35 63 65 65 35 34 30 39  ame tkt-5cee5409
02e0: 66 38 2d 31 2e 31 2e 64 62 5d 0d 0a 7d 20 2d 62  f8-1.1.db]..} -b
02f0: 6f 64 79 20 7b 0d 0a 20 20 73 71 6c 20 65 78 65  ody {..  sql exe
0300: 63 75 74 65 20 24 64 62 20 22 43 52 45 41 54 45  cute $db "CREATE
0310: 20 54 41 42 4c 45 20 74 31 28 78 20 49 4e 54 45   TABLE t1(x INTE
0320: 47 45 52 29 3b 22 0d 0a 0d 0a 20 20 73 65 74 20  GER);"....  set 
0330: 69 64 20 5b 6f 62 6a 65 63 74 20 69 6e 76 6f 6b  id [object invok
0340: 65 20 49 6e 74 65 72 70 72 65 74 65 72 2e 47 65  e Interpreter.Ge
0350: 74 41 63 74 69 76 65 20 4e 65 78 74 49 64 5d 0d  tActive NextId].
0360: 0a 20 20 73 65 74 20 64 61 74 61 53 6f 75 72 63  .  set dataSourc
0370: 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 67 65  e [file join [ge
0380: 74 44 61 74 61 62 61 73 65 44 69 72 65 63 74 6f  tDatabaseDirecto
0390: 72 79 5d 20 24 66 69 6c 65 4e 61 6d 65 5d 0d 0a  ry] $fileName]..
03a0: 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f 63 6f 6d  ..  unset -nocom
03b0: 70 6c 61 69 6e 20 72 65 73 75 6c 74 73 20 65 72  plain results er
03c0: 72 6f 72 73 0d 0a 0d 0a 20 20 73 65 74 20 63 6f  rors....  set co
03d0: 64 65 20 5b 63 6f 6d 70 69 6c 65 43 53 68 61 72  de [compileCShar
03e0: 70 57 69 74 68 20 5b 73 75 62 73 74 20 7b 0d 0a  pWith [subst {..
03f0: 20 20 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d      using System
0400: 3b 0d 0a 20 20 20 20 75 73 69 6e 67 20 53 79 73  ;..    using Sys
0410: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 3b  tem.Data.SQLite;
0420: 0d 0a 20 20 20 20 75 73 69 6e 67 20 53 79 73 74  ..    using Syst
0430: 65 6d 2e 54 68 72 65 61 64 69 6e 67 3b 0d 0a 20  em.Threading;.. 
0440: 20 20 20 75 73 69 6e 67 20 53 79 73 74 65 6d 2e     using System.
0450: 54 72 61 6e 73 61 63 74 69 6f 6e 73 3b 0d 0a 0d  Transactions;...
0460: 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 5f  .    namespace _
0470: 44 79 6e 61 6d 69 63 24 7b 69 64 7d 0d 0a 20 20  Dynamic${id}..  
0480: 20 20 7b 0d 0a 20 20 20 20 20 20 70 75 62 6c 69    {..      publi
0490: 63 20 73 74 61 74 69 63 20 63 6c 61 73 73 20 54  c static class T
04a0: 65 73 74 24 7b 69 64 7d 0d 0a 20 20 20 20 20 20  est${id}..      
04b0: 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  {..        #regi
04c0: 6f 6e 20 50 72 69 76 61 74 65 20 45 6e 6c 69 73  on Private Enlis
04d0: 74 6d 65 6e 74 4e 6f 74 69 66 69 63 61 74 69 6f  tmentNotificatio
04e0: 6e 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20  n Class..       
04f0: 20 70 72 69 76 61 74 65 20 73 65 61 6c 65 64 20   private sealed 
0500: 63 6c 61 73 73 20 45 6e 6c 69 73 74 6d 65 6e 74  class Enlistment
0510: 4e 6f 74 69 66 69 63 61 74 69 6f 6e 20 3a 20 49  Notification : I
0520: 45 6e 6c 69 73 74 6d 65 6e 74 4e 6f 74 69 66 69  EnlistmentNotifi
0530: 63 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20  cation..        
0540: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 23 72 65  {..          #re
0550: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
0560: 61 0d 0a 20 20 20 20 20 20 20 20 20 20 70 72 69  a..          pri
0570: 76 61 74 65 20 62 6f 6f 6c 20 66 6f 72 63 65 52  vate bool forceR
0580: 6f 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20  ollback;..      
0590: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
05a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
05b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05f0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23  /....          #
0600: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43  region Private C
0610: 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
0620: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 45         private E
0630: 6e 6c 69 73 74 6d 65 6e 74 4e 6f 74 69 66 69 63  nlistmentNotific
0640: 61 74 69 6f 6e 28 62 6f 6f 6c 20 66 6f 72 63 65  ation(bool force
0650: 52 6f 6c 6c 62 61 63 6b 29 0d 0a 20 20 20 20 20  Rollback)..     
0660: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
0670: 20 20 20 20 74 68 69 73 2e 66 6f 72 63 65 52 6f      this.forceRo
0680: 6c 6c 62 61 63 6b 20 3d 20 66 6f 72 63 65 52 6f  llback = forceRo
0690: 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20  llback;..       
06a0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
06b0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
06c0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
06d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
0710: 0a 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69  .          #regi
0720: 6f 6e 20 49 45 6e 6c 69 73 74 6d 65 6e 74 4e 6f  on IEnlistmentNo
0730: 74 69 66 69 63 61 74 69 6f 6e 20 4d 65 6d 62 65  tification Membe
0740: 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 70 75  rs..          pu
0750: 62 6c 69 63 20 76 6f 69 64 20 43 6f 6d 6d 69 74  blic void Commit
0760: 28 45 6e 6c 69 73 74 6d 65 6e 74 20 65 6e 6c 69  (Enlistment enli
0770: 73 74 6d 65 6e 74 29 0d 0a 20 20 20 20 20 20 20  stment)..       
0780: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
0790: 20 20 65 6e 6c 69 73 74 6d 65 6e 74 2e 44 6f 6e    enlistment.Don
07a0: 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e();..          
07b0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 2f  }....          /
07c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0800: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
0810: 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 49 6e    public void In
0820: 44 6f 75 62 74 28 45 6e 6c 69 73 74 6d 65 6e 74  Doubt(Enlistment
0830: 20 65 6e 6c 69 73 74 6d 65 6e 74 29 0d 0a 20 20   enlistment)..  
0840: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
0850: 20 20 20 20 20 20 20 65 6e 6c 69 73 74 6d 65 6e         enlistmen
0860: 74 2e 44 6f 6e 65 28 29 3b 0d 0a 20 20 20 20 20  t.Done();..     
0870: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
0880: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
08a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
08b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
08c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
08d0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
08e0: 69 64 20 50 72 65 70 61 72 65 28 50 72 65 70 61  id Prepare(Prepa
08f0: 72 69 6e 67 45 6e 6c 69 73 74 6d 65 6e 74 20 70  ringEnlistment p
0900: 72 65 70 61 72 69 6e 67 45 6e 6c 69 73 74 6d 65  reparingEnlistme
0910: 6e 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 7b  nt)..          {
0920: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
0930: 20 28 66 6f 72 63 65 52 6f 6c 6c 62 61 63 6b 29   (forceRollback)
0940: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
0950: 70 72 65 70 61 72 69 6e 67 45 6e 6c 69 73 74 6d  preparingEnlistm
0960: 65 6e 74 2e 46 6f 72 63 65 52 6f 6c 6c 62 61 63  ent.ForceRollbac
0970: 6b 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  k();..          
0980: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
0990: 20 20 20 20 20 20 70 72 65 70 61 72 69 6e 67 45        preparingE
09a0: 6e 6c 69 73 74 6d 65 6e 74 2e 50 72 65 70 61 72  nlistment.Prepar
09b0: 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ed();..         
09c0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
09d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
09e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
09f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a10: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
0a20: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 52     public void R
0a30: 6f 6c 6c 62 61 63 6b 28 45 6e 6c 69 73 74 6d 65  ollback(Enlistme
0a40: 6e 74 20 65 6e 6c 69 73 74 6d 65 6e 74 29 0d 0a  nt enlistment)..
0a50: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
0a60: 20 20 20 20 20 20 20 20 20 65 6e 6c 69 73 74 6d           enlistm
0a70: 65 6e 74 2e 44 6f 6e 65 28 29 3b 0d 0a 20 20 20  ent.Done();..   
0a80: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
0a90: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
0aa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ..          ////
0ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0af0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 23  /....          #
0b00: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 53 74  region Public St
0b10: 61 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20  atic Methods..  
0b20: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
0b30: 74 61 74 69 63 20 76 6f 69 64 20 55 73 65 44 69  tatic void UseDi
0b40: 73 74 72 69 62 75 74 65 64 54 72 61 6e 73 61 63  stributedTransac
0b50: 74 69 6f 6e 28 62 6f 6f 6c 20 66 6f 72 63 65 52  tion(bool forceR
0b60: 6f 6c 6c 62 61 63 6b 29 0d 0a 20 20 20 20 20 20  ollback)..      
0b70: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
0b80: 20 20 20 54 72 61 6e 73 61 63 74 69 6f 6e 2e 43     Transaction.C
0b90: 75 72 72 65 6e 74 2e 45 6e 6c 69 73 74 44 75 72  urrent.EnlistDur
0ba0: 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20  able(..         
0bb0: 20 20 20 20 20 20 20 47 75 69 64 2e 4e 65 77 47         Guid.NewG
0bc0: 75 69 64 28 29 2c 20 6e 65 77 20 45 6e 6c 69 73  uid(), new Enlis
0bd0: 74 6d 65 6e 74 4e 6f 74 69 66 69 63 61 74 69 6f  tmentNotificatio
0be0: 6e 28 66 6f 72 63 65 52 6f 6c 6c 62 61 63 6b 29  n(forceRollback)
0bf0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
0c00: 20 20 20 45 6e 6c 69 73 74 6d 65 6e 74 4f 70 74     EnlistmentOpt
0c10: 69 6f 6e 73 2e 4e 6f 6e 65 29 3b 0d 0a 20 20 20  ions.None);..   
0c20: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
0c30: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
0c40: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
0c50: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
0c60: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
0c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
0cc0: 69 6f 6e 20 50 72 69 76 61 74 65 20 53 74 61 74  ion Private Stat
0cd0: 69 63 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20  ic Data..       
0ce0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
0cf0: 69 6e 74 20 72 65 73 65 74 43 6f 75 6e 74 3b 0d  int resetCount;.
0d00: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
0d10: 20 73 74 61 74 69 63 20 69 6e 74 20 74 69 6d 65   static int time
0d20: 6f 75 74 43 6f 75 6e 74 3b 0d 0a 20 20 20 20 20  outCount;..     
0d30: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
0d40: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
0d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0d90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
0da0: 69 6f 6e 20 50 72 69 76 61 74 65 20 53 74 61 74  ion Private Stat
0db0: 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  ic Methods..    
0dc0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
0dd0: 69 63 20 76 6f 69 64 20 44 6f 54 72 61 6e 73 61  ic void DoTransa
0de0: 63 74 69 6f 6e 73 28 53 51 4c 69 74 65 43 6f 6e  ctions(SQLiteCon
0df0: 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69  nection connecti
0e00: 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  on)..        {..
0e10: 20 20 20 20 20 20 20 20 20 20 52 61 6e 64 6f 6d            Random
0e20: 20 72 61 6e 64 6f 6d 20 3d 20 6e 65 77 20 52 61   random = new Ra
0e30: 6e 64 6f 6d 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ndom();....     
0e40: 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 74       for (int it
0e50: 65 72 61 74 69 6f 6e 20 3d 20 30 3b 20 69 74 65  eration = 0; ite
0e60: 72 61 74 69 6f 6e 20 3c 20 31 30 30 30 30 3b 20  ration < 10000; 
0e70: 69 74 65 72 61 74 69 6f 6e 2b 2b 29 0d 0a 20 20  iteration++)..  
0e80: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
0e90: 20 20 20 20 20 20 20 75 73 69 6e 67 20 28 54 72         using (Tr
0ea0: 61 6e 73 61 63 74 69 6f 6e 53 63 6f 70 65 20 74  ansactionScope t
0eb0: 72 61 6e 73 61 63 74 69 6f 6e 53 63 6f 70 65 20  ransactionScope 
0ec0: 3d 20 6e 65 77 20 54 72 61 6e 73 61 63 74 69 6f  = new Transactio
0ed0: 6e 53 63 6f 70 65 28 29 29 0d 0a 20 20 20 20 20  nScope())..     
0ee0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
0ef0: 20 20 20 20 20 20 20 20 45 6e 6c 69 73 74 6d 65          Enlistme
0f00: 6e 74 4e 6f 74 69 66 69 63 61 74 69 6f 6e 2e 55  ntNotification.U
0f10: 73 65 44 69 73 74 72 69 62 75 74 65 64 54 72 61  seDistributedTra
0f20: 6e 73 61 63 74 69 6f 6e 28 66 61 6c 73 65 29 3b  nsaction(false);
0f30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
0f40: 20 20 54 72 61 6e 73 61 63 74 69 6f 6e 49 6e 66    TransactionInf
0f50: 6f 72 6d 61 74 69 6f 6e 20 74 72 61 6e 73 61 63  ormation transac
0f60: 74 69 6f 6e 49 6e 66 6f 72 6d 61 74 69 6f 6e 20  tionInformation 
0f70: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
0f80: 20 20 20 20 20 54 72 61 6e 73 61 63 74 69 6f 6e       Transaction
0f90: 2e 43 75 72 72 65 6e 74 2e 54 72 61 6e 73 61 63  .Current.Transac
0fa0: 74 69 6f 6e 49 6e 66 6f 72 6d 61 74 69 6f 6e 3b  tionInformation;
0fb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
0fc0: 20 20 69 66 20 28 74 72 61 6e 73 61 63 74 69 6f    if (transactio
0fd0: 6e 49 6e 66 6f 72 6d 61 74 69 6f 6e 2e 44 69 73  nInformation.Dis
0fe0: 74 72 69 62 75 74 65 64 49 64 65 6e 74 69 66 69  tributedIdentifi
0ff0: 65 72 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20 20  er.Equals(..    
1000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 75                Gu
1010: 69 64 2e 45 6d 70 74 79 29 29 0d 0a 20 20 20 20  id.Empty))..    
1020: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1030: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
1040: 6f 77 20 6e 65 77 20 45 78 63 65 70 74 69 6f 6e  ow new Exception
1050: 28 22 64 69 73 74 72 69 62 75 74 65 64 20 69 64  ("distributed id
1060: 65 6e 74 69 66 69 65 72 20 69 73 20 65 6d 70 74  entifier is empt
1070: 79 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  y");..          
1080: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1090: 20 20 20 20 20 20 20 63 6f 6e 6e 65 63 74 69 6f         connectio
10a0: 6e 2e 45 6e 6c 69 73 74 54 72 61 6e 73 61 63 74  n.EnlistTransact
10b0: 69 6f 6e 28 54 72 61 6e 73 61 63 74 69 6f 6e 2e  ion(Transaction.
10c0: 43 75 72 72 65 6e 74 29 3b 0d 0a 0d 0a 20 20 20  Current);....   
10d0: 20 20 20 20 20 20 20 20 20 20 20 75 73 69 6e 67             using
10e0: 20 28 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 20   (SQLiteCommand 
10f0: 63 6f 6d 6d 61 6e 64 20 3d 20 63 6f 6e 6e 65 63  command = connec
1100: 74 69 6f 6e 2e 43 72 65 61 74 65 43 6f 6d 6d 61  tion.CreateComma
1110: 6e 64 28 29 29 0d 0a 20 20 20 20 20 20 20 20 20  nd())..         
1120: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1130: 20 20 20 20 20 20 20 20 63 6f 6d 6d 61 6e 64 2e          command.
1140: 43 6f 6d 6d 61 6e 64 54 65 78 74 20 3d 20 22 49  CommandText = "I
1150: 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 28 78 29  NSERT INTO t1(x)
1160: 20 56 41 4c 55 45 53 28 3f 29 3b 22 3b 0d 0a 20   VALUES(?);";.. 
1170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1180: 6f 6d 6d 61 6e 64 2e 50 61 72 61 6d 65 74 65 72  ommand.Parameter
1190: 73 2e 41 64 64 28 6e 65 77 20 53 51 4c 69 74 65  s.Add(new SQLite
11a0: 50 61 72 61 6d 65 74 65 72 28 22 22 2c 20 69 74  Parameter("", it
11b0: 65 72 61 74 69 6f 6e 29 29 3b 0d 0a 20 20 20 20  eration));..    
11c0: 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d 6d              comm
11d0: 61 6e 64 2e 45 78 65 63 75 74 65 4e 6f 6e 51 75  and.ExecuteNonQu
11e0: 65 72 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ery();..        
11f0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1200: 20 20 20 20 20 20 20 20 20 74 72 61 6e 73 61 63           transac
1210: 74 69 6f 6e 53 63 6f 70 65 2e 43 6f 6d 70 6c 65  tionScope.Comple
1220: 74 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  te();..         
1230: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1240: 20 20 20 20 54 68 72 65 61 64 2e 53 6c 65 65 70      Thread.Sleep
1250: 28 72 61 6e 64 6f 6d 2e 4e 65 78 74 28 31 30 29  (random.Next(10)
1260: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 0d  );..          }.
1270: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1280: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
12d0: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
12e0: 20 73 74 61 74 69 63 20 76 6f 69 64 20 57 61 69   static void Wai
12f0: 74 4f 6e 45 6e 6c 69 73 74 6d 65 6e 74 73 28 6f  tOnEnlistments(o
1300: 62 6a 65 63 74 20 73 74 61 74 65 29 0d 0a 20 20  bject state)..  
1310: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1320: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
1330: 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 3d  ion connection =
1340: 20 28 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69   (SQLiteConnecti
1350: 6f 6e 29 73 74 61 74 65 3b 0d 0a 20 20 20 20 20  on)state;..     
1360: 20 20 20 20 20 52 61 6e 64 6f 6d 20 72 61 6e 64       Random rand
1370: 6f 6d 20 3d 20 6e 65 77 20 52 61 6e 64 6f 6d 28  om = new Random(
1380: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1390: 66 6f 72 20 28 69 6e 74 20 69 74 65 72 61 74 69  for (int iterati
13a0: 6f 6e 20 3d 20 30 3b 20 69 74 65 72 61 74 69 6f  on = 0; iteratio
13b0: 6e 20 3c 20 31 30 30 30 3b 20 69 74 65 72 61 74  n < 1000; iterat
13c0: 69 6f 6e 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20  ion++)..        
13d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13e0: 20 69 66 20 28 63 6f 6e 6e 65 63 74 69 6f 6e 2e   if (connection.
13f0: 57 61 69 74 46 6f 72 45 6e 6c 69 73 74 6d 65 6e  WaitForEnlistmen
1400: 74 52 65 73 65 74 28 31 29 29 0d 0a 20 20 20 20  tReset(1))..    
1410: 20 20 20 20 20 20 20 20 20 20 49 6e 74 65 72 6c            Interl
1420: 6f 63 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28  ocked.Increment(
1430: 72 65 66 20 72 65 73 65 74 43 6f 75 6e 74 29 3b  ref resetCount);
1440: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c  ..            el
1450: 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
1460: 20 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 49 6e    Interlocked.In
1470: 63 72 65 6d 65 6e 74 28 72 65 66 20 74 69 6d 65  crement(ref time
1480: 6f 75 74 43 6f 75 6e 74 29 3b 0d 0a 0d 0a 20 20  outCount);....  
1490: 20 20 20 20 20 20 20 20 20 20 54 68 72 65 61 64            Thread
14a0: 2e 53 6c 65 65 70 28 72 61 6e 64 6f 6d 2e 4e 65  .Sleep(random.Ne
14b0: 78 74 28 31 30 30 29 29 3b 0d 0a 20 20 20 20 20  xt(100));..     
14c0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
14d0: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
14e0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
14f0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1530: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1540: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
1550: 69 63 20 53 74 61 74 69 63 20 4d 65 74 68 6f 64  ic Static Method
1560: 73 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  s..        publi
1570: 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  c static string 
1580: 44 6f 54 65 73 74 28 29 0d 0a 20 20 20 20 20 20  DoTest()..      
1590: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 75    {..          u
15a0: 73 69 6e 67 20 28 53 51 4c 69 74 65 43 6f 6e 6e  sing (SQLiteConn
15b0: 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f  ection connectio
15c0: 6e 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 43 6f  n = new SQLiteCo
15d0: 6e 6e 65 63 74 69 6f 6e 28 0d 0a 20 20 20 20 20  nnection(..     
15e0: 20 20 20 20 20 20 20 20 20 22 44 61 74 61 20 53           "Data S
15f0: 6f 75 72 63 65 3d 24 7b 64 61 74 61 53 6f 75 72  ource=${dataSour
1600: 63 65 7d 3b 5b 67 65 74 54 65 73 74 50 72 6f 70  ce};[getTestProp
1610: 65 72 74 69 65 73 5d 22 29 29 0d 0a 20 20 20 20  erties]"))..    
1620: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1630: 20 20 20 20 20 54 68 72 65 61 64 50 6f 6f 6c 2e       ThreadPool.
1640: 51 75 65 75 65 55 73 65 72 57 6f 72 6b 49 74 65  QueueUserWorkIte
1650: 6d 28 57 61 69 74 4f 6e 45 6e 6c 69 73 74 6d 65  m(WaitOnEnlistme
1660: 6e 74 73 2c 20 63 6f 6e 6e 65 63 74 69 6f 6e 29  nts, connection)
1670: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1680: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 4f 70 65 6e   connection.Open
1690: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
16a0: 20 20 20 44 6f 54 72 61 6e 73 61 63 74 69 6f 6e     DoTransaction
16b0: 73 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 3b 0d 0a  s(connection);..
16c0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
16d0: 20 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f 75           int cou
16e0: 6e 74 31 20 3d 20 49 6e 74 65 72 6c 6f 63 6b 65  nt1 = Interlocke
16f0: 64 2e 43 6f 6d 70 61 72 65 45 78 63 68 61 6e 67  d.CompareExchang
1700: 65 28 72 65 66 20 72 65 73 65 74 43 6f 75 6e 74  e(ref resetCount
1710: 2c 20 30 2c 20 30 29 3b 0d 0a 20 20 20 20 20 20  , 0, 0);..      
1720: 20 20 20 20 69 6e 74 20 63 6f 75 6e 74 32 20 3d      int count2 =
1730: 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e 43 6f 6d   Interlocked.Com
1740: 70 61 72 65 45 78 63 68 61 6e 67 65 28 72 65 66  pareExchange(ref
1750: 20 74 69 6d 65 6f 75 74 43 6f 75 6e 74 2c 20 30   timeoutCount, 0
1760: 2c 20 30 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  , 0);....       
1770: 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67     return String
1780: 2e 46 6f 72 6d 61 74 28 22 7b 30 7d 2c 20 7b 31  .Format("{0}, {1
1790: 7d 22 2c 20 63 6f 75 6e 74 31 2c 20 63 6f 75 6e  }", count1, coun
17a0: 74 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  t2);..        }.
17b0: 0a 0d 0a 20 20 20 20 20 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1800: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
1810: 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64  blic static void
1820: 20 4d 61 69 6e 28 29 0d 0a 20 20 20 20 20 20 20   Main()..       
1830: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 2f   {..          //
1840: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
1850: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1860: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
1870: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d     }..    }..  }
1880: 5d 20 74 72 75 65 20 74 72 75 65 20 74 72 75 65  ] true true true
1890: 20 72 65 73 75 6c 74 73 20 65 72 72 6f 72 73 20   results errors 
18a0: 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
18b0: 74 65 2e 64 6c 6c 5d 0d 0a 0d 0a 20 20 6c 69 73  te.dll]....  lis
18c0: 74 20 24 63 6f 64 65 20 24 72 65 73 75 6c 74 73  t $code $results
18d0: 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78 70 72 20   \..      [expr 
18e0: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 65 72  {[info exists er
18f0: 72 6f 72 73 5d 20 3f 20 24 65 72 72 6f 72 73 20  rors] ? $errors 
1900: 3a 20 22 22 7d 5d 20 5c 0d 0a 20 20 20 20 20 20  : ""}] \..      
1910: 5b 65 78 70 72 20 7b 24 63 6f 64 65 20 65 71 20  [expr {$code eq 
1920: 22 4f 6b 22 20 3f 20 5b 63 61 74 63 68 20 7b 0d  "Ok" ? [catch {.
1930: 0a 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20  .        object 
1940: 69 6e 76 6f 6b 65 20 5f 44 79 6e 61 6d 69 63 24  invoke _Dynamic$
1950: 7b 69 64 7d 2e 54 65 73 74 24 7b 69 64 7d 20 44  {id}.Test${id} D
1960: 6f 54 65 73 74 0d 0a 20 20 20 20 20 20 7d 20 72  oTest..      } r
1970: 65 73 75 6c 74 5d 20 3a 20 5b 73 65 74 20 72 65  esult] : [set re
1980: 73 75 6c 74 20 22 22 5d 7d 5d 20 5c 0d 0a 20 20  sult ""]}] \..  
1990: 20 20 20 20 5b 65 78 70 72 20 7b 5b 6c 69 6e 64      [expr {[lind
19a0: 65 78 20 24 72 65 73 75 6c 74 20 30 5d 20 3e 20  ex $result 0] > 
19b0: 30 7d 5d 20 5c 0d 0a 20 20 20 20 20 20 5b 65 78  0}] \..      [ex
19c0: 70 72 20 7b 5b 6c 69 6e 64 65 78 20 24 72 65 73  pr {[lindex $res
19d0: 75 6c 74 20 31 5d 20 3e 20 30 7d 5d 0d 0a 7d 20  ult 1] > 0}]..} 
19e0: 2d 63 6c 65 61 6e 75 70 20 7b 0d 0a 20 20 63 6c  -cleanup {..  cl
19f0: 65 61 6e 75 70 44 62 20 24 66 69 6c 65 4e 61 6d  eanupDb $fileNam
1a00: 65 0d 0a 0d 0a 20 20 75 6e 73 65 74 20 2d 6e 6f  e....  unset -no
1a10: 63 6f 6d 70 6c 61 69 6e 20 72 65 73 75 6c 74 20  complain result 
1a20: 72 65 73 75 6c 74 73 20 65 72 72 6f 72 73 20 63  results errors c
1a30: 6f 64 65 20 64 61 74 61 53 6f 75 72 63 65 20 69  ode dataSource i
1a40: 64 20 64 62 20 66 69 6c 65 4e 61 6d 65 0d 0a 7d  d db fileName..}
1a50: 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 65   -constraints {e
1a60: 61 67 6c 65 20 63 6f 6d 6d 61 6e 64 2e 6f 62 6a  agle command.obj
1a70: 65 63 74 20 6d 6f 6e 6f 42 75 67 32 31 31 20 6d  ect monoBug211 m
1a80: 6f 6e 6f 42 75 67 35 34 20 63 6f 6d 6d 61 6e 64  onoBug54 command
1a90: 2e 73 71 6c 5c 0d 0a 63 6f 6d 70 69 6c 65 2e 44  .sql\..compile.D
1aa0: 41 54 41 20 53 51 4c 69 74 65 20 53 79 73 74 65  ATA SQLite Syste
1ab0: 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 20 63 6f  m.Data.SQLite co
1ac0: 6d 70 69 6c 65 43 53 68 61 72 70 7d 20 2d 6d 61  mpileCSharp} -ma
1ad0: 74 63 68 20 72 65 67 65 78 70 20 2d 72 65 73 75  tch regexp -resu
1ae0: 6c 74 20 5c 0d 0a 7b 5e 4f 6b 20 53 79 73 74 65  lt \..{^Ok Syste
1af0: 6d 23 43 6f 64 65 44 6f 6d 23 43 6f 6d 70 69 6c  m#CodeDom#Compil
1b00: 65 72 23 43 6f 6d 70 69 6c 65 72 52 65 73 75 6c  er#CompilerResul
1b10: 74 73 23 5c 64 2b 20 5c 7b 5c 7d 20 30 20 54 72  ts#\d+ \{\} 0 Tr
1b20: 75 65 20 54 72 75 65 24 7d 7d 0d 0a 0d 0a 23 23  ue True$}}....##
1b30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
1b70: 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d  #############...
1b80: 0a 72 75 6e 53 51 4c 69 74 65 54 65 73 74 45 70  .runSQLiteTestEp
1b90: 69 6c 6f 67 75 65 0d 0a 72 75 6e 54 65 73 74 45  ilogue..runTestE
1ba0: 70 69 6c 6f 67 75 65 0d 0a                       pilogue..