System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact e2659b30b0cbf8e4097906949850146d884dccd0:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 4a 6f   * Written by Jo
0080: 65 20 4d 69 73 74 61 63 68 6b 69 6e 20 28 6a 6f  e Mistachkin (jo
0090: 65 40 6d 69 73 74 61 63 68 6b 69 6e 2e 63 6f 6d  e@mistachkin.com
00a0: 29 0d 0a 20 2a 0d 0a 20 2a 20 52 65 6c 65 61 73  ).. *.. * Releas
00b0: 65 64 20 74 6f 20 74 68 65 20 70 75 62 6c 69 63  ed to the public
00c0: 20 64 6f 6d 61 69 6e 2c 20 75 73 65 20 61 74 20   domain, use at 
00d0: 79 6f 75 72 20 6f 77 6e 20 72 69 73 6b 21 0d 0a  your own risk!..
00e0: 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a   ***************
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0d 0a 0d 0a 75 73  *********/....us
0120: 69 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65  ing System.Colle
0130: 63 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d  ctions.Generic;.
0140: 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 49 4f  .using System.IO
0150: 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  ;..using System.
0160: 47 6c 6f 62 61 6c 69 7a 61 74 69 6f 6e 3b 0d 0a  Globalization;..
0170: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e  using System.Run
0180: 74 69 6d 65 2e 49 6e 74 65 72 6f 70 53 65 72 76  time.InteropServ
0190: 69 63 65 73 3b 0d 0a 0d 0a 6e 61 6d 65 73 70 61  ices;....namespa
01a0: 63 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  ce System.Data.S
01b0: 51 4c 69 74 65 0d 0a 7b 0d 0a 20 20 20 20 23 72  QLite..{..    #r
01c0: 65 67 69 6f 6e 20 53 65 73 73 69 6f 6e 20 45 78  egion Session Ex
01d0: 74 65 6e 73 69 6f 6e 20 45 6e 75 6d 65 72 61 74  tension Enumerat
01e0: 69 6f 6e 73 0d 0a 20 20 20 20 70 75 62 6c 69 63  ions..    public
01f0: 20 65 6e 75 6d 20 53 51 4c 69 74 65 43 68 61 6e   enum SQLiteChan
0200: 67 65 53 65 74 43 6f 6e 66 6c 69 63 74 54 79 70  geSetConflictTyp
0210: 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  e..    {..      
0220: 20 20 44 61 74 61 20 3d 20 31 2c 0d 0a 20 20 20    Data = 1,..   
0230: 20 20 20 20 20 4e 6f 74 46 6f 75 6e 64 20 3d 20       NotFound = 
0240: 32 2c 0d 0a 20 20 20 20 20 20 20 20 43 6f 6e 66  2,..        Conf
0250: 6c 69 63 74 20 3d 20 33 2c 0d 0a 20 20 20 20 20  lict = 3,..     
0260: 20 20 20 43 6f 6e 73 74 72 61 69 6e 74 20 3d 20     Constraint = 
0270: 34 2c 0d 0a 20 20 20 20 20 20 20 20 46 6f 72 65  4,..        Fore
0280: 69 67 6e 4b 65 79 20 3d 20 35 0d 0a 20 20 20 20  ignKey = 5..    
0290: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
02a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
02b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
02c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
02d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
02e0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 75 62 6c  ////....    publ
02f0: 69 63 20 65 6e 75 6d 20 53 51 4c 69 74 65 43 68  ic enum SQLiteCh
0300: 61 6e 67 65 53 65 74 43 6f 6e 66 6c 69 63 74 52  angeSetConflictR
0310: 65 73 75 6c 74 0d 0a 20 20 20 20 7b 0d 0a 20 20  esult..    {..  
0320: 20 20 20 20 20 20 4f 6d 69 74 20 3d 20 30 2c 0d        Omit = 0,.
0330: 0a 20 20 20 20 20 20 20 20 52 65 70 6c 61 63 65  .        Replace
0340: 20 3d 20 31 2c 0d 0a 20 20 20 20 20 20 20 20 41   = 1,..        A
0350: 62 6f 72 74 20 3d 20 32 0d 0a 20 20 20 20 7d 0d  bort = 2..    }.
0360: 0a 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d  .    #endregion.
0370: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
0380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03c0: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
03d0: 6e 20 53 65 73 73 69 6f 6e 20 45 78 74 65 6e 73  n Session Extens
03e0: 69 6f 6e 20 44 65 6c 65 67 61 74 65 73 0d 0a 20  ion Delegates.. 
03f0: 20 20 20 70 75 62 6c 69 63 20 64 65 6c 65 67 61     public delega
0400: 74 65 20 62 6f 6f 6c 20 54 61 62 6c 65 46 69 6c  te bool TableFil
0410: 74 65 72 44 65 6c 65 67 61 74 65 28 0d 0a 20 20  terDelegate(..  
0420: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 63 6f 6e        object con
0430: 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 73  text,..        s
0440: 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20  tring name..    
0450: 29 3b 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  );....    //////
0460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
04a0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 75 62  /////....    pub
04b0: 6c 69 63 20 64 65 6c 65 67 61 74 65 20 53 51 4c  lic delegate SQL
04c0: 69 74 65 43 68 61 6e 67 65 53 65 74 43 6f 6e 66  iteChangeSetConf
04d0: 6c 69 63 74 52 65 73 75 6c 74 20 43 6f 6e 66 6c  lictResult Confl
04e0: 69 63 74 44 65 6c 65 67 61 74 65 28 0d 0a 20 20  ictDelegate(..  
04f0: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 63 6f 6e        object con
0500: 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 53  text,..        S
0510: 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 43 6f  QLiteChangeSetCo
0520: 6e 66 6c 69 63 74 54 79 70 65 20 74 79 70 65 2c  nflictType type,
0530: 0d 0a 20 20 20 20 20 20 20 20 49 53 51 4c 69 74  ..        ISQLit
0540: 65 43 68 61 6e 67 65 53 65 74 4d 65 74 61 64 61  eChangeSetMetada
0550: 74 61 49 74 65 6d 20 69 74 65 6d 0d 0a 20 20 20  taItem item..   
0560: 20 29 3b 0d 0a 20 20 20 20 23 65 6e 64 72 65 67   );..    #endreg
0570: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
0580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
05a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
05d0: 65 67 69 6f 6e 20 53 65 73 73 69 6f 6e 20 45 78  egion Session Ex
05e0: 74 65 6e 73 69 6f 6e 20 49 6e 74 65 72 66 61 63  tension Interfac
05f0: 65 73 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 69  es..    public i
0600: 6e 74 65 72 66 61 63 65 20 49 53 51 4c 69 74 65  nterface ISQLite
0610: 43 68 61 6e 67 65 53 65 74 0d 0a 20 20 20 20 7b  ChangeSet..    {
0620: 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20  ..        bool? 
0630: 49 73 50 61 74 63 68 53 65 74 20 7b 20 67 65 74  IsPatchSet { get
0640: 3b 20 7d 0a 0a 20 20 20 20 20 20 20 20 76 6f 69  ; }..        voi
0650: 64 20 41 70 70 6c 79 28 53 51 4c 69 74 65 43 6f  d Apply(SQLiteCo
0660: 6e 6e 65 63 74 69 6f 6e 20 63 6f 6e 6e 65 63 74  nnection connect
0670: 69 6f 6e 2c 20 43 6f 6e 66 6c 69 63 74 44 65 6c  ion, ConflictDel
0680: 65 67 61 74 65 20 63 6f 6e 66 6c 69 63 74 43 61  egate conflictCa
0690: 6c 6c 62 61 63 6b 29 3b 0d 0a 20 20 20 20 20 20  llback);..      
06a0: 20 20 76 6f 69 64 20 41 70 70 6c 79 28 53 51 4c    void Apply(SQL
06b0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f  iteConnection co
06c0: 6e 6e 65 63 74 69 6f 6e 2c 20 43 6f 6e 66 6c 69  nnection, Confli
06d0: 63 74 44 65 6c 65 67 61 74 65 20 63 6f 6e 66 6c  ctDelegate confl
06e0: 69 63 74 43 61 6c 6c 62 61 63 6b 2c 20 54 61 62  ictCallback, Tab
06f0: 6c 65 46 69 6c 74 65 72 44 65 6c 65 67 61 74 65  leFilterDelegate
0700: 20 74 61 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c   tableFilterCall
0710: 62 61 63 6b 29 3b 0a 0a 20 20 20 20 20 20 20 20  back);..        
0720: 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74  ISQLiteChangeSet
0730: 20 49 6e 76 65 72 74 28 29 3b 0a 0a 20 20 20 20   Invert();..    
0740: 20 20 20 20 49 53 51 4c 69 74 65 43 68 61 6e 67      ISQLiteChang
0750: 65 53 65 74 20 43 6f 6d 62 69 6e 65 57 69 74 68  eSet CombineWith
0760: 28 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65  (ISQLiteChangeSe
0770: 74 20 63 68 61 6e 67 65 53 65 74 29 3b 0a 20 20  t changeSet);.  
0780: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
0790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 70 75  //////....    pu
07e0: 62 6c 69 63 20 69 6e 74 65 72 66 61 63 65 20 49  blic interface I
07f0: 53 51 4c 69 74 65 43 68 61 6e 67 65 47 72 6f 75  SQLiteChangeGrou
0800: 70 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  p..    {..      
0810: 20 20 76 6f 69 64 20 41 64 64 43 68 61 6e 67 65    void AddChange
0820: 53 65 74 28 62 79 74 65 5b 5d 20 72 61 77 44 61  Set(byte[] rawDa
0830: 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 76 6f  ta);..        vo
0840: 69 64 20 41 64 64 43 68 61 6e 67 65 53 65 74 28  id AddChangeSet(
0850: 53 74 72 65 61 6d 20 73 74 72 65 61 6d 29 3b 0d  Stream stream);.
0860: 0a 0d 0a 20 20 20 20 20 20 20 20 76 6f 69 64 20  ...        void 
0870: 43 72 65 61 74 65 43 68 61 6e 67 65 53 65 74 28  CreateChangeSet(
0880: 72 65 66 20 62 79 74 65 5b 5d 20 72 61 77 44 61  ref byte[] rawDa
0890: 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 76 6f  ta);..        vo
08a0: 69 64 20 43 72 65 61 74 65 43 68 61 6e 67 65 53  id CreateChangeS
08b0: 65 74 28 53 74 72 65 61 6d 20 73 74 72 65 61 6d  et(Stream stream
08c0: 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  , SQLiteConnecti
08d0: 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 29 3b 0d  onFlags flags);.
08e0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
08f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
0940: 20 70 75 62 6c 69 63 20 69 6e 74 65 72 66 61 63   public interfac
0950: 65 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53  e ISQLiteChangeS
0960: 65 74 4d 65 74 61 64 61 74 61 49 74 65 6d 0d 0a  etMetadataItem..
0970: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 53      {..        S
0980: 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 41  QLiteAuthorizerA
0990: 63 74 69 6f 6e 43 6f 64 65 20 4f 70 65 72 61 74  ctionCode Operat
09a0: 69 6f 6e 43 6f 64 65 20 7b 20 67 65 74 3b 20 7d  ionCode { get; }
09b0: 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e 67  ..        string
09c0: 20 54 61 62 6c 65 4e 61 6d 65 20 7b 20 67 65 74   TableName { get
09d0: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 69 6e 74  ; }..        int
09e0: 20 4e 75 6d 62 65 72 4f 66 43 6f 6c 75 6d 6e 73   NumberOfColumns
09f0: 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20 20   { get; }..     
0a00: 20 20 20 62 6f 6f 6c 20 49 6e 64 69 72 65 63 74     bool Indirect
0a10: 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20 20   { get; }..     
0a20: 20 20 20 62 6f 6f 6c 5b 5d 20 50 72 69 6d 61 72     bool[] Primar
0a30: 79 4b 65 79 43 6f 6c 75 6d 6e 73 20 7b 20 67 65  yKeyColumns { ge
0a40: 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t; }....        
0a50: 53 51 4c 69 74 65 56 61 6c 75 65 20 47 65 74 4f  SQLiteValue GetO
0a60: 6c 64 56 61 6c 75 65 28 69 6e 74 20 63 6f 6c 75  ldValue(int colu
0a70: 6d 6e 49 6e 64 65 78 29 3b 0d 0a 20 20 20 20 20  mnIndex);..     
0a80: 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65 20 47     SQLiteValue G
0a90: 65 74 4e 65 77 56 61 6c 75 65 28 69 6e 74 20 63  etNewValue(int c
0aa0: 6f 6c 75 6d 6e 49 6e 64 65 78 29 3b 0d 0a 0d 0a  olumnIndex);....
0ab0: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 56 61          SQLiteVa
0ac0: 6c 75 65 20 47 65 74 43 6f 6e 66 6c 69 63 74 56  lue GetConflictV
0ad0: 61 6c 75 65 28 69 6e 74 20 63 6f 6c 75 6d 6e 49  alue(int columnI
0ae0: 6e 64 65 78 29 3b 0d 0a 20 20 20 20 20 20 20 20  ndex);..        
0af0: 69 6e 74 20 4e 75 6d 62 65 72 4f 66 46 6f 72 65  int NumberOfFore
0b00: 69 67 6e 4b 65 79 43 6f 6e 66 6c 69 63 74 73 20  ignKeyConflicts 
0b10: 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20 7d 0d  { get; }..    }.
0b20: 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f  ...    /////////
0b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0b70: 2f 2f 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69 63  //....    public
0b80: 20 69 6e 74 65 72 66 61 63 65 20 49 53 51 4c 69   interface ISQLi
0b90: 74 65 53 65 73 73 69 6f 6e 0d 0a 20 20 20 20 7b  teSession..    {
0ba0: 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 49  ..        bool I
0bb0: 73 45 6e 61 62 6c 65 64 28 29 3b 0d 0a 20 20 20  sEnabled();..   
0bc0: 20 20 20 20 20 76 6f 69 64 20 53 65 74 54 6f 45       void SetToE
0bd0: 6e 61 62 6c 65 64 28 29 3b 0d 0a 20 20 20 20 20  nabled();..     
0be0: 20 20 20 76 6f 69 64 20 53 65 74 54 6f 44 69 73     void SetToDis
0bf0: 61 62 6c 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  abled();....    
0c00: 20 20 20 20 62 6f 6f 6c 20 49 73 49 6e 64 69 72      bool IsIndir
0c10: 65 63 74 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ect();..        
0c20: 76 6f 69 64 20 53 65 74 54 6f 49 6e 64 69 72 65  void SetToIndire
0c30: 63 74 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 76  ct();..        v
0c40: 6f 69 64 20 53 65 74 54 6f 44 69 72 65 63 74 28  oid SetToDirect(
0c50: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 62 6f  );....        bo
0c60: 6f 6c 20 49 73 45 6d 70 74 79 28 29 3b 0d 0a 0d  ol IsEmpty();...
0c70: 0a 20 20 20 20 20 20 20 20 76 6f 69 64 20 41 74  .        void At
0c80: 74 61 63 68 54 61 62 6c 65 28 73 74 72 69 6e 67  tachTable(string
0c90: 20 6e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20   name);..       
0ca0: 20 76 6f 69 64 20 53 65 74 54 61 62 6c 65 46 69   void SetTableFi
0cb0: 6c 74 65 72 28 54 61 62 6c 65 46 69 6c 74 65 72  lter(TableFilter
0cc0: 44 65 6c 65 67 61 74 65 20 63 61 6c 6c 62 61 63  Delegate callbac
0cd0: 6b 2c 20 6f 62 6a 65 63 74 20 63 6f 6e 74 65 78  k, object contex
0ce0: 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 76  t);....        v
0cf0: 6f 69 64 20 43 72 65 61 74 65 43 68 61 6e 67 65  oid CreateChange
0d00: 53 65 74 28 72 65 66 20 62 79 74 65 5b 5d 20 72  Set(ref byte[] r
0d10: 61 77 44 61 74 61 29 3b 0d 0a 20 20 20 20 20 20  awData);..      
0d20: 20 20 76 6f 69 64 20 43 72 65 61 74 65 43 68 61    void CreateCha
0d30: 6e 67 65 53 65 74 28 53 74 72 65 61 6d 20 73 74  ngeSet(Stream st
0d40: 72 65 61 6d 2c 20 53 51 4c 69 74 65 43 6f 6e 6e  ream, SQLiteConn
0d50: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
0d60: 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 76  s);....        v
0d70: 6f 69 64 20 43 72 65 61 74 65 50 61 74 63 68 53  oid CreatePatchS
0d80: 65 74 28 72 65 66 20 62 79 74 65 5b 5d 20 72 61  et(ref byte[] ra
0d90: 77 44 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20  wData);..       
0da0: 20 76 6f 69 64 20 43 72 65 61 74 65 50 61 74 63   void CreatePatc
0db0: 68 53 65 74 28 53 74 72 65 61 6d 20 73 74 72 65  hSet(Stream stre
0dc0: 61 6d 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  am, SQLiteConnec
0dd0: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 29  tionFlags flags)
0de0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 76 6f 69  ;....        voi
0df0: 64 20 4c 6f 61 64 44 69 66 66 65 72 65 6e 63 65  d LoadDifference
0e00: 73 46 72 6f 6d 54 61 62 6c 65 28 73 74 72 69 6e  sFromTable(strin
0e10: 67 20 66 72 6f 6d 44 61 74 61 62 61 73 65 4e 61  g fromDatabaseNa
0e20: 6d 65 2c 20 73 74 72 69 6e 67 20 74 61 62 6c 65  me, string table
0e30: 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 7d 0d 0a 20  Name);..    }.. 
0e40: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
0e50: 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  .    ///////////
0e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ea0: 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20  ....    #region 
0eb0: 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 49  SQLiteChangeSetI
0ec0: 74 65 72 61 74 6f 72 20 43 6c 61 73 73 0d 0a 20  terator Class.. 
0ed0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c     internal seal
0ee0: 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43  ed class SQLiteC
0ef0: 68 61 6e 67 65 53 65 74 49 74 65 72 61 74 6f 72  hangeSetIterator
0f00: 20 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a   : IDisposable..
0f10: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
0f20: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44  region Private D
0f30: 61 74 61 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ata..        pri
0f40: 76 61 74 65 20 49 6e 74 50 74 72 20 70 44 61 74  vate IntPtr pDat
0f50: 61 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  a;..        priv
0f60: 61 74 65 20 49 6e 74 50 74 72 20 69 74 65 72 61  ate IntPtr itera
0f70: 74 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 23 65  tor;..        #e
0f80: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
0f90: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
0fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
0fe0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
0ff0: 72 69 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74  rivate Construct
1000: 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ors..        pri
1010: 76 61 74 65 20 53 51 4c 69 74 65 43 68 61 6e 67  vate SQLiteChang
1020: 65 53 65 74 49 74 65 72 61 74 6f 72 28 0d 0a 20  eSetIterator(.. 
1030: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
1040: 72 20 70 44 61 74 61 2c 0d 0a 20 20 20 20 20 20  r pData,..      
1050: 20 20 20 20 20 20 49 6e 74 50 74 72 20 69 74 65        IntPtr ite
1060: 72 61 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  rator..         
1070: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
1080: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
1090: 73 2e 70 44 61 74 61 20 3d 20 70 44 61 74 61 3b  s.pData = pData;
10a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
10b0: 69 73 2e 69 74 65 72 61 74 6f 72 20 3d 20 69 74  is.iterator = it
10c0: 65 72 61 74 6f 72 3b 0d 0a 20 20 20 20 20 20 20  erator;..       
10d0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
10e0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
10f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1140: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 74 61       #region Sta
1150: 74 69 63 20 22 46 61 63 74 6f 72 79 22 20 4d 65  tic "Factory" Me
1160: 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 70  thods..        p
1170: 75 62 6c 69 63 20 73 74 61 74 69 63 20 53 51 4c  ublic static SQL
1180: 69 74 65 43 68 61 6e 67 65 53 65 74 49 74 65 72  iteChangeSetIter
1190: 61 74 6f 72 20 43 72 65 61 74 65 28 0d 0a 20 20  ator Create(..  
11a0: 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d            byte[]
11b0: 20 72 61 77 44 61 74 61 0d 0a 20 20 20 20 20 20   rawData..      
11c0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
11d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11e0: 69 66 20 28 72 61 77 44 61 74 61 20 3d 3d 20 6e  if (rawData == n
11f0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1200: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1210: 41 72 67 75 6d 65 6e 74 4e 75 6c 6c 45 78 63 65  ArgumentNullExce
1220: 70 74 69 6f 6e 28 22 72 61 77 44 61 74 61 22 29  ption("rawData")
1230: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1240: 20 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74   SQLiteChangeSet
1250: 49 74 65 72 61 74 6f 72 20 72 65 73 75 6c 74 20  Iterator result 
1260: 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  = null;..       
1270: 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 61 74       IntPtr pDat
1280: 61 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  a = IntPtr.Zero;
1290: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
12a0: 74 50 74 72 20 69 74 65 72 61 74 6f 72 20 3d 20  tPtr iterator = 
12b0: 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a  IntPtr.Zero;....
12c0: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
12d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
12e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f0: 69 6e 74 20 6e 44 61 74 61 20 3d 20 30 3b 0d 0a  int nData = 0;..
1300: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1310: 20 20 70 44 61 74 61 20 3d 20 53 51 4c 69 74 65    pData = SQLite
1320: 42 79 74 65 73 2e 54 6f 49 6e 74 50 74 72 28 72  Bytes.ToIntPtr(r
1330: 61 77 44 61 74 61 2c 20 72 65 66 20 6e 44 61 74  awData, ref nDat
1340: 61 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  a);....         
1350: 20 20 20 20 20 20 20 69 66 20 28 70 44 61 74 61         if (pData
1360: 20 3d 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   == IntPtr.Zero)
1370: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1380: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
1390: 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28  SQLiteException(
13a0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
13b0: 4e 6f 4d 65 6d 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d  NoMem, null);...
13c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13d0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
13e0: 20 72 63 20 3d 20 55 6e 73 61 66 65 4e 61 74 69   rc = UnsafeNati
13f0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
1400: 33 63 68 61 6e 67 65 73 65 74 5f 73 74 61 72 74  3changeset_start
1410: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1420: 20 20 20 20 20 20 20 72 65 66 20 69 74 65 72 61         ref itera
1430: 74 6f 72 2c 20 6e 44 61 74 61 2c 20 70 44 61 74  tor, nData, pDat
1440: 61 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  a);....         
1450: 20 20 20 20 20 20 20 69 66 20 28 72 63 20 21 3d         if (rc !=
1460: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
1470: 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20 20 20 20  .Ok)..          
1480: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1490: 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74  new SQLiteExcept
14a0: 69 6f 6e 28 72 63 2c 20 22 73 71 6c 69 74 65 33  ion(rc, "sqlite3
14b0: 63 68 61 6e 67 65 73 65 74 5f 73 74 61 72 74 22  changeset_start"
14c0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
14d0: 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 6e        result = n
14e0: 65 77 20 53 51 4c 69 74 65 43 68 61 6e 67 65 53  ew SQLiteChangeS
14f0: 65 74 49 74 65 72 61 74 6f 72 28 70 44 61 74 61  etIterator(pData
1500: 2c 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a 20 20  , iterator);..  
1510: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1520: 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
1530: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1550: 20 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 6e   if (result == n
1560: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1570: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1580: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1590: 28 69 74 65 72 61 74 6f 72 20 21 3d 20 49 6e 74  (iterator != Int
15a0: 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20  Ptr.Zero)..     
15b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
15c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15d0: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
15e0: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71  NativeMethods.sq
15f0: 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 66  lite3changeset_f
1600: 69 6e 61 6c 69 7a 65 28 0d 0a 20 20 20 20 20 20  inalize(..      
1610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1620: 20 20 20 20 20 20 69 74 65 72 61 74 6f 72 29 3b        iterator);
1630: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1640: 20 20 20 20 20 20 20 20 20 20 20 20 69 74 65 72              iter
1650: 61 74 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65  ator = IntPtr.Ze
1660: 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
1670: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1690: 20 20 69 66 20 28 70 44 61 74 61 20 21 3d 20 49    if (pData != I
16a0: 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20 20  ntPtr.Zero)..   
16b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
16d0: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
16e0: 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 44  teMemory.Free(pD
16f0: 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ata);..         
1700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
1710: 44 61 74 61 20 3d 20 49 6e 74 50 74 72 2e 5a 65  Data = IntPtr.Ze
1720: 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
1730: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1740: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1750: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
1760: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1770: 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20  rn result;..    
1780: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
1790: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
17a0: 20 20 20 20 20 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: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17f0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
1800: 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62  IDisposable Memb
1810: 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ers..        pub
1820: 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65  lic void Dispose
1830: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
1840: 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
1850: 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20  se(true);..     
1860: 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65         GC.Suppre
1870: 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
1880: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
1890: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
18a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
18b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18f0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
1900: 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
1910: 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d  le "Pattern" Mem
1920: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72  bers..        pr
1930: 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f  ivate bool dispo
1940: 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 70 72  sed;..        pr
1950: 69 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b  ivate void Check
1960: 44 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68  Disposed() /* th
1970: 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
1980: 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f  {..#if THROW_ON_
1990: 44 49 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20  DISPOSED..      
19a0: 20 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73        if (dispos
19b0: 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
19c0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
19d0: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62      throw new Ob
19e0: 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65  jectDisposedExce
19f0: 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
1a00: 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65              type
1a10: 6f 66 28 53 51 4c 69 74 65 43 68 61 6e 67 65 53  of(SQLiteChangeS
1a20: 65 74 49 74 65 72 61 74 6f 72 29 2e 4e 61 6d 65  etIterator).Name
1a30: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1a40: 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  }..#endif..     
1a50: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1ab0: 20 20 20 70 72 69 76 61 74 65 20 2f 2a 20 70 72     private /* pr
1ac0: 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
1ad0: 2a 2f 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  */ void Dispose(
1ae0: 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 29 0d  bool disposing).
1af0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
1b00: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
1b10: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1b20: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1b30: 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20  !disposed)..    
1b40: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b60: 20 20 20 2f 2f 69 66 20 28 64 69 73 70 6f 73 69     //if (disposi
1b70: 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng)..           
1b80: 20 20 20 20 20 20 20 20 20 2f 2f 7b 0d 0a 20 20           //{..  
1b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ba0: 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f    //    ////////
1bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
1bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be0: 20 20 2f 2f 20 20 20 20 2f 2f 20 64 69 73 70 6f    //    // dispo
1bf0: 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75  se managed resou
1c00: 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
1c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c20: 20 20 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f    //    ////////
1c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
1c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c60: 20 20 2f 2f 7d 0d 0a 0d 0a 20 20 20 20 20 20 20    //}....       
1c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
1c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca0: 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ///..           
1cb0: 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65           // rele
1cc0: 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65  ase unmanaged re
1cd0: 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
1ce0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cf0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d30: 20 20 20 69 66 20 28 69 74 65 72 61 74 6f 72 20     if (iterator 
1d40: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
1d50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d60: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d80: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
1d90: 6f 64 73 2e 73 71 6c 69 74 65 33 63 68 61 6e 67  ods.sqlite3chang
1da0: 65 73 65 74 5f 66 69 6e 61 6c 69 7a 65 28 0d 0a  eset_finalize(..
1db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc0: 20 20 20 20 20 20 20 20 20 20 20 20 69 74 65 72              iter
1dd0: 61 74 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ator);....      
1de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df0: 20 20 69 74 65 72 61 74 6f 72 20 3d 20 49 6e 74    iterator = Int
1e00: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
1e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1e20: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1e30: 20 20 20 20 20 20 20 20 69 66 20 28 70 44 61 74          if (pDat
1e40: 61 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  a != IntPtr.Zero
1e50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1e60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e80: 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
1e90: 72 65 65 28 70 44 61 74 61 29 3b 0d 0a 20 20 20  ree(pData);..   
1ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb0: 20 20 20 20 20 70 44 61 74 61 20 3d 20 49 6e 74       pData = Int
1ec0: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
1ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1ee0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ef0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1f00: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1f10: 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
1f20: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1f30: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1f40: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
1f50: 4f 54 45 3a 20 45 76 65 72 79 74 68 69 6e 67 20  OTE: Everything 
1f60: 73 68 6f 75 6c 64 20 62 65 20 66 75 6c 6c 79 20  should be fully 
1f70: 64 69 73 70 6f 73 65 64 20 61 74 20 74 68 69 73  disposed at this
1f80: 20 70 6f 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20   point...       
1f90: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73               dis
1fb0: 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  posed = true;.. 
1fc0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1fd0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1fe0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1ff0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2040: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
2050: 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20  n Destructor..  
2060: 20 20 20 20 20 20 7e 53 51 4c 69 74 65 43 68 61        ~SQLiteCha
2070: 6e 67 65 53 65 74 49 74 65 72 61 74 6f 72 28 29  ngeSetIterator()
2080: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2090: 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65           Dispose
20a0: 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20  (false);..      
20b0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
20c0: 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
20d0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
20e0: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
20f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2130: 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
2140: 20 53 51 4c 69 74 65 53 74 72 65 61 6d 41 64 61   SQLiteStreamAda
2150: 70 74 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20  pter Class..    
2160: 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
2170: 63 6c 61 73 73 20 53 51 4c 69 74 65 53 74 72 65  class SQLiteStre
2180: 61 6d 41 64 61 70 74 65 72 20 3a 20 49 44 69 73  amAdapter : IDis
2190: 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 7b 0d 0a  posable..    {..
21a0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
21b0: 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20  Private Data..  
21c0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 74        private St
21d0: 72 65 61 6d 20 73 74 72 65 61 6d 3b 0d 0a 20 20  ream stream;..  
21e0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
21f0: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
2200: 61 67 73 20 66 6c 61 67 73 3b 0d 0a 20 20 20 20  ags flags;..    
2210: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
2220: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
2230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2270: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
2280: 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73  gion Public Cons
2290: 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
22a0: 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 53    public SQLiteS
22b0: 74 72 65 61 6d 41 64 61 70 74 65 72 28 0d 0a 20  treamAdapter(.. 
22c0: 20 20 20 20 20 20 20 20 20 20 20 53 74 72 65 61             Strea
22d0: 6d 20 73 74 72 65 61 6d 2c 0d 0a 20 20 20 20 20  m stream,..     
22e0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e         SQLiteCon
22f0: 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61  nectionFlags fla
2300: 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  gs..            
2310: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
2320: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73            this.s
2330: 74 72 65 61 6d 20 3d 20 73 74 72 65 61 6d 3b 0d  tream = stream;.
2340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
2350: 73 2e 66 6c 61 67 73 20 3d 20 66 6c 61 67 73 3b  s.flags = flags;
2360: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2370: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2380: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
23d0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
23e0: 65 67 69 6f 6e 20 4e 61 74 69 76 65 20 43 61 6c  egion Native Cal
23f0: 6c 62 61 63 6b 20 4d 65 74 68 6f 64 73 0d 0a 20  lback Methods.. 
2400: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
2410: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 78 49  LiteErrorCode xI
2420: 6e 70 75 74 28 0d 0a 20 20 20 20 20 20 20 20 20  nput(..         
2430: 20 20 20 49 6e 74 50 74 72 20 63 6f 6e 74 65 78     IntPtr contex
2440: 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2450: 49 6e 74 50 74 72 20 70 44 61 74 61 2c 0d 0a 20  IntPtr pData,.. 
2460: 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 69             ref i
2470: 6e 74 20 6e 44 61 74 61 0d 0a 20 20 20 20 20 20  nt nData..      
2480: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2490: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
24a0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
24b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
24c0: 20 20 20 20 69 66 20 28 73 74 72 65 61 6d 20 3d      if (stream =
24d0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
24e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
24f0: 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
2500: 6f 64 65 2e 4d 69 73 75 73 65 3b 0d 0a 0d 0a 20  ode.Misuse;.... 
2510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2520: 66 20 28 6e 44 61 74 61 20 3e 20 30 29 0d 0a 20  f (nData > 0).. 
2530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2540: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2550: 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74        byte[] byt
2560: 65 73 20 3d 20 6e 65 77 20 62 79 74 65 5b 6e 44  es = new byte[nD
2570: 61 74 61 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ata];....       
2580: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 44 61               nDa
2590: 74 61 20 3d 20 73 74 72 65 61 6d 2e 52 65 61 64  ta = stream.Read
25a0: 28 62 79 74 65 73 2c 20 30 2c 20 6e 44 61 74 61  (bytes, 0, nData
25b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
25c0: 20 20 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e          Marshal.
25d0: 43 6f 70 79 28 62 79 74 65 73 2c 20 30 2c 20 70  Copy(bytes, 0, p
25e0: 44 61 74 61 2c 20 6e 44 61 74 61 29 3b 0d 0a 20  Data, nData);.. 
25f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2600: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2610: 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74      return SQLit
2620: 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 3b 0d 0a  eErrorCode.Ok;..
2630: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2640: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
2650: 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
2660: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2680: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
2690: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
26a0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
26b0: 66 6c 61 67 73 20 26 20 53 51 4c 69 74 65 43 6f  flags & SQLiteCo
26c0: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f  nnectionFlags.Lo
26d0: 67 43 61 6c 6c 62 61 63 6b 45 78 63 65 70 74 69  gCallbackExcepti
26e0: 6f 6e 29 20 3d 3d 0d 0a 20 20 20 20 20 20 20 20  on) ==..        
26f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2700: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
2710: 74 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 43 61 6c  tionFlags.LogCal
2720: 6c 62 61 63 6b 45 78 63 65 70 74 69 6f 6e 29 0d  lbackException).
2730: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2740: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2760: 53 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73  SQLiteLog.LogMes
2770: 73 61 67 65 28 53 51 4c 69 74 65 42 61 73 65 2e  sage(SQLiteBase.
2780: 43 4f 52 5f 45 5f 45 58 43 45 50 54 49 4f 4e 2c  COR_E_EXCEPTION,
2790: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48 65                He
27b0: 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53 74 72 69  lperMethods.Stri
27c0: 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74 75 72 65  ngFormat(Culture
27d0: 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43 75 6c 74  Info.CurrentCult
27e0: 75 72 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ure,..          
27f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2800: 20 20 22 43 61 75 67 68 74 20 65 78 63 65 70 74    "Caught except
2810: 69 6f 6e 20 69 6e 20 5c 22 78 49 6e 70 75 74 5c  ion in \"xInput\
2820: 22 20 6d 65 74 68 6f 64 3a 20 7b 30 7d 22 2c 0d  " method: {0}",.
2830: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2840: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 29 29               e))
2850: 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
2860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2870: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2880: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2890: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
28a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
28c0: 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
28d0: 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
28e0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
28f0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2900: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51         return SQ
2910: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 49 6f  LiteErrorCode.Io
2920: 45 72 72 5f 52 65 61 64 3b 0d 0a 20 20 20 20 20  Err_Read;..     
2930: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2980: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2990: 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
29a0: 45 72 72 6f 72 43 6f 64 65 20 78 4f 75 74 70 75  ErrorCode xOutpu
29b0: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
29c0: 49 6e 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 0d  IntPtr context,.
29d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
29e0: 50 74 72 20 70 44 61 74 61 2c 0d 0a 20 20 20 20  Ptr pData,..    
29f0: 20 20 20 20 20 20 20 20 69 6e 74 20 6e 44 61 74          int nDat
2a00: 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  a..            )
2a10: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2a20: 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
2a30: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2a50: 28 73 74 72 65 61 6d 20 3d 3d 20 6e 75 6c 6c 29  (stream == null)
2a60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a70: 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
2a80: 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4d 69 73  iteErrorCode.Mis
2a90: 75 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  use;....        
2aa0: 20 20 20 20 20 20 20 20 69 66 20 28 6e 44 61 74          if (nDat
2ab0: 61 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20 20  a > 0)..        
2ac0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
2ae0: 79 74 65 5b 5d 20 62 79 74 65 73 20 3d 20 6e 65  yte[] bytes = ne
2af0: 77 20 62 79 74 65 5b 6e 44 61 74 61 5d 3b 0d 0a  w byte[nData];..
2b00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b10: 20 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 43 6f        Marshal.Co
2b20: 70 79 28 70 44 61 74 61 2c 20 62 79 74 65 73 2c  py(pData, bytes,
2b30: 20 30 2c 20 6e 44 61 74 61 29 3b 0d 0a 20 20 20   0, nData);..   
2b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b50: 20 73 74 72 65 61 6d 2e 57 72 69 74 65 28 62 79   stream.Write(by
2b60: 74 65 73 2c 20 30 2c 20 6e 44 61 74 61 29 3b 0d  tes, 0, nData);.
2b70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b80: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2b90: 20 20 20 20 20 20 73 74 72 65 61 6d 2e 46 6c 75        stream.Flu
2ba0: 73 68 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  sh();....       
2bb0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2bc0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
2bd0: 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Ok;..           
2be0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2bf0: 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
2c00: 20 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   e)..           
2c10: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2c20: 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
2c30: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c50: 69 66 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c  if ((flags & SQL
2c60: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
2c70: 67 73 2e 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78  gs.LogCallbackEx
2c80: 63 65 70 74 69 6f 6e 29 20 3d 3d 0d 0a 20 20 20  ception) ==..   
2c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca0: 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 43           SQLiteC
2cb0: 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e 4c  onnectionFlags.L
2cc0: 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65 70 74  ogCallbackExcept
2cd0: 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ion)..          
2ce0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d00: 20 20 20 20 20 53 51 4c 69 74 65 4c 6f 67 2e 4c       SQLiteLog.L
2d10: 6f 67 4d 65 73 73 61 67 65 28 53 51 4c 69 74 65  ogMessage(SQLite
2d20: 42 61 73 65 2e 43 4f 52 5f 45 5f 45 58 43 45 50  Base.COR_E_EXCEP
2d30: 54 49 4f 4e 2c 0d 0a 20 20 20 20 20 20 20 20 20  TION,..         
2d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d50: 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73     HelperMethods
2d60: 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75  .StringFormat(Cu
2d70: 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e  ltureInfo.Curren
2d80: 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20  tCulture,..     
2d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2da0: 20 20 20 20 20 20 20 22 43 61 75 67 68 74 20 65         "Caught e
2db0: 78 63 65 70 74 69 6f 6e 20 69 6e 20 5c 22 78 4f  xception in \"xO
2dc0: 75 74 70 75 74 5c 22 20 6d 65 74 68 6f 64 3a 20  utput\" method: 
2dd0: 7b 30 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {0}",..         
2de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df0: 20 20 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77     e)); /* throw
2e00: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
2e10: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2e20: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
2e40: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
2e50: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2e70: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
2e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2e90: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2eb0: 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
2ec0: 6f 64 65 2e 49 6f 45 72 72 5f 57 72 69 74 65 3b  ode.IoErr_Write;
2ed0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
2ee0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2ef0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
2f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f40: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
2f50: 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c  egion IDisposabl
2f60: 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  e Members..     
2f70: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44     public void D
2f80: 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 20 20  ispose()..      
2f90: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2fa0: 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
2fb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 43 2e  .            GC.
2fc0: 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65  SuppressFinalize
2fd0: 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20  (this);..       
2fe0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
2ff0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
3000: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
3010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
3050: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69       #region IDi
3060: 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72  sposable "Patter
3070: 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  n" Members..    
3080: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
3090: 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20   disposed;..    
30a0: 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
30b0: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
30c0: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
30d0: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52        {..#if THR
30e0: 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a  OW_ON_DISPOSED..
30f0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3100: 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
3110: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3120: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
3130: 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73  new ObjectDispos
3140: 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20  edException(..  
3150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3160: 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65 53    typeof(SQLiteS
3170: 74 72 65 61 6d 41 64 61 70 74 65 72 29 2e 4e 61  treamAdapter).Na
3180: 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  me);..          
3190: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
31a0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
31b0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
31c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
3200: 20 20 20 20 20 70 72 69 76 61 74 65 20 2f 2a 20       private /* 
3210: 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
3220: 6c 20 2a 2f 20 76 6f 69 64 20 44 69 73 70 6f 73  l */ void Dispos
3230: 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67  e(bool disposing
3240: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
3250: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
3260: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
3270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
3280: 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20   (!disposed)..  
3290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
32a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32b0: 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 69       if (disposi
32c0: 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng)..           
32d0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
32e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32f0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
3300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3310: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
3320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3330: 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e    // dispose man
3340: 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
3350: 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
3360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3390: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
33a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33b0: 69 66 20 28 73 74 72 65 61 6d 20 21 3d 20 6e 75  if (stream != nu
33c0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
33d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33e0: 20 73 74 72 65 61 6d 20 3d 20 6e 75 6c 6c 3b 20   stream = null; 
33f0: 2f 2a 20 4e 4f 54 20 4f 57 4e 45 44 3a 20 44 6f  /* NOT OWNED: Do
3400: 20 6e 6f 74 20 64 69 73 70 6f 73 65 2e 20 2a 2f   not dispose. */
3410: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3420: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
3430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
3440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3460: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
3470: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65             // re
3480: 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20  lease unmanaged 
3490: 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
34a0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
34b0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
34c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
34e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
34f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
3500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
3510: 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
3520: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3530: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
3540: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
3550: 3a 20 45 76 65 72 79 74 68 69 6e 67 20 73 68 6f  : Everything sho
3560: 75 6c 64 20 62 65 20 66 75 6c 6c 79 20 64 69 73  uld be fully dis
3570: 70 6f 73 65 64 20 61 74 20 74 68 69 73 20 70 6f  posed at this po
3580: 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  int...          
3590: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
35a0: 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73            dispos
35b0: 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
35c0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
35d0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
35e0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
35f0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
3600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
3640: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
3650: 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20  estructor..     
3660: 20 20 20 7e 53 51 4c 69 74 65 53 74 72 65 61 6d     ~SQLiteStream
3670: 41 64 61 70 74 65 72 28 29 0d 0a 20 20 20 20 20  Adapter()..     
3680: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3690: 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29    Dispose(false)
36a0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
36b0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
36c0: 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e  ..    }..    #en
36d0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f  dregion....    /
36e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
3730: 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69 74 65    #region SQLite
3740: 53 65 73 73 69 6f 6e 20 43 6c 61 73 73 0d 0a 20  Session Class.. 
3750: 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64     public sealed
3760: 20 63 6c 61 73 73 20 53 51 4c 69 74 65 53 65 73   class SQLiteSes
3770: 73 69 6f 6e 20 3a 20 49 53 51 4c 69 74 65 53 65  sion : ISQLiteSe
3780: 73 73 69 6f 6e 2c 20 49 44 69 73 70 6f 73 61 62  ssion, IDisposab
3790: 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20  le..    {..     
37a0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
37b0: 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20  te Data..       
37c0: 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72 20   private IntPtr 
37d0: 73 65 73 73 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20  session;....    
37e0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
37f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
3830: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 54         private T
3840: 61 62 6c 65 46 69 6c 74 65 72 44 65 6c 65 67 61  ableFilterDelega
3850: 74 65 20 74 61 62 6c 65 46 69 6c 74 65 72 43 61  te tableFilterCa
3860: 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20 20 20 20  llback;..       
3870: 20 70 72 69 76 61 74 65 20 6f 62 6a 65 63 74 20   private object 
3880: 74 61 62 6c 65 46 69 6c 74 65 72 43 6f 6e 74 65  tableFilterConte
3890: 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  xt;..        #en
38a0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
38b0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
38c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
3900: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
3910: 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72  blic Constructor
3920: 73 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  s..        publi
3930: 63 20 53 51 4c 69 74 65 53 65 73 73 69 6f 6e 28  c SQLiteSession(
3940: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51  ..            SQ
3950: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63  LiteConnection c
3960: 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20 20 20 20  onnection,..    
3970: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
3980: 61 74 61 62 61 73 65 4e 61 6d 65 0d 0a 20 20 20  atabaseName..   
3990: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
39a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
39b0: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
39c0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73 65  ethods.sqlite3se
39d0: 73 73 69 6f 6e 5f 63 72 65 61 74 65 28 0d 0a 20  ssion_create(.. 
39e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
39f0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e  QLiteConnection.
3a00: 47 65 74 4e 61 74 69 76 65 48 61 6e 64 6c 65 28  GetNativeHandle(
3a10: 63 6f 6e 6e 65 63 74 69 6f 6e 29 2c 0d 0a 20 20  connection),..  
3a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
3a30: 4c 69 74 65 53 74 72 69 6e 67 2e 47 65 74 55 74  LiteString.GetUt
3a40: 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e  f8BytesFromStrin
3a50: 67 28 64 61 74 61 62 61 73 65 4e 61 6d 65 29 2c  g(databaseName),
3a60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3a70: 20 20 72 65 66 20 73 65 73 73 69 6f 6e 29 3b 0d    ref session);.
3a80: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
3a90: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
3aa0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
3ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3af0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
3b00: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74  gion Private Met
3b10: 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 70 72  hods..        pr
3b20: 69 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b  ivate void Check
3b30: 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
3b40: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3b50: 20 69 66 20 28 73 65 73 73 69 6f 6e 20 3d 3d 20   if (session == 
3b60: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
3b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
3b80: 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f  row new InvalidO
3b90: 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f  perationExceptio
3ba0: 6e 28 22 73 65 73 73 69 6f 6e 20 69 73 20 6e 6f  n("session is no
3bb0: 74 20 6f 70 65 6e 22 29 3b 0d 0a 20 20 20 20 20  t open");..     
3bc0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c10: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
3c20: 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76     #region Nativ
3c30: 65 20 43 61 6c 6c 62 61 63 6b 20 4d 65 74 68 6f  e Callback Metho
3c40: 64 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ds..        priv
3c50: 61 74 65 20 69 6e 74 20 78 46 69 6c 74 65 72 28  ate int xFilter(
3c60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
3c70: 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 2f 2a  tPtr context, /*
3c80: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
3c90: 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d            byte[]
3ca0: 20 74 62 6c 4e 61 6d 65 0d 0a 20 20 20 20 20 20   tblName..      
3cb0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
3cc0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3cd0: 72 65 74 75 72 6e 20 74 61 62 6c 65 46 69 6c 74  return tableFilt
3ce0: 65 72 43 61 6c 6c 62 61 63 6b 28 74 61 62 6c 65  erCallback(table
3cf0: 46 69 6c 74 65 72 43 6f 6e 74 65 78 74 2c 0d 0a  FilterContext,..
3d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d10: 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 47 65 74  SQLiteString.Get
3d20: 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 42 79  StringFromUtf8By
3d30: 74 65 73 28 74 62 6c 4e 61 6d 65 29 29 20 3f 20  tes(tblName)) ? 
3d40: 31 20 3a 20 30 3b 0d 0a 20 20 20 20 20 20 20 20  1 : 0;..        
3d50: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
3d60: 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 23  egion..        #
3d70: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
3d80: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
3d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
3dd0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
3de0: 49 53 51 4c 69 74 65 53 65 73 73 69 6f 6e 20 4d  ISQLiteSession M
3df0: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
3e00: 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 45 6e  public bool IsEn
3e10: 61 62 6c 65 64 28 29 0d 0a 20 20 20 20 20 20 20  abled()..       
3e20: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3e30: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
3e40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68  ..            Ch
3e50: 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a  eckHandle();....
3e60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3e70: 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  rn UnsafeNativeM
3e80: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73 65  ethods.sqlite3se
3e90: 73 73 69 6f 6e 5f 65 6e 61 62 6c 65 28 73 65 73  ssion_enable(ses
3ea0: 73 69 6f 6e 2c 20 2d 31 29 20 21 3d 20 30 3b 0d  sion, -1) != 0;.
3eb0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
3ec0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3f10: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
3f20: 76 6f 69 64 20 53 65 74 54 6f 45 6e 61 62 6c 65  void SetToEnable
3f30: 64 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  d()..        {..
3f40: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
3f50: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20  kDisposed();..  
3f60: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 48            CheckH
3f70: 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  andle();....    
3f80: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
3f90: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
3fa0: 74 65 33 73 65 73 73 69 6f 6e 5f 65 6e 61 62 6c  te3session_enabl
3fb0: 65 28 73 65 73 73 69 6f 6e 2c 20 31 29 3b 0d 0a  e(session, 1);..
3fc0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
3fd0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
3fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4020: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
4030: 6f 69 64 20 53 65 74 54 6f 44 69 73 61 62 6c 65  oid SetToDisable
4040: 64 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  d()..        {..
4050: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
4060: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20  kDisposed();..  
4070: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 48            CheckH
4080: 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  andle();....    
4090: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
40a0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
40b0: 74 65 33 73 65 73 73 69 6f 6e 5f 65 6e 61 62 6c  te3session_enabl
40c0: 65 28 73 65 73 73 69 6f 6e 2c 20 30 29 3b 0d 0a  e(session, 0);..
40d0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
40e0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
40f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4130: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
4140: 6f 6f 6c 20 49 73 49 6e 64 69 72 65 63 74 28 29  ool IsIndirect()
4150: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
4160: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
4170: 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20  sposed();..     
4180: 20 20 20 20 20 20 20 43 68 65 63 6b 48 61 6e 64         CheckHand
4190: 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  le();....       
41a0: 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61       return Unsa
41b0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
41c0: 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 69  sqlite3session_i
41d0: 6e 64 69 72 65 63 74 28 73 65 73 73 69 6f 6e 2c  ndirect(session,
41e0: 20 2d 31 29 20 21 3d 20 30 3b 0d 0a 20 20 20 20   -1) != 0;..    
41f0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4200: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
4210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4240: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
4250: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
4260: 53 65 74 54 6f 49 6e 64 69 72 65 63 74 28 29 0d  SetToIndirect().
4270: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
4280: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
4290: 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
42a0: 20 20 20 20 20 20 43 68 65 63 6b 48 61 6e 64 6c        CheckHandl
42b0: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
42c0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
42d0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73  Methods.sqlite3s
42e0: 65 73 73 69 6f 6e 5f 69 6e 64 69 72 65 63 74 28  ession_indirect(
42f0: 73 65 73 73 69 6f 6e 2c 20 31 29 3b 0d 0a 20 20  session, 1);..  
4300: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
4310: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
4360: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
4370: 64 20 53 65 74 54 6f 44 69 72 65 63 74 28 29 0d  d SetToDirect().
4380: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
4390: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
43a0: 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
43b0: 20 20 20 20 20 20 43 68 65 63 6b 48 61 6e 64 6c        CheckHandl
43c0: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
43d0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
43e0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73  Methods.sqlite3s
43f0: 65 73 73 69 6f 6e 5f 69 6e 64 69 72 65 63 74 28  ession_indirect(
4400: 73 65 73 73 69 6f 6e 2c 20 30 29 3b 0d 0a 20 20  session, 0);..  
4410: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
4420: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
4470: 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
4480: 6c 20 49 73 45 6d 70 74 79 28 29 0d 0a 20 20 20  l IsEmpty()..   
4490: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
44a0: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
44b0: 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
44c0: 20 20 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b    CheckHandle();
44d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
44e0: 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74  return UnsafeNat
44f0: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
4500: 65 33 73 65 73 73 69 6f 6e 5f 69 73 65 6d 70 74  e3session_isempt
4510: 79 28 73 65 73 73 69 6f 6e 29 20 21 3d 20 30 3b  y(session) != 0;
4520: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
4530: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
4540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
4580: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
4590: 20 76 6f 69 64 20 41 74 74 61 63 68 54 61 62 6c   void AttachTabl
45a0: 65 28 73 74 72 69 6e 67 20 6e 61 6d 65 29 0d 0a  e(string name)..
45b0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
45c0: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
45d0: 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  osed();..       
45e0: 20 20 20 20 20 43 68 65 63 6b 48 61 6e 64 6c 65       CheckHandle
45f0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
4600: 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
4610: 64 65 20 72 63 20 3d 20 55 6e 73 61 66 65 4e 61  de rc = UnsafeNa
4620: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
4630: 74 65 33 73 65 73 73 69 6f 6e 5f 61 74 74 61 63  te3session_attac
4640: 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
4650: 20 20 20 20 73 65 73 73 69 6f 6e 2c 20 53 51 4c      session, SQL
4660: 69 74 65 53 74 72 69 6e 67 2e 47 65 74 55 74 66  iteString.GetUtf
4670: 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67  8BytesFromString
4680: 28 6e 61 6d 65 29 29 3b 0d 0a 0d 0a 20 20 20 20  (name));....    
4690: 20 20 20 20 20 20 20 20 69 66 20 28 72 63 20 21          if (rc !
46a0: 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  = SQLiteErrorCod
46b0: 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20 20 20  e.Ok)..         
46c0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
46d0: 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e   SQLiteException
46e0: 28 72 63 2c 20 22 73 71 6c 69 74 65 33 73 65 73  (rc, "sqlite3ses
46f0: 73 69 6f 6e 5f 61 74 74 61 63 68 22 29 3b 0d 0a  sion_attach");..
4700: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
4710: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4760: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
4770: 6f 69 64 20 53 65 74 54 61 62 6c 65 46 69 6c 74  oid SetTableFilt
4780: 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er(..           
4790: 20 54 61 62 6c 65 46 69 6c 74 65 72 44 65 6c 65   TableFilterDele
47a0: 67 61 74 65 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a  gate callback,..
47b0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65              obje
47c0: 63 74 20 63 6f 6e 74 65 78 74 0d 0a 20 20 20 20  ct context..    
47d0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
47e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
47f0: 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
4800: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
4810: 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a  CheckHandle();..
4820: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
4830: 69 73 2e 74 61 62 6c 65 46 69 6c 74 65 72 43 61  is.tableFilterCa
4840: 6c 6c 62 61 63 6b 20 3d 20 63 61 6c 6c 62 61 63  llback = callbac
4850: 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
4860: 74 68 69 73 2e 74 61 62 6c 65 46 69 6c 74 65 72  this.tableFilter
4870: 43 6f 6e 74 65 78 74 20 3d 20 63 6f 6e 74 65 78  Context = contex
4880: 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  t;....          
4890: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
48a0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73 65 73  thods.sqlite3ses
48b0: 73 69 6f 6e 5f 74 61 62 6c 65 5f 66 69 6c 74 65  sion_table_filte
48c0: 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
48d0: 20 20 20 20 73 65 73 73 69 6f 6e 2c 20 78 46 69      session, xFi
48e0: 6c 74 65 72 2c 20 49 6e 74 50 74 72 2e 5a 65 72  lter, IntPtr.Zer
48f0: 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  o);..        }..
4900: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
4910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4950: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
4960: 6c 69 63 20 76 6f 69 64 20 43 72 65 61 74 65 43  lic void CreateC
4970: 68 61 6e 67 65 53 65 74 28 0d 0a 20 20 20 20 20  hangeSet(..     
4980: 20 20 20 20 20 20 20 72 65 66 20 62 79 74 65 5b         ref byte[
4990: 5d 20 72 61 77 44 61 74 61 0d 0a 20 20 20 20 20  ] rawData..     
49a0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
49b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
49c0: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
49d0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43  ;..            C
49e0: 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d  heckHandle();...
49f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
4a00: 50 74 72 20 70 44 61 74 61 20 3d 20 49 6e 74 50  Ptr pData = IntP
4a10: 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
4a20: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
4a30: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
4a40: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
4a50: 6e 44 61 74 61 20 3d 20 30 3b 0d 0a 0d 0a 20 20  nData = 0;....  
4a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
4a70: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72 63  LiteErrorCode rc
4a80: 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
4a90: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73 65  ethods.sqlite3se
4aa0: 73 73 69 6f 6e 5f 63 68 61 6e 67 65 73 65 74 28  ssion_changeset(
4ab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4ac0: 20 20 20 20 20 20 73 65 73 73 69 6f 6e 2c 20 72        session, r
4ad0: 65 66 20 6e 44 61 74 61 2c 20 72 65 66 20 70 44  ef nData, ref pD
4ae0: 61 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ata);....       
4af0: 20 20 20 20 20 20 20 20 20 69 66 20 28 72 63 20           if (rc 
4b00: 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  != SQLiteErrorCo
4b10: 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20 20  de.Ok)..        
4b20: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
4b30: 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65  w new SQLiteExce
4b40: 70 74 69 6f 6e 28 72 63 2c 20 22 73 71 6c 69 74  ption(rc, "sqlit
4b50: 65 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e 67 65  e3session_change
4b60: 73 65 74 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  set");....      
4b70: 20 20 20 20 20 20 20 20 20 20 72 61 77 44 61 74            rawDat
4b80: 61 20 3d 20 53 51 4c 69 74 65 42 79 74 65 73 2e  a = SQLiteBytes.
4b90: 46 72 6f 6d 49 6e 74 50 74 72 28 70 44 61 74 61  FromIntPtr(pData
4ba0: 2c 20 6e 44 61 74 61 29 3b 0d 0a 20 20 20 20 20  , nData);..     
4bb0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
4bc0: 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
4bd0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
4bf0: 20 28 70 44 61 74 61 20 21 3d 20 49 6e 74 50 74   (pData != IntPt
4c00: 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
4c10: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
4c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c30: 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65  SQLiteMemory.Fre
4c40: 65 28 70 44 61 74 61 29 3b 0d 0a 20 20 20 20 20  e(pData);..     
4c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
4c60: 44 61 74 61 20 3d 20 49 6e 74 50 74 72 2e 5a 65  Data = IntPtr.Ze
4c70: 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
4c80: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
4c90: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
4ca0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
4cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cf0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
4d00: 75 62 6c 69 63 20 76 6f 69 64 20 43 72 65 61 74  ublic void Creat
4d10: 65 43 68 61 6e 67 65 53 65 74 28 0d 0a 20 20 20  eChangeSet(..   
4d20: 20 20 20 20 20 20 20 20 20 53 74 72 65 61 6d 20           Stream 
4d30: 73 74 72 65 61 6d 2c 0d 0a 20 20 20 20 20 20 20  stream,..       
4d40: 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
4d50: 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73  ctionFlags flags
4d60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
4d70: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
4d80: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
4d90: 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
4da0: 20 20 20 20 20 20 43 68 65 63 6b 48 61 6e 64 6c        CheckHandl
4db0: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
4dc0: 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
4dd0: 6f 64 65 20 72 63 20 3d 20 55 6e 73 61 66 65 4e  ode rc = UnsafeN
4de0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
4df0: 69 74 65 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e  ite3session_chan
4e00: 67 65 73 65 74 5f 73 74 72 6d 28 0d 0a 20 20 20  geset_strm(..   
4e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 73               ses
4e20: 73 69 6f 6e 2c 20 6e 65 77 20 53 51 4c 69 74 65  sion, new SQLite
4e30: 53 74 72 65 61 6d 41 64 61 70 74 65 72 28 73 74  StreamAdapter(st
4e40: 72 65 61 6d 2c 20 66 6c 61 67 73 29 2e 78 4f 75  ream, flags).xOu
4e50: 74 70 75 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  tput,..         
4e60: 20 20 20 20 20 20 20 49 6e 74 50 74 72 2e 5a 65         IntPtr.Ze
4e70: 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ro);....        
4e80: 20 20 20 20 69 66 20 28 72 63 20 21 3d 20 53 51      if (rc != SQ
4e90: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b  LiteErrorCode.Ok
4ea0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
4eb0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c     throw new SQL
4ec0: 69 74 65 45 78 63 65 70 74 69 6f 6e 28 72 63 2c  iteException(rc,
4ed0: 20 22 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e   "sqlite3session
4ee0: 5f 63 68 61 6e 67 65 73 65 74 5f 73 74 72 6d 22  _changeset_strm"
4ef0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
4f00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
4f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4f50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
4f60: 69 63 20 76 6f 69 64 20 43 72 65 61 74 65 50 61  ic void CreatePa
4f70: 74 63 68 53 65 74 28 0d 0a 20 20 20 20 20 20 20  tchSet(..       
4f80: 20 20 20 20 20 72 65 66 20 62 79 74 65 5b 5d 20       ref byte[] 
4f90: 72 61 77 44 61 74 61 0d 0a 20 20 20 20 20 20 20  rawData..       
4fa0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
4fb0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43  {..            C
4fc0: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
4fd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65  .            Che
4fe0: 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20  ckHandle();.... 
4ff0: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
5000: 72 20 70 44 61 74 61 20 3d 20 49 6e 74 50 74 72  r pData = IntPtr
5010: 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
5020: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
5030: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
5040: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 44            int nD
5050: 61 74 61 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  ata = 0;....    
5060: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
5070: 74 65 45 72 72 6f 72 43 6f 64 65 20 72 63 20 3d  teErrorCode rc =
5080: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
5090: 68 6f 64 73 2e 73 71 6c 69 74 65 33 73 65 73 73  hods.sqlite3sess
50a0: 69 6f 6e 5f 70 61 74 63 68 73 65 74 28 0d 0a 20  ion_patchset(.. 
50b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
50c0: 20 20 20 73 65 73 73 69 6f 6e 2c 20 72 65 66 20     session, ref 
50d0: 6e 44 61 74 61 2c 20 72 65 66 20 70 44 61 74 61  nData, ref pData
50e0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
50f0: 20 20 20 20 20 20 69 66 20 28 72 63 20 21 3d 20        if (rc != 
5100: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
5110: 4f 6b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Ok)..           
5120: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
5130: 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69  ew SQLiteExcepti
5140: 6f 6e 28 72 63 2c 20 22 73 71 6c 69 74 65 33 73  on(rc, "sqlite3s
5150: 65 73 73 69 6f 6e 5f 70 61 74 63 68 73 65 74 22  ession_patchset"
5160: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
5170: 20 20 20 20 20 20 72 61 77 44 61 74 61 20 3d 20        rawData = 
5180: 53 51 4c 69 74 65 42 79 74 65 73 2e 46 72 6f 6d  SQLiteBytes.From
5190: 49 6e 74 50 74 72 28 70 44 61 74 61 2c 20 6e 44  IntPtr(pData, nD
51a0: 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ata);..         
51b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
51c0: 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
51d0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
51e0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 44            if (pD
51f0: 61 74 61 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  ata != IntPtr.Ze
5200: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
5210: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5220: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
5230: 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 44  teMemory.Free(pD
5240: 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ata);..         
5250: 20 20 20 20 20 20 20 20 20 20 20 70 44 61 74 61             pData
5260: 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
5270: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5280: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
5290: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
52a0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
52b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
52e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
52f0: 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
5300: 63 20 76 6f 69 64 20 43 72 65 61 74 65 50 61 74  c void CreatePat
5310: 63 68 53 65 74 28 0d 0a 20 20 20 20 20 20 20 20  chSet(..        
5320: 20 20 20 20 53 74 72 65 61 6d 20 73 74 72 65 61      Stream strea
5330: 6d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m,..            
5340: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
5350: 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20  Flags flags..   
5360: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
5370: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
5380: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
5390: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
53a0: 20 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d   CheckHandle();.
53b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
53c0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72  QLiteErrorCode r
53d0: 63 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65  c = UnsafeNative
53e0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73  Methods.sqlite3s
53f0: 65 73 73 69 6f 6e 5f 70 61 74 63 68 73 65 74 5f  ession_patchset_
5400: 73 74 72 6d 28 0d 0a 20 20 20 20 20 20 20 20 20  strm(..         
5410: 20 20 20 20 20 20 20 73 65 73 73 69 6f 6e 2c 20         session, 
5420: 6e 65 77 20 53 51 4c 69 74 65 53 74 72 65 61 6d  new SQLiteStream
5430: 41 64 61 70 74 65 72 28 73 74 72 65 61 6d 2c 20  Adapter(stream, 
5440: 66 6c 61 67 73 29 2e 78 4f 75 74 70 75 74 2c 0d  flags).xOutput,.
5450: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5460: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
5470: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
5480: 20 28 72 63 20 21 3d 20 53 51 4c 69 74 65 45 72   (rc != SQLiteEr
5490: 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20  rorCode.Ok)..   
54a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
54b0: 6f 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63  ow new SQLiteExc
54c0: 65 70 74 69 6f 6e 28 72 63 2c 20 22 73 71 6c 69  eption(rc, "sqli
54d0: 74 65 33 73 65 73 73 69 6f 6e 5f 70 61 74 63 68  te3session_patch
54e0: 73 65 74 5f 73 74 72 6d 22 29 3b 0d 0a 20 20 20  set_strm");..   
54f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
5500: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
5550: 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
5560: 20 4c 6f 61 64 44 69 66 66 65 72 65 6e 63 65 73   LoadDifferences
5570: 46 72 6f 6d 54 61 62 6c 65 28 0d 0a 20 20 20 20  FromTable(..    
5580: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
5590: 72 6f 6d 44 61 74 61 62 61 73 65 4e 61 6d 65 2c  romDatabaseName,
55a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
55b0: 72 69 6e 67 20 74 61 62 6c 65 4e 61 6d 65 0d 0a  ring tableName..
55c0: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
55d0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
55e0: 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
55f0: 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  sed();..        
5600: 20 20 20 20 43 68 65 63 6b 48 61 6e 64 6c 65 28      CheckHandle(
5610: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
5620: 20 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 20    IntPtr pError 
5630: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
5640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
5650: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
5660: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5670: 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
5680: 65 20 72 63 20 3d 20 55 6e 73 61 66 65 4e 61 74  e rc = UnsafeNat
5690: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
56a0: 65 33 73 65 73 73 69 6f 6e 5f 64 69 66 66 28 0d  e3session_diff(.
56b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
56c0: 20 20 20 20 20 73 65 73 73 69 6f 6e 2c 20 53 51       session, SQ
56d0: 4c 69 74 65 53 74 72 69 6e 67 2e 47 65 74 55 74  LiteString.GetUt
56e0: 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e  f8BytesFromStrin
56f0: 67 28 66 72 6f 6d 44 61 74 61 62 61 73 65 4e 61  g(fromDatabaseNa
5700: 6d 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  me),..          
5710: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
5720: 53 74 72 69 6e 67 2e 47 65 74 55 74 66 38 42 79  String.GetUtf8By
5730: 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 74 61  tesFromString(ta
5740: 62 6c 65 4e 61 6d 65 29 2c 20 72 65 66 20 70 45  bleName), ref pE
5750: 72 72 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  rror);....      
5760: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 63            if (rc
5770: 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   != SQLiteErrorC
5780: 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20  ode.Ok)..       
5790: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
57a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57b0: 73 74 72 69 6e 67 20 65 72 72 6f 72 20 3d 20 6e  string error = n
57c0: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
57d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
57e0: 70 45 72 72 6f 72 20 21 3d 20 49 6e 74 50 74 72  pError != IntPtr
57f0: 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
5800: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
5810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5820: 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 53         error = S
5830: 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69  QLiteString.Stri
5840: 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72  ngFromUtf8IntPtr
5850: 28 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a 20 20 20  (pError);....   
5860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5870: 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
5880: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 65  .IsNullOrEmpty(e
5890: 72 72 6f 72 29 29 0d 0a 20 20 20 20 20 20 20 20  rror))..        
58a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
58c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
58d0: 72 72 6f 72 20 3d 20 48 65 6c 70 65 72 4d 65 74  rror = HelperMet
58e0: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
58f0: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
5900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5910: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
5920: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20  CurrentCulture, 
5930: 22 3a 20 7b 30 7d 22 2c 20 65 72 72 6f 72 29 3b  ": {0}", error);
5940: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5950: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
5960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5970: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
5980: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
5990: 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74  new SQLiteExcept
59a0: 69 6f 6e 28 72 63 2c 20 48 65 6c 70 65 72 4d 65  ion(rc, HelperMe
59b0: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
59c0: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
59d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
59e0: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
59f0: 43 75 6c 74 75 72 65 2c 20 22 7b 30 7d 7b 31 7d  Culture, "{0}{1}
5a00: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
5a10: 20 20 20 20 20 20 20 20 20 20 20 20 22 73 71 6c              "sql
5a20: 69 74 65 33 73 65 73 73 69 6f 6e 5f 64 69 66 66  ite3session_diff
5a30: 22 2c 20 65 72 72 6f 72 29 29 3b 0d 0a 20 20 20  ", error));..   
5a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5a50: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
5a60: 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
5a70: 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
5a80: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5a90: 20 20 20 69 66 20 28 70 45 72 72 6f 72 20 21 3d     if (pError !=
5aa0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
5ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5ac0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5ad0: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f        SQLiteMemo
5ae0: 72 79 2e 46 72 65 65 28 70 45 72 72 6f 72 29 3b  ry.Free(pError);
5af0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5b00: 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20 49        pError = I
5b10: 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
5b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5b30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
5b40: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
5b50: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
5b60: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
5b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
5bb0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
5bc0: 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d  on IDisposable M
5bd0: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
5be0: 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
5bf0: 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ose()..        {
5c00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69  ..            Di
5c10: 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
5c20: 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70            GC.Sup
5c30: 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68  pressFinalize(th
5c40: 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  is);..        }.
5c50: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
5c60: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
5c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5cb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
5cc0: 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f    #region IDispo
5cd0: 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20  sable "Pattern" 
5ce0: 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
5cf0: 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69   private bool di
5d00: 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20  sposed;..       
5d10: 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68   private void Ch
5d20: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a  eckDisposed() /*
5d30: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
5d40: 20 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f     {..#if THROW_
5d50: 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20 20  ON_DISPOSED..   
5d60: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73           if (dis
5d70: 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20  posed)..        
5d80: 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
5d90: 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64  w ObjectDisposed
5da0: 45 78 63 65 70 74 69 6f 6e 28 74 79 70 65 6f 66  Exception(typeof
5db0: 28 53 51 4c 69 74 65 53 65 73 73 69 6f 6e 29 2e  (SQLiteSession).
5dc0: 4e 61 6d 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Name);..#endif..
5dd0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
5de0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
5df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
5e30: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
5e40: 2f 2a 20 70 72 6f 74 65 63 74 65 64 20 76 69 72  /* protected vir
5e50: 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20 44 69 73  tual */ void Dis
5e60: 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73  pose(bool dispos
5e70: 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ing)..        {.
5e80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
5e90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
5ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5eb0: 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d   if (!disposed).
5ec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5ed0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
5ee0: 20 20 20 20 20 20 20 20 2f 2f 69 66 20 28 64 69          //if (di
5ef0: 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20  sposing)..      
5f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5f10: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5f20: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f         //    ///
5f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f50: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
5f60: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20         //    // 
5f70: 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20  dispose managed 
5f80: 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
5f90: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
5fa0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f         //    ///
5fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5fd0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
5fe0: 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20         //}....  
5ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6000: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6020: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
6030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
6040: 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67   release unmanag
6050: 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
6060: 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
6070: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
6080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
60b0: 20 20 20 20 20 20 20 20 69 66 20 28 73 65 73 73          if (sess
60c0: 69 6f 6e 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  ion != IntPtr.Ze
60d0: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
60e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
60f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6100: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
6110: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73  Methods.sqlite3s
6120: 65 73 73 69 6f 6e 5f 64 65 6c 65 74 65 28 73 65  ession_delete(se
6130: 73 73 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 20  ssion);..       
6140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6150: 20 73 65 73 73 69 6f 6e 20 3d 20 49 6e 74 50 74   session = IntPt
6160: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
6170: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
6180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6190: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
61a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
61b0: 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
61c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
61d0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
61e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
61f0: 45 3a 20 45 76 65 72 79 74 68 69 6e 67 20 73 68  E: Everything sh
6200: 6f 75 6c 64 20 62 65 20 66 75 6c 6c 79 20 64 69  ould be fully di
6210: 73 70 6f 73 65 64 20 61 74 20 74 68 69 73 20 70  sposed at this p
6220: 6f 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 20  oint...         
6230: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
6240: 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f             dispo
6250: 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
6260: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
6270: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
6280: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
6290: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
62a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
62d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
62e0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
62f0: 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20  Destructor..    
6300: 20 20 20 20 7e 53 51 4c 69 74 65 53 65 73 73 69      ~SQLiteSessi
6310: 6f 6e 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  on()..        {.
6320: 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73  .            Dis
6330: 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20  pose(false);..  
6340: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
6350: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
6360: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
6370: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
6380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63c0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 75 62  /////....    pub
63d0: 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73 73  lic sealed class
63e0: 20 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74   SQLiteChangeSet
63f0: 20 3a 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65   : ISQLiteChange
6400: 53 65 74 2c 20 49 44 69 73 70 6f 73 61 62 6c 65  Set, IDisposable
6410: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
6420: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
6430: 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 70   Data..        p
6440: 72 69 76 61 74 65 20 53 51 4c 69 74 65 43 68 61  rivate SQLiteCha
6450: 6e 67 65 53 65 74 49 74 65 72 61 74 6f 72 20 69  ngeSetIterator i
6460: 74 65 72 61 74 6f 72 3b 0d 0a 20 20 20 20 20 20  terator;..      
6470: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6480: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
64d0: 0a 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  ...        inter
64e0: 6e 61 6c 20 53 51 4c 69 74 65 43 68 61 6e 67 65  nal SQLiteChange
64f0: 53 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Set(..          
6500: 20 20 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65    SQLiteChangeSe
6510: 74 49 74 65 72 61 74 6f 72 20 69 74 65 72 61 74  tIterator iterat
6520: 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
6530: 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
6540: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 69            this.i
6550: 74 65 72 61 74 6f 72 20 3d 20 69 74 65 72 61 74  terator = iterat
6560: 6f 72 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  or;..        }..
6570: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
6580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65c0: 2f 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 0d 0a 20  /.............. 
65d0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
65e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6620: 0d 0a 0d 0a 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ........        
6630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6670: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6680: 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c 69     #region ISQLi
6690: 74 65 43 68 61 6e 67 65 53 65 74 20 4d 65 6d 62  teChangeSet Memb
66a0: 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ers..        pub
66b0: 6c 69 63 20 62 6f 6f 6c 3f 20 49 73 50 61 74 63  lic bool? IsPatc
66c0: 68 53 65 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d  hSet..        {.
66d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
66e0: 20 7b 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74   { throw new Not
66f0: 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65 70  ImplementedExcep
6700: 74 69 6f 6e 28 29 3b 20 7d 0d 0a 20 20 20 20 20  tion(); }..     
6710: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
6720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6760: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
6770: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 41     public void A
6780: 70 70 6c 79 28 0d 0a 20 20 20 20 20 20 20 20 20  pply(..         
6790: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
67a0: 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d  ion connection,.
67b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e  .            Con
67c0: 66 6c 69 63 74 44 65 6c 65 67 61 74 65 20 63 6f  flictDelegate co
67d0: 6e 66 6c 69 63 74 43 61 6c 6c 62 61 63 6b 0d 0a  nflictCallback..
67e0: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
67f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6800: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
6810: 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78  NotImplementedEx
6820: 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20  ception();..    
6830: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
6840: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6880: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
6890: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
68a0: 41 70 70 6c 79 28 0d 0a 20 20 20 20 20 20 20 20  Apply(..        
68b0: 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63      SQLiteConnec
68c0: 74 69 6f 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c  tion connection,
68d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 6f  ..            Co
68e0: 6e 66 6c 69 63 74 44 65 6c 65 67 61 74 65 20 63  nflictDelegate c
68f0: 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61 63 6b 2c  onflictCallback,
6900: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 61  ..            Ta
6910: 62 6c 65 46 69 6c 74 65 72 44 65 6c 65 67 61 74  bleFilterDelegat
6920: 65 20 74 61 62 6c 65 46 69 6c 74 65 72 43 61 6c  e tableFilterCal
6930: 6c 62 61 63 6b 0d 0a 20 20 20 20 20 20 20 20 20  lback..         
6940: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
6950: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72  .            thr
6960: 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c 65 6d  ow new NotImplem
6970: 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e 28 29  entedException()
6980: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
6990: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
69a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
69d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
69e0: 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
69f0: 63 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53  c ISQLiteChangeS
6a00: 65 74 20 49 6e 76 65 72 74 28 29 0d 0a 20 20 20  et Invert()..   
6a10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
6a20: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f      throw new No
6a30: 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
6a40: 70 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20  ption();..      
6a50: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
6a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6aa0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
6ab0: 20 20 70 75 62 6c 69 63 20 49 53 51 4c 69 74 65    public ISQLite
6ac0: 43 68 61 6e 67 65 53 65 74 20 43 6f 6d 62 69 6e  ChangeSet Combin
6ad0: 65 57 69 74 68 28 0d 0a 20 20 20 20 20 20 20 20  eWith(..        
6ae0: 20 20 20 20 49 53 51 4c 69 74 65 43 68 61 6e 67      ISQLiteChang
6af0: 65 53 65 74 20 63 68 61 6e 67 65 53 65 74 0d 0a  eSet changeSet..
6b00: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
6b10: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6b20: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
6b30: 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78  NotImplementedEx
6b40: 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20  ception();..    
6b50: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
6b60: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
6b70: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
6b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
6bc0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
6bd0: 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62  IDisposable Memb
6be0: 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ers..        pub
6bf0: 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65  lic void Dispose
6c00: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
6c10: 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
6c20: 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20  se(true);..     
6c30: 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65         GC.Suppre
6c40: 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
6c50: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
6c60: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
6c70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
6c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cc0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
6cd0: 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
6ce0: 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d  le "Pattern" Mem
6cf0: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70 72  bers..        pr
6d00: 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f  ivate bool dispo
6d10: 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 70 72  sed;..        pr
6d20: 69 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b  ivate void Check
6d30: 44 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68  Disposed() /* th
6d40: 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
6d50: 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f  {..#if THROW_ON_
6d60: 44 49 53 50 4f 53 45 44 0d 0a 20 20 20 20 20 20  DISPOSED..      
6d70: 20 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73        if (dispos
6d80: 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
6d90: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6da0: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62      throw new Ob
6db0: 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65  jectDisposedExce
6dc0: 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
6dd0: 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65              type
6de0: 6f 66 28 53 51 4c 69 74 65 43 68 61 6e 67 65 53  of(SQLiteChangeS
6df0: 65 74 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20  et).Name);..    
6e00: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
6e10: 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
6e20: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
6e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6e70: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
6e80: 74 65 20 2f 2a 20 70 72 6f 74 65 63 74 65 64 20  te /* protected 
6e90: 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20  virtual */ void 
6ea0: 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73  Dispose(bool dis
6eb0: 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
6ec0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6ed0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
6ee0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6ef0: 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65      if (!dispose
6f00: 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
6f10: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6f20: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
6f30: 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20  isposing)..     
6f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
6f50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6f60: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
6f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6fa0: 20 20 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6f          // dispo
6fb0: 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75  se managed resou
6fc0: 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
6fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6fe0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
6ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7020: 20 20 20 20 20 20 69 66 20 28 69 74 65 72 61 74        if (iterat
7030: 6f 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  or != null)..   
7040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7050: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7070: 20 20 20 20 69 74 65 72 61 74 6f 72 2e 44 69 73      iterator.Dis
7080: 70 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  pose();..       
7090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
70a0: 20 20 20 20 20 69 74 65 72 61 74 6f 72 20 3d 20       iterator = 
70b0: 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
70c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
70d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
70e0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
70f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
7100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7120: 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20  /////..         
7130: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65             // re
7140: 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20  lease unmanaged 
7150: 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
7160: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7170: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
7180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
71a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
71b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
71c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e  .            fin
71d0: 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
71e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
71f0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
7200: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
7210: 3a 20 45 76 65 72 79 74 68 69 6e 67 20 73 68 6f  : Everything sho
7220: 75 6c 64 20 62 65 20 66 75 6c 6c 79 20 64 69 73  uld be fully dis
7230: 70 6f 73 65 64 20 61 74 20 74 68 69 73 20 70 6f  posed at this po
7240: 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  int...          
7250: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
7260: 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73            dispos
7270: 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
7280: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
7290: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
72a0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
72b0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
72c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
72f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
7300: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
7310: 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20  estructor..     
7320: 20 20 20 7e 53 51 4c 69 74 65 43 68 61 6e 67 65     ~SQLiteChange
7330: 53 65 74 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  Set()..        {
7340: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69  ..            Di
7350: 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20  spose(false);.. 
7360: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
7370: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
7380: 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f    }....    /////
7390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73d0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 75  //////....    pu
73e0: 62 6c 69 63 20 73 65 61 6c 65 64 20 63 6c 61 73  blic sealed clas
73f0: 73 20 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65  s SQLiteChangeSe
7400: 74 45 6e 75 6d 65 72 61 74 6f 72 20 3a 20 49 45  tEnumerator : IE
7410: 6e 75 6d 65 72 61 74 6f 72 3c 49 53 51 4c 69 74  numerator<ISQLit
7420: 65 43 68 61 6e 67 65 53 65 74 4d 65 74 61 64 61  eChangeSetMetada
7430: 74 61 49 74 65 6d 3e 0d 0a 20 20 20 20 7b 0d 0a  taItem>..    {..
7440: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
7450: 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 45 6e  QLiteChangeSetEn
7460: 75 6d 65 72 61 74 6f 72 28 0d 0a 20 20 20 20 20  umerator(..     
7470: 20 20 20 20 20 20 20 49 53 51 4c 69 74 65 43 68         ISQLiteCh
7480: 61 6e 67 65 53 65 74 20 63 68 61 6e 67 65 53 65  angeSet changeSe
7490: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
74a0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 0d 0a 20  ..        {.... 
74b0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
74c0: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 45 6e 75      #region IEnu
74d0: 6d 65 72 61 74 6f 72 3c 49 53 51 4c 69 74 65 43  merator<ISQLiteC
74e0: 68 61 6e 67 65 53 65 74 4d 65 74 61 64 61 74 61  hangeSetMetadata
74f0: 49 74 65 6d 3e 20 4d 65 6d 62 65 72 73 0d 0a 0d  Item> Members...
7500: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
7510: 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74  ISQLiteChangeSet
7520: 4d 65 74 61 64 61 74 61 49 74 65 6d 20 43 75 72  MetadataItem Cur
7530: 72 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d  rent..        {.
7540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
7550: 20 7b 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74   { throw new Not
7560: 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65 70  ImplementedExcep
7570: 74 69 6f 6e 28 29 3b 20 7d 0d 0a 20 20 20 20 20  tion(); }..     
7580: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
7590: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
75a0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44        #region ID
75b0: 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72  isposable Member
75c0: 73 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  s....        pub
75d0: 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65  lic void Dispose
75e0: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
75f0: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
7600: 20 6e 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e   new NotImplemen
7610: 74 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d  tedException();.
7620: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
7630: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
7640: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
7650: 69 6f 6e 20 49 45 6e 75 6d 65 72 61 74 6f 72 20  ion IEnumerator 
7660: 4d 65 6d 62 65 72 73 0d 0a 0d 0a 20 20 20 20 20  Members....     
7670: 20 20 20 6f 62 6a 65 63 74 20 43 6f 6c 6c 65 63     object Collec
7680: 74 69 6f 6e 73 2e 49 45 6e 75 6d 65 72 61 74 6f  tions.IEnumerato
7690: 72 2e 43 75 72 72 65 6e 74 0d 0a 20 20 20 20 20  r.Current..     
76a0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
76b0: 20 20 67 65 74 20 7b 20 74 68 72 6f 77 20 6e 65    get { throw ne
76c0: 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64  w NotImplemented
76d0: 45 78 63 65 70 74 69 6f 6e 28 29 3b 20 7d 0d 0a  Exception(); }..
76e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
76f0: 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
7700: 20 4d 6f 76 65 4e 65 78 74 28 29 0d 0a 20 20 20   MoveNext()..   
7710: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7720: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f      throw new No
7730: 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
7740: 70 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20  ption();..      
7750: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70    }....        p
7760: 75 62 6c 69 63 20 76 6f 69 64 20 52 65 73 65 74  ublic void Reset
7770: 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
7780: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
7790: 20 6e 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e   new NotImplemen
77a0: 74 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d  tedException();.
77b0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
77c0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
77d0: 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f  ..    }....    /
77e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7830: 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64 20    public sealed 
7840: 63 6c 61 73 73 20 53 51 4c 69 74 65 43 68 61 6e  class SQLiteChan
7850: 67 65 53 65 74 4d 65 74 61 64 61 74 61 49 74 65  geSetMetadataIte
7860: 6d 20 3a 20 49 53 51 4c 69 74 65 43 68 61 6e 67  m : ISQLiteChang
7870: 65 53 65 74 4d 65 74 61 64 61 74 61 49 74 65 6d  eSetMetadataItem
7880: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
7890: 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
78a0: 43 68 61 6e 67 65 53 65 74 4d 65 74 61 64 61 74  ChangeSetMetadat
78b0: 61 49 74 65 6d 28 49 6e 74 50 74 72 20 69 74 65  aItem(IntPtr ite
78c0: 72 61 74 6f 72 29 0d 0a 20 20 20 20 20 20 20 20  rator)..        
78d0: 7b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  {....        }..
78e0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
78f0: 6e 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53  n ISQLiteChangeS
7900: 65 74 4d 65 74 61 64 61 74 61 49 74 65 6d 20 4d  etMetadataItem M
7910: 65 6d 62 65 72 73 0d 0a 0d 0a 20 20 20 20 20 20  embers....      
7920: 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 41    public SQLiteA
7930: 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e 43  uthorizerActionC
7940: 6f 64 65 20 4f 70 65 72 61 74 69 6f 6e 43 6f 64  ode OperationCod
7950: 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
7960: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
7970: 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70  throw new NotImp
7980: 6c 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f  lementedExceptio
7990: 6e 28 29 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  n(); }..        
79a0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  }....        pub
79b0: 6c 69 63 20 73 74 72 69 6e 67 20 54 61 62 6c 65  lic string Table
79c0: 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Name..        {.
79d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
79e0: 20 7b 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74   { throw new Not
79f0: 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65 70  ImplementedExcep
7a00: 74 69 6f 6e 28 29 3b 20 7d 0d 0a 20 20 20 20 20  tion(); }..     
7a10: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
7a20: 70 75 62 6c 69 63 20 69 6e 74 20 4e 75 6d 62 65  public int Numbe
7a30: 72 4f 66 43 6f 6c 75 6d 6e 73 0d 0a 20 20 20 20  rOfColumns..    
7a40: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
7a50: 20 20 20 67 65 74 20 7b 20 74 68 72 6f 77 20 6e     get { throw n
7a60: 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65  ew NotImplemente
7a70: 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 20 7d 0d  dException(); }.
7a80: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
7a90: 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
7aa0: 6c 20 49 6e 64 69 72 65 63 74 0d 0a 20 20 20 20  l Indirect..    
7ab0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
7ac0: 20 20 20 67 65 74 20 7b 20 74 68 72 6f 77 20 6e     get { throw n
7ad0: 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65  ew NotImplemente
7ae0: 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 20 7d 0d  dException(); }.
7af0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
7b00: 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
7b10: 6c 5b 5d 20 50 72 69 6d 61 72 79 4b 65 79 43 6f  l[] PrimaryKeyCo
7b20: 6c 75 6d 6e 73 0d 0a 20 20 20 20 20 20 20 20 7b  lumns..        {
7b30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
7b40: 74 20 7b 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f  t { throw new No
7b50: 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
7b60: 70 74 69 6f 6e 28 29 3b 20 7d 0d 0a 20 20 20 20  ption(); }..    
7b70: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
7b80: 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65 56 61   public SQLiteVa
7b90: 6c 75 65 20 47 65 74 4f 6c 64 56 61 6c 75 65 28  lue GetOldValue(
7ba0: 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 29  int columnIndex)
7bb0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
7bc0: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
7bd0: 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65  ew NotImplemente
7be0: 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 20  dException();.. 
7bf0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
7c00: 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
7c10: 65 56 61 6c 75 65 20 47 65 74 4e 65 77 56 61 6c  eValue GetNewVal
7c20: 75 65 28 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64  ue(int columnInd
7c30: 65 78 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ex)..        {..
7c40: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
7c50: 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65  w new NotImpleme
7c60: 6e 74 65 64 45 78 63 65 70 74 69 6f 6e 28 29 3b  ntedException();
7c70: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
7c80: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51         public SQ
7c90: 4c 69 74 65 56 61 6c 75 65 20 47 65 74 43 6f 6e  LiteValue GetCon
7ca0: 66 6c 69 63 74 56 61 6c 75 65 28 69 6e 74 20 63  flictValue(int c
7cb0: 6f 6c 75 6d 6e 49 6e 64 65 78 29 0d 0a 20 20 20  olumnIndex)..   
7cc0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7cd0: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f      throw new No
7ce0: 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
7cf0: 70 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20  ption();..      
7d00: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70    }....        p
7d10: 75 62 6c 69 63 20 69 6e 74 20 4e 75 6d 62 65 72  ublic int Number
7d20: 4f 66 46 6f 72 65 69 67 6e 4b 65 79 43 6f 6e 66  OfForeignKeyConf
7d30: 6c 69 63 74 73 0d 0a 20 20 20 20 20 20 20 20 7b  licts..        {
7d40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65  ..            ge
7d50: 74 20 7b 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f  t { throw new No
7d60: 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
7d70: 70 74 69 6f 6e 28 29 3b 20 7d 0d 0a 20 20 20 20  ption(); }..    
7d80: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
7d90: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
7da0: 20 7d 0d 0a 0d 0a 7d 0d 0a                        }....}..