System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact d18eabdd0a46aabe31d37c9ac2b4c7fb3bc4352e:


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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 49  ; }....        I
0650: 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 20  SQLiteChangeSet 
0660: 49 6e 76 65 72 74 28 29 3b 0d 0a 0d 0a 20 20 20  Invert();....   
0670: 20 20 20 20 20 49 53 51 4c 69 74 65 43 68 61 6e       ISQLiteChan
0680: 67 65 53 65 74 20 43 6f 6d 62 69 6e 65 57 69 74  geSet CombineWit
0690: 68 28 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53  h(ISQLiteChangeS
06a0: 65 74 20 63 68 61 6e 67 65 53 65 74 29 3b 0d 0a  et changeSet);..
06b0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f      }....    ///
06c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0700: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
0710: 70 75 62 6c 69 63 20 69 6e 74 65 72 66 61 63 65  public interface
0720: 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65 47 72   ISQLiteChangeGr
0730: 6f 75 70 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  oup..    {..    
0740: 20 20 20 20 76 6f 69 64 20 41 64 64 43 68 61 6e      void AddChan
0750: 67 65 53 65 74 28 62 79 74 65 5b 5d 20 72 61 77  geSet(byte[] raw
0760: 44 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20  Data);..        
0770: 76 6f 69 64 20 41 64 64 43 68 61 6e 67 65 53 65  void AddChangeSe
0780: 74 28 53 74 72 65 61 6d 20 73 74 72 65 61 6d 29  t(Stream stream)
0790: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 76 6f 69  ;....        voi
07a0: 64 20 43 72 65 61 74 65 43 68 61 6e 67 65 53 65  d CreateChangeSe
07b0: 74 28 72 65 66 20 62 79 74 65 5b 5d 20 72 61 77  t(ref byte[] raw
07c0: 44 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20  Data);..        
07d0: 76 6f 69 64 20 43 72 65 61 74 65 43 68 61 6e 67  void CreateChang
07e0: 65 53 65 74 28 53 74 72 65 61 6d 20 73 74 72 65  eSet(Stream stre
07f0: 61 6d 2c 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  am, SQLiteConnec
0800: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 29  tionFlags flags)
0810: 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20  ;..    }....    
0820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
0870: 20 20 20 70 75 62 6c 69 63 20 69 6e 74 65 72 66     public interf
0880: 61 63 65 20 49 53 51 4c 69 74 65 43 68 61 6e 67  ace ISQLiteChang
0890: 65 53 65 74 4d 65 74 61 64 61 74 61 49 74 65 6d  eSetMetadataItem
08a0: 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20  ..    {..       
08b0: 20 53 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65   SQLiteAuthorize
08c0: 72 41 63 74 69 6f 6e 43 6f 64 65 20 4f 70 65 72  rActionCode Oper
08d0: 61 74 69 6f 6e 43 6f 64 65 20 7b 20 67 65 74 3b  ationCode { get;
08e0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69   }..        stri
08f0: 6e 67 20 54 61 62 6c 65 4e 61 6d 65 20 7b 20 67  ng TableName { g
0900: 65 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 69  et; }..        i
0910: 6e 74 20 4e 75 6d 62 65 72 4f 66 43 6f 6c 75 6d  nt NumberOfColum
0920: 6e 73 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20  ns { get; }..   
0930: 20 20 20 20 20 62 6f 6f 6c 20 49 6e 64 69 72 65       bool Indire
0940: 63 74 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20  ct { get; }..   
0950: 20 20 20 20 20 62 6f 6f 6c 5b 5d 20 50 72 69 6d       bool[] Prim
0960: 61 72 79 4b 65 79 43 6f 6c 75 6d 6e 73 20 7b 20  aryKeyColumns { 
0970: 67 65 74 3b 20 7d 0d 0a 0d 0a 20 20 20 20 20 20  get; }....      
0980: 20 20 53 51 4c 69 74 65 56 61 6c 75 65 20 47 65    SQLiteValue Ge
0990: 74 4f 6c 64 56 61 6c 75 65 28 69 6e 74 20 63 6f  tOldValue(int co
09a0: 6c 75 6d 6e 49 6e 64 65 78 29 3b 0d 0a 20 20 20  lumnIndex);..   
09b0: 20 20 20 20 20 53 51 4c 69 74 65 56 61 6c 75 65       SQLiteValue
09c0: 20 47 65 74 4e 65 77 56 61 6c 75 65 28 69 6e 74   GetNewValue(int
09d0: 20 63 6f 6c 75 6d 6e 49 6e 64 65 78 29 3b 0d 0a   columnIndex);..
09e0: 0d 0a 20 20 20 20 20 20 20 20 53 51 4c 69 74 65  ..        SQLite
09f0: 56 61 6c 75 65 20 47 65 74 43 6f 6e 66 6c 69 63  Value GetConflic
0a00: 74 56 61 6c 75 65 28 69 6e 74 20 63 6f 6c 75 6d  tValue(int colum
0a10: 6e 49 6e 64 65 78 29 3b 0d 0a 20 20 20 20 20 20  nIndex);..      
0a20: 20 20 69 6e 74 20 4e 75 6d 62 65 72 4f 66 46 6f    int NumberOfFo
0a30: 72 65 69 67 6e 4b 65 79 43 6f 6e 66 6c 69 63 74  reignKeyConflict
0a40: 73 20 7b 20 67 65 74 3b 20 7d 0d 0a 20 20 20 20  s { get; }..    
0a50: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
0a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0aa0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 70 75 62 6c  ////....    publ
0ab0: 69 63 20 69 6e 74 65 72 66 61 63 65 20 49 53 51  ic interface ISQ
0ac0: 4c 69 74 65 53 65 73 73 69 6f 6e 0d 0a 20 20 20  LiteSession..   
0ad0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c   {..        bool
0ae0: 20 49 73 45 6e 61 62 6c 65 64 28 29 3b 0d 0a 20   IsEnabled();.. 
0af0: 20 20 20 20 20 20 20 76 6f 69 64 20 53 65 74 54         void SetT
0b00: 6f 45 6e 61 62 6c 65 64 28 29 3b 0d 0a 20 20 20  oEnabled();..   
0b10: 20 20 20 20 20 76 6f 69 64 20 53 65 74 54 6f 44       void SetToD
0b20: 69 73 61 62 6c 65 64 28 29 3b 0d 0a 0d 0a 20 20  isabled();....  
0b30: 20 20 20 20 20 20 62 6f 6f 6c 20 49 73 49 6e 64        bool IsInd
0b40: 69 72 65 63 74 28 29 3b 0d 0a 20 20 20 20 20 20  irect();..      
0b50: 20 20 76 6f 69 64 20 53 65 74 54 6f 49 6e 64 69    void SetToIndi
0b60: 72 65 63 74 28 29 3b 0d 0a 20 20 20 20 20 20 20  rect();..       
0b70: 20 76 6f 69 64 20 53 65 74 54 6f 44 69 72 65 63   void SetToDirec
0b80: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t();....        
0b90: 62 6f 6f 6c 20 49 73 45 6d 70 74 79 28 29 3b 0d  bool IsEmpty();.
0ba0: 0a 0d 0a 20 20 20 20 20 20 20 20 76 6f 69 64 20  ...        void 
0bb0: 41 74 74 61 63 68 54 61 62 6c 65 28 73 74 72 69  AttachTable(stri
0bc0: 6e 67 20 6e 61 6d 65 29 3b 0d 0a 20 20 20 20 20  ng name);..     
0bd0: 20 20 20 76 6f 69 64 20 53 65 74 54 61 62 6c 65     void SetTable
0be0: 46 69 6c 74 65 72 28 54 61 62 6c 65 46 69 6c 74  Filter(TableFilt
0bf0: 65 72 44 65 6c 65 67 61 74 65 20 63 61 6c 6c 62  erDelegate callb
0c00: 61 63 6b 2c 20 6f 62 6a 65 63 74 20 63 6f 6e 74  ack, object cont
0c10: 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
0c20: 20 76 6f 69 64 20 43 72 65 61 74 65 43 68 61 6e   void CreateChan
0c30: 67 65 53 65 74 28 72 65 66 20 62 79 74 65 5b 5d  geSet(ref byte[]
0c40: 20 72 61 77 44 61 74 61 29 3b 0d 0a 20 20 20 20   rawData);..    
0c50: 20 20 20 20 76 6f 69 64 20 43 72 65 61 74 65 43      void CreateC
0c60: 68 61 6e 67 65 53 65 74 28 53 74 72 65 61 6d 20  hangeSet(Stream 
0c70: 73 74 72 65 61 6d 2c 20 53 51 4c 69 74 65 43 6f  stream, SQLiteCo
0c80: 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c  nnectionFlags fl
0c90: 61 67 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ags);....       
0ca0: 20 76 6f 69 64 20 43 72 65 61 74 65 50 61 74 63   void CreatePatc
0cb0: 68 53 65 74 28 72 65 66 20 62 79 74 65 5b 5d 20  hSet(ref byte[] 
0cc0: 72 61 77 44 61 74 61 29 3b 0d 0a 20 20 20 20 20  rawData);..     
0cd0: 20 20 20 76 6f 69 64 20 43 72 65 61 74 65 50 61     void CreatePa
0ce0: 74 63 68 53 65 74 28 53 74 72 65 61 6d 20 73 74  tchSet(Stream st
0cf0: 72 65 61 6d 2c 20 53 51 4c 69 74 65 43 6f 6e 6e  ream, SQLiteConn
0d00: 65 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67  ectionFlags flag
0d10: 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 76  s);....        v
0d20: 6f 69 64 20 4c 6f 61 64 44 69 66 66 65 72 65 6e  oid LoadDifferen
0d30: 63 65 73 46 72 6f 6d 54 61 62 6c 65 28 0d 0a 20  cesFromTable(.. 
0d40: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
0d50: 67 20 66 72 6f 6d 44 61 74 61 62 61 73 65 4e 61  g fromDatabaseNa
0d60: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
0d70: 20 73 74 72 69 6e 67 20 74 61 62 6c 65 4e 61 6d   string tableNam
0d80: 65 0d 0a 20 20 20 20 20 20 20 20 29 3b 0d 0a 0d  e..        );...
0d90: 0a 20 20 20 20 20 20 20 20 76 6f 69 64 20 41 70  .        void Ap
0da0: 70 6c 79 43 68 61 6e 67 65 53 65 74 28 0d 0a 20  plyChangeSet(.. 
0db0: 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b             byte[
0dc0: 5d 20 72 61 77 44 61 74 61 2c 0d 0a 20 20 20 20  ] rawData,..    
0dd0: 20 20 20 20 20 20 20 20 43 6f 6e 66 6c 69 63 74          Conflict
0de0: 44 65 6c 65 67 61 74 65 20 63 6f 6e 66 6c 69 63  Delegate conflic
0df0: 74 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  tCallback,..    
0e00: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 63          object c
0e10: 6f 6e 74 65 78 74 0d 0a 20 20 20 20 20 20 20 20  ontext..        
0e20: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 76 6f  );....        vo
0e30: 69 64 20 41 70 70 6c 79 43 68 61 6e 67 65 53 65  id ApplyChangeSe
0e40: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
0e50: 53 74 72 65 61 6d 20 73 74 72 65 61 6d 2c 0d 0a  Stream stream,..
0e60: 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e 66              Conf
0e70: 6c 69 63 74 44 65 6c 65 67 61 74 65 20 63 6f 6e  lictDelegate con
0e80: 66 6c 69 63 74 43 61 6c 6c 62 61 63 6b 2c 0d 0a  flictCallback,..
0e90: 20 20 20 20 20 20 20 20 20 20 20 20 54 61 62 6c              Tabl
0ea0: 65 46 69 6c 74 65 72 44 65 6c 65 67 61 74 65 20  eFilterDelegate 
0eb0: 74 61 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c 62  tableFilterCallb
0ec0: 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
0ed0: 20 20 6f 62 6a 65 63 74 20 63 6f 6e 74 65 78 74    object context
0ee0: 0d 0a 20 20 20 20 20 20 20 20 29 3b 0d 0a 20 20  ..        );..  
0ef0: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
0f00: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
0f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f50: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72  //////....    #r
0f60: 65 67 69 6f 6e 20 53 51 4c 69 74 65 43 68 61 6e  egion SQLiteChan
0f70: 67 65 53 65 74 49 74 65 72 61 74 6f 72 20 43 6c  geSetIterator Cl
0f80: 61 73 73 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  ass..    interna
0f90: 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  l sealed class S
0fa0: 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 49 74  QLiteChangeSetIt
0fb0: 65 72 61 74 6f 72 20 3a 20 49 44 69 73 70 6f 73  erator : IDispos
0fc0: 61 62 6c 65 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  able..    {..   
0fd0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
0fe0: 76 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20  vate Data..     
0ff0: 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74     private IntPt
1000: 72 20 70 44 61 74 61 3b 0d 0a 20 20 20 20 20 20  r pData;..      
1010: 20 20 70 72 69 76 61 74 65 20 49 6e 74 50 74 72    private IntPtr
1020: 20 69 74 65 72 61 74 6f 72 3b 0d 0a 20 20 20 20   iterator;..    
1030: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1040: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
1050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1090: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
10a0: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
10b0: 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
10c0: 20 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74     private SQLit
10d0: 65 43 68 61 6e 67 65 53 65 74 49 74 65 72 61 74  eChangeSetIterat
10e0: 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  or(..           
10f0: 20 49 6e 74 50 74 72 20 70 44 61 74 61 2c 0d 0a   IntPtr pData,..
1100: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50              IntP
1110: 74 72 20 69 74 65 72 61 74 6f 72 0d 0a 20 20 20  tr iterator..   
1120: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
1130: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1140: 20 20 20 74 68 69 73 2e 70 44 61 74 61 20 3d 20     this.pData = 
1150: 70 44 61 74 61 3b 0d 0a 20 20 20 20 20 20 20 20  pData;..        
1160: 20 20 20 20 74 68 69 73 2e 69 74 65 72 61 74 6f      this.iterato
1170: 72 20 3d 20 69 74 65 72 61 74 6f 72 3b 0d 0a 20  r = iterator;.. 
1180: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1190: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
11a0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
11f0: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
1200: 6f 6e 20 53 74 61 74 69 63 20 22 46 61 63 74 6f  on Static "Facto
1210: 72 79 22 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  ry" Methods..   
1220: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
1230: 69 63 20 53 51 4c 69 74 65 43 68 61 6e 67 65 53  ic SQLiteChangeS
1240: 65 74 49 74 65 72 61 74 6f 72 20 43 72 65 61 74  etIterator Creat
1250: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
1260: 62 79 74 65 5b 5d 20 72 61 77 44 61 74 61 0d 0a  byte[] rawData..
1270: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
1280: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1290: 20 20 20 20 20 20 69 66 20 28 72 61 77 44 61 74        if (rawDat
12a0: 61 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  a == null)..    
12b0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
12c0: 77 20 6e 65 77 20 41 72 67 75 6d 65 6e 74 4e 75  w new ArgumentNu
12d0: 6c 6c 45 78 63 65 70 74 69 6f 6e 28 22 72 61 77  llException("raw
12e0: 44 61 74 61 22 29 3b 0d 0a 0d 0a 20 20 20 20 20  Data");....     
12f0: 20 20 20 20 20 20 20 53 51 4c 69 74 65 43 68 61         SQLiteCha
1300: 6e 67 65 53 65 74 49 74 65 72 61 74 6f 72 20 72  ngeSetIterator r
1310: 65 73 75 6c 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  esult = null;.. 
1320: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
1330: 72 20 70 44 61 74 61 20 3d 20 49 6e 74 50 74 72  r pData = IntPtr
1340: 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20  .Zero;..        
1350: 20 20 20 20 49 6e 74 50 74 72 20 69 74 65 72 61      IntPtr itera
1360: 74 6f 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  tor = IntPtr.Zer
1370: 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  o;....          
1380: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
1390: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13a0: 20 20 20 20 20 20 69 6e 74 20 6e 44 61 74 61 20        int nData 
13b0: 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
13c0: 20 20 20 20 20 20 20 20 70 44 61 74 61 20 3d 20          pData = 
13d0: 53 51 4c 69 74 65 42 79 74 65 73 2e 54 6f 49 6e  SQLiteBytes.ToIn
13e0: 74 50 74 72 28 72 61 77 44 61 74 61 2c 20 72 65  tPtr(rawData, re
13f0: 66 20 6e 44 61 74 61 29 3b 0d 0a 0d 0a 20 20 20  f nData);....   
1400: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1410: 28 70 44 61 74 61 20 3d 3d 20 49 6e 74 50 74 72  (pData == IntPtr
1420: 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
1430: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
1440: 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65  w new SQLiteExce
1450: 70 74 69 6f 6e 28 53 51 4c 69 74 65 45 72 72 6f  ption(SQLiteErro
1460: 72 43 6f 64 65 2e 4e 6f 4d 65 6d 2c 20 6e 75 6c  rCode.NoMem, nul
1470: 6c 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  l);....         
1480: 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
1490: 6f 72 43 6f 64 65 20 72 63 20 3d 20 55 6e 73 61  orCode rc = Unsa
14a0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
14b0: 73 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74  sqlite3changeset
14c0: 5f 73 74 61 72 74 28 0d 0a 20 20 20 20 20 20 20  _start(..       
14d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
14e0: 20 69 74 65 72 61 74 6f 72 2c 20 6e 44 61 74 61   iterator, nData
14f0: 2c 20 70 44 61 74 61 29 3b 0d 0a 0d 0a 20 20 20  , pData);....   
1500: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1510: 28 72 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72  (rc != SQLiteErr
1520: 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20  orCode.Ok)..    
1530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1540: 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65  throw new SQLite
1550: 45 78 63 65 70 74 69 6f 6e 28 72 63 2c 20 22 73  Exception(rc, "s
1560: 71 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f  qlite3changeset_
1570: 73 74 61 72 74 22 29 3b 0d 0a 0d 0a 20 20 20 20  start");....    
1580: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
1590: 6c 74 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 43  lt = new SQLiteC
15a0: 68 61 6e 67 65 53 65 74 49 74 65 72 61 74 6f 72  hangeSetIterator
15b0: 28 70 44 61 74 61 2c 20 69 74 65 72 61 74 6f 72  (pData, iterator
15c0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
15d0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66  }..            f
15e0: 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20  inally..        
15f0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1600: 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c         if (resul
1610: 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  t == null)..    
1620: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1640: 20 20 20 69 66 20 28 69 74 65 72 61 74 6f 72 20     if (iterator 
1650: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
1660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1670: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1690: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
16a0: 6f 64 73 2e 73 71 6c 69 74 65 33 63 68 61 6e 67  ods.sqlite3chang
16b0: 65 73 65 74 5f 66 69 6e 61 6c 69 7a 65 28 0d 0a  eset_finalize(..
16c0: 20 20 20 20 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 69 74 65 72              iter
16e0: 61 74 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ator);....      
16f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1700: 20 20 69 74 65 72 61 74 6f 72 20 3d 20 49 6e 74    iterator = Int
1710: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
1720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1730: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1740: 20 20 20 20 20 20 20 20 69 66 20 28 70 44 61 74          if (pDat
1750: 61 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  a != IntPtr.Zero
1760: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1770: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1790: 20 20 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46    SQLiteMemory.F
17a0: 72 65 65 28 70 44 61 74 61 29 3b 0d 0a 20 20 20  ree(pData);..   
17b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17c0: 20 20 20 20 20 70 44 61 74 61 20 3d 20 49 6e 74       pData = Int
17d0: 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20  Ptr.Zero;..     
17e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
17f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1800: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1810: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1820: 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
1830: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
1840: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
1850: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
1860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
18b0: 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c  egion IDisposabl
18c0: 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  e Members..     
18d0: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44     public void D
18e0: 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 20 20  ispose()..      
18f0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1900: 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
1910: 0a 20 20 20 20 20 20 20 20 20 20 20 20 47 43 2e  .            GC.
1920: 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65  SuppressFinalize
1930: 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20  (this);..       
1940: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
1950: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
1960: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
19b0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69       #region IDi
19c0: 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72  sposable "Patter
19d0: 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  n" Members..    
19e0: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
19f0: 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20   disposed;..    
1a00: 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
1a10: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
1a20: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
1a30: 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54 48 52        {..#if THR
1a40: 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a  OW_ON_DISPOSED..
1a50: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1a60: 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20  disposed)..     
1a70: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1a80: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
1a90: 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73  new ObjectDispos
1aa0: 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20  edException(..  
1ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ac0: 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74 65 43    typeof(SQLiteC
1ad0: 68 61 6e 67 65 53 65 74 49 74 65 72 61 74 6f 72  hangeSetIterator
1ae0: 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  ).Name);..      
1af0: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
1b00: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
1b10: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1b60: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
1b70: 20 2f 2a 20 70 72 6f 74 65 63 74 65 64 20 76 69   /* protected vi
1b80: 72 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20 44 69  rtual */ void Di
1b90: 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f  spose(bool dispo
1ba0: 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 7b  sing)..        {
1bb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
1bc0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
1bd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1be0: 20 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29    if (!disposed)
1bf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c00: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1c10: 20 20 20 20 20 20 20 20 20 2f 2f 69 66 20 28 64           //if (d
1c20: 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20  isposing)..     
1c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1c40: 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  /{..            
1c50: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f          //    //
1c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c80: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1c90: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f          //    //
1ca0: 20 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64   dispose managed
1cb0: 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e   resources here.
1cc0: 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1cd0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f          //    //
1ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d00: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1d10: 20 20 20 20 20 20 20 20 2f 2f 7d 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
1d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1d70: 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61  / release unmana
1d80: 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65  ged resources he
1d90: 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20  re.....         
1da0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
1db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
1de0: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 74 65           if (ite
1df0: 72 61 74 6f 72 20 21 3d 20 49 6e 74 50 74 72 2e  rator != IntPtr.
1e00: 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20  Zero)..         
1e10: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e30: 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69        UnsafeNati
1e40: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
1e50: 33 63 68 61 6e 67 65 73 65 74 5f 66 69 6e 61 6c  3changeset_final
1e60: 69 7a 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ize(..          
1e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e80: 20 20 69 74 65 72 61 74 6f 72 29 3b 0d 0a 0d 0a    iterator);....
1e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea0: 20 20 20 20 20 20 20 20 69 74 65 72 61 74 6f 72          iterator
1eb0: 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
1ec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ed0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1ef0: 20 28 70 44 61 74 61 20 21 3d 20 49 6e 74 50 74   (pData != IntPt
1f00: 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
1f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f30: 20 20 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65          SQLiteMe
1f40: 6d 6f 72 79 2e 46 72 65 65 28 70 44 61 74 61 29  mory.Free(pData)
1f50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1f60: 20 20 20 20 20 20 20 20 20 20 20 70 44 61 74 61             pData
1f70: 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
1f80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f90: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1fa0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1fb0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1fc0: 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
1fd0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1ff0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2000: 20 20 2f 2f 20 4e 4f 54 45 3a 20 45 76 65 72 79    // NOTE: Every
2010: 74 68 69 6e 67 20 73 68 6f 75 6c 64 20 62 65 20  thing should be 
2020: 66 75 6c 6c 79 20 64 69 73 70 6f 73 65 64 20 61  fully disposed a
2030: 74 20 74 68 69 73 20 70 6f 69 6e 74 2e 0d 0a 20  t this point... 
2040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2050: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2060: 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72     disposed = tr
2070: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
2080: 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
2090: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
20a0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
20b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20f0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2100: 23 72 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74  #region Destruct
2110: 6f 72 0d 0a 20 20 20 20 20 20 20 20 7e 53 51 4c  or..        ~SQL
2120: 69 74 65 43 68 61 6e 67 65 53 65 74 49 74 65 72  iteChangeSetIter
2130: 61 74 6f 72 28 29 0d 0a 20 20 20 20 20 20 20 20  ator()..        
2140: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44  {..            D
2150: 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a  ispose(false);..
2160: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2170: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
2180: 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
2190: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f  gion....    ////
21a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
21e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23  ///////....    #
21f0: 72 65 67 69 6f 6e 20 53 51 4c 69 74 65 53 74 72  region SQLiteStr
2200: 65 61 6d 41 64 61 70 74 65 72 20 43 6c 61 73 73  eamAdapter Class
2210: 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73  ..    internal s
2220: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
2230: 74 65 53 74 72 65 61 6d 41 64 61 70 74 65 72 20  teStreamAdapter 
2240: 3a 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20  : IDisposable.. 
2250: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72     {..        #r
2260: 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
2270: 74 61 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ta..        priv
2280: 61 74 65 20 53 74 72 65 61 6d 20 73 74 72 65 61  ate Stream strea
2290: 6d 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  m;..        priv
22a0: 61 74 65 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63  ate SQLiteConnec
22b0: 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73 3b  tionFlags flags;
22c0: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
22d0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
22e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2320: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2330: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
2340: 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a  c Constructors..
2350: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53          public S
2360: 51 4c 69 74 65 53 74 72 65 61 6d 41 64 61 70 74  QLiteStreamAdapt
2370: 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er(..           
2380: 20 53 74 72 65 61 6d 20 73 74 72 65 61 6d 2c 0d   Stream stream,.
2390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  .            SQL
23a0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61  iteConnectionFla
23b0: 67 73 20 66 6c 61 67 73 0d 0a 20 20 20 20 20 20  gs flags..      
23c0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
23d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
23e0: 74 68 69 73 2e 73 74 72 65 61 6d 20 3d 20 73 74  this.stream = st
23f0: 72 65 61 6d 3b 0d 0a 20 20 20 20 20 20 20 20 20  ream;..         
2400: 20 20 20 74 68 69 73 2e 66 6c 61 67 73 20 3d 20     this.flags = 
2410: 66 6c 61 67 73 3b 0d 0a 20 20 20 20 20 20 20 20  flags;..        
2420: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
2430: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
2440: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2480: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2490: 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69      #region Nati
24a0: 76 65 20 43 61 6c 6c 62 61 63 6b 20 4d 65 74 68  ve Callback Meth
24b0: 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 70 75 62  ods..        pub
24c0: 6c 69 63 20 53 51 4c 69 74 65 45 72 72 6f 72 43  lic SQLiteErrorC
24d0: 6f 64 65 20 78 49 6e 70 75 74 28 0d 0a 20 20 20  ode xInput(..   
24e0: 20 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20           IntPtr 
24f0: 63 6f 6e 74 65 78 74 2c 0d 0a 20 20 20 20 20 20  context,..      
2500: 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 44 61        IntPtr pDa
2510: 74 61 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ta,..           
2520: 20 72 65 66 20 69 6e 74 20 6e 44 61 74 61 0d 0a   ref int nData..
2530: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2540: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2550: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
2560: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2570: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
2580: 72 65 61 6d 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ream == null).. 
2590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a0: 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
25b0: 45 72 72 6f 72 43 6f 64 65 2e 4d 69 73 75 73 65  ErrorCode.Misuse
25c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
25d0: 20 20 20 20 20 69 66 20 28 6e 44 61 74 61 20 3e       if (nData >
25e0: 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
25f0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2600: 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
2610: 5b 5d 20 62 79 74 65 73 20 3d 20 6e 65 77 20 62  [] bytes = new b
2620: 79 74 65 5b 6e 44 61 74 61 5d 3b 0d 0a 0d 0a 20  yte[nData];.... 
2630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2640: 20 20 20 6e 44 61 74 61 20 3d 20 73 74 72 65 61     nData = strea
2650: 6d 2e 52 65 61 64 28 62 79 74 65 73 2c 20 30 2c  m.Read(bytes, 0,
2660: 20 6e 44 61 74 61 29 3b 0d 0a 20 20 20 20 20 20   nData);..      
2670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61                Ma
2680: 72 73 68 61 6c 2e 43 6f 70 79 28 62 79 74 65 73  rshal.Copy(bytes
2690: 2c 20 30 2c 20 70 44 61 74 61 2c 20 6e 44 61 74  , 0, pData, nDat
26a0: 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  a);..           
26b0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
26c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
26d0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
26e0: 2e 4f 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  .Ok;..          
26f0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2700: 20 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f   catch (Exceptio
2710: 6e 20 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  n e)..          
2720: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2730: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
2740: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2760: 20 69 66 20 28 28 66 6c 61 67 73 20 26 20 53 51   if ((flags & SQ
2770: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c  LiteConnectionFl
2780: 61 67 73 2e 4c 6f 67 43 61 6c 6c 62 61 63 6b 45  ags.LogCallbackE
2790: 78 63 65 70 74 69 6f 6e 29 20 3d 3d 0d 0a 20 20  xception) ==..  
27a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27b0: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
27c0: 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73 2e  ConnectionFlags.
27d0: 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65 70  LogCallbackExcep
27e0: 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 20  tion)..         
27f0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2810: 20 20 20 20 20 20 53 51 4c 69 74 65 4c 6f 67 2e        SQLiteLog.
2820: 4c 6f 67 4d 65 73 73 61 67 65 28 53 51 4c 69 74  LogMessage(SQLit
2830: 65 42 61 73 65 2e 43 4f 52 5f 45 5f 45 58 43 45  eBase.COR_E_EXCE
2840: 50 54 49 4f 4e 2c 0d 0a 20 20 20 20 20 20 20 20  PTION,..        
2850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2860: 20 20 20 20 48 65 6c 70 65 72 4d 65 74 68 6f 64      HelperMethod
2870: 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61 74 28 43  s.StringFormat(C
2880: 75 6c 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65  ultureInfo.Curre
2890: 6e 74 43 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20  ntCulture,..    
28a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28b0: 20 20 20 20 20 20 20 20 22 43 61 75 67 68 74 20          "Caught 
28c0: 65 78 63 65 70 74 69 6f 6e 20 69 6e 20 5c 22 78  exception in \"x
28d0: 49 6e 70 75 74 5c 22 20 6d 65 74 68 6f 64 3a 20  Input\" method: 
28e0: 7b 30 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {0}",..         
28f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2900: 20 20 20 65 29 29 3b 20 2f 2a 20 74 68 72 6f 77     e)); /* throw
2910: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
2920: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2930: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
2950: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
2960: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2970: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2980: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
2990: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
29a0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
29b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
29c0: 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43  urn SQLiteErrorC
29d0: 6f 64 65 2e 49 6f 45 72 72 5f 52 65 61 64 3b 0d  ode.IoErr_Read;.
29e0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
29f0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2a40: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
2a50: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
2a60: 78 4f 75 74 70 75 74 28 0d 0a 20 20 20 20 20 20  xOutput(..      
2a70: 20 20 20 20 20 20 49 6e 74 50 74 72 20 63 6f 6e        IntPtr con
2a80: 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  text,..         
2a90: 20 20 20 49 6e 74 50 74 72 20 70 44 61 74 61 2c     IntPtr pData,
2aa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e  ..            in
2ab0: 74 20 6e 44 61 74 61 0d 0a 20 20 20 20 20 20 20  t nData..       
2ac0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
2ad0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74  {..            t
2ae0: 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
2af0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2b00: 20 20 20 69 66 20 28 73 74 72 65 61 6d 20 3d 3d     if (stream ==
2b10: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
2b20: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2b30: 72 6e 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  rn SQLiteErrorCo
2b40: 64 65 2e 4d 69 73 75 73 65 3b 0d 0a 0d 0a 20 20  de.Misuse;....  
2b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2b60: 20 28 6e 44 61 74 61 20 3e 20 30 29 0d 0a 20 20   (nData > 0)..  
2b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2b80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b90: 20 20 20 20 20 62 79 74 65 5b 5d 20 62 79 74 65       byte[] byte
2ba0: 73 20 3d 20 6e 65 77 20 62 79 74 65 5b 6e 44 61  s = new byte[nDa
2bb0: 74 61 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ta];....        
2bc0: 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 72 73              Mars
2bd0: 68 61 6c 2e 43 6f 70 79 28 70 44 61 74 61 2c 20  hal.Copy(pData, 
2be0: 62 79 74 65 73 2c 20 30 2c 20 6e 44 61 74 61 29  bytes, 0, nData)
2bf0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2c00: 20 20 20 20 20 20 20 73 74 72 65 61 6d 2e 57 72         stream.Wr
2c10: 69 74 65 28 62 79 74 65 73 2c 20 30 2c 20 6e 44  ite(bytes, 0, nD
2c20: 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ata);..         
2c30: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2c40: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 65              stre
2c50: 61 6d 2e 46 6c 75 73 68 28 29 3b 0d 0a 0d 0a 20  am.Flush();.... 
2c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2c70: 65 74 75 72 6e 20 53 51 4c 69 74 65 45 72 72 6f  eturn SQLiteErro
2c80: 72 43 6f 64 65 2e 4f 6b 3b 0d 0a 20 20 20 20 20  rCode.Ok;..     
2c90: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2ca0: 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
2cb0: 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20  eption e)..     
2cc0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2cd0: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
2ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d00: 20 20 20 20 20 20 69 66 20 28 28 66 6c 61 67 73        if ((flags
2d10: 20 26 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74   & SQLiteConnect
2d20: 69 6f 6e 46 6c 61 67 73 2e 4c 6f 67 43 61 6c 6c  ionFlags.LogCall
2d30: 62 61 63 6b 45 78 63 65 70 74 69 6f 6e 29 20 3d  backException) =
2d40: 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
2d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2d60: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 46  QLiteConnectionF
2d70: 6c 61 67 73 2e 4c 6f 67 43 61 6c 6c 62 61 63 6b  lags.LogCallback
2d80: 45 78 63 65 70 74 69 6f 6e 29 0d 0a 20 20 20 20  Exception)..    
2d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2da0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2db0: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
2dc0: 65 4c 6f 67 2e 4c 6f 67 4d 65 73 73 61 67 65 28  eLog.LogMessage(
2dd0: 53 51 4c 69 74 65 42 61 73 65 2e 43 4f 52 5f 45  SQLiteBase.COR_E
2de0: 5f 45 58 43 45 50 54 49 4f 4e 2c 0d 0a 20 20 20  _EXCEPTION,..   
2df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e00: 20 20 20 20 20 20 20 20 20 48 65 6c 70 65 72 4d           HelperM
2e10: 65 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72  ethods.StringFor
2e20: 6d 61 74 28 43 75 6c 74 75 72 65 49 6e 66 6f 2e  mat(CultureInfo.
2e30: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 0d  CurrentCulture,.
2e40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 61               "Ca
2e60: 75 67 68 74 20 65 78 63 65 70 74 69 6f 6e 20 69  ught exception i
2e70: 6e 20 5c 22 78 4f 75 74 70 75 74 5c 22 20 6d 65  n \"xOutput\" me
2e80: 74 68 6f 64 3a 20 7b 30 7d 22 2c 0d 0a 20 20 20  thod: {0}",..   
2e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ea0: 20 20 20 20 20 20 20 20 20 65 29 29 3b 20 2f 2a           e)); /*
2eb0: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
2ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2ed0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ee0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
2ef0: 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20       catch..    
2f00: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f20: 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
2f30: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2f40: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2f50: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2f60: 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
2f70: 45 72 72 6f 72 43 6f 64 65 2e 49 6f 45 72 72 5f  ErrorCode.IoErr_
2f80: 57 72 69 74 65 3b 0d 0a 20 20 20 20 20 20 20 20  Write;..        
2f90: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
2fa0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
2fb0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
3000: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
3010: 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d  posable Members.
3020: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
3030: 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a  void Dispose()..
3040: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3050: 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74         Dispose(t
3060: 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  rue);..         
3070: 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69     GC.SuppressFi
3080: 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20  nalize(this);.. 
3090: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
30a0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
30b0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
30c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3100: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
3110: 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22  on IDisposable "
3120: 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73  Pattern" Members
3130: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
3140: 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b  e bool disposed;
3150: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
3160: 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70  e void CheckDisp
3170: 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20  osed() /* throw 
3180: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  */..        {..#
3190: 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50  if THROW_ON_DISP
31a0: 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20 20 20  OSED..          
31b0: 20 20 69 66 20 28 64 69 73 70 6f 73 65 64 29 0d    if (disposed).
31c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
31d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e0: 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74  throw new Object
31f0: 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f  DisposedExceptio
3200: 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
3210: 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 53          typeof(S
3220: 51 4c 69 74 65 53 74 72 65 61 6d 41 64 61 70 74  QLiteStreamAdapt
3230: 65 72 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20  er).Name);..    
3240: 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69          }..#endi
3250: 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  f..        }....
3260: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
3270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
32b0: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
32c0: 74 65 20 2f 2a 20 70 72 6f 74 65 63 74 65 64 20  te /* protected 
32d0: 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20  virtual */ void 
32e0: 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73  Dispose(bool dis
32f0: 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
3300: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3310: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
3320: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3330: 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65      if (!dispose
3340: 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
3350: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
3360: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
3370: 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20  isposing)..     
3380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
3390: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
33b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
33d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33e0: 20 20 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6f          // dispo
33f0: 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75  se managed resou
3400: 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
3410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3420: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
3450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3460: 20 20 20 20 20 20 69 66 20 28 73 74 72 65 61 6d        if (stream
3470: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
3480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3490: 20 20 20 20 20 20 20 73 74 72 65 61 6d 20 3d 20         stream = 
34a0: 6e 75 6c 6c 3b 20 2f 2a 20 4e 4f 54 20 4f 57 4e  null; /* NOT OWN
34b0: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
34c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
34d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34e0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
34f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
3510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3520: 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e  // release unman
3530: 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
3540: 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
3550: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
3560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3580: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
3590: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
35a0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
35b0: 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
35c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
35d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
35e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
35f0: 20 4e 4f 54 45 3a 20 45 76 65 72 79 74 68 69 6e   NOTE: Everythin
3600: 67 20 73 68 6f 75 6c 64 20 62 65 20 66 75 6c 6c  g should be full
3610: 79 20 64 69 73 70 6f 73 65 64 20 61 74 20 74 68  y disposed at th
3620: 69 73 20 70 6f 69 6e 74 2e 0d 0a 20 20 20 20 20  is point...     
3630: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
3640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
3650: 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  isposed = true;.
3660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
3670: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3680: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
3690: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
36a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
36f0: 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a  ion Destructor..
3700: 20 20 20 20 20 20 20 20 7e 53 51 4c 69 74 65 53          ~SQLiteS
3710: 74 72 65 61 6d 41 64 61 70 74 65 72 28 29 0d 0a  treamAdapter()..
3720: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3730: 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 66         Dispose(f
3740: 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alse);..        
3750: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
3760: 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20  egion..    }..  
3770: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
3780: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
3790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
37d0: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
37e0: 51 4c 69 74 65 53 65 73 73 69 6f 6e 20 43 6c 61  QLiteSession Cla
37f0: 73 73 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73  ss..    public s
3800: 65 61 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69  ealed class SQLi
3810: 74 65 53 65 73 73 69 6f 6e 20 3a 20 49 53 51 4c  teSession : ISQL
3820: 69 74 65 53 65 73 73 69 6f 6e 2c 20 49 44 69 73  iteSession, IDis
3830: 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 7b 0d 0a  posable..    {..
3840: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
3850: 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20  Private Data..  
3860: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 53 51        private SQ
3870: 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 20 63  LiteConnection c
3880: 6f 6e 6e 65 63 74 69 6f 6e 3b 0d 0a 20 20 20 20  onnection;..    
3890: 20 20 20 20 70 72 69 76 61 74 65 20 49 6e 74 50      private IntP
38a0: 74 72 20 73 65 73 73 69 6f 6e 3b 0d 0a 0d 0a 20  tr session;.... 
38b0: 20 20 20 20 20 20 20 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 2f 2f 2f 2f 0d 0a  //////////////..
3900: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
3910: 65 20 54 61 62 6c 65 46 69 6c 74 65 72 44 65 6c  e TableFilterDel
3920: 65 67 61 74 65 20 74 61 62 6c 65 46 69 6c 74 65  egate tableFilte
3930: 72 43 61 6c 6c 62 61 63 6b 3b 0d 0a 20 20 20 20  rCallback;..    
3940: 20 20 20 20 70 72 69 76 61 74 65 20 6f 62 6a 65      private obje
3950: 63 74 20 74 61 62 6c 65 46 69 6c 74 65 72 43 6f  ct tableFilterCo
3960: 6e 74 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20  ntext;..        
3970: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
3980: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
39a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
39b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
39c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
39d0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
39e0: 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63   Public Construc
39f0: 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 70 75  tors..        pu
3a00: 62 6c 69 63 20 53 51 4c 69 74 65 53 65 73 73 69  blic SQLiteSessi
3a10: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
3a20: 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f   SQLiteConnectio
3a30: 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 20  n connection,.. 
3a40: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
3a50: 67 20 64 61 74 61 62 61 73 65 4e 61 6d 65 0d 0a  g databaseName..
3a60: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
3a70: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3a80: 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 6e 65        this.conne
3a90: 63 74 69 6f 6e 20 3d 20 63 6f 6e 6e 65 63 74 69  ction = connecti
3aa0: 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  on;....         
3ab0: 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d     UnsafeNativeM
3ac0: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73 65  ethods.sqlite3se
3ad0: 73 73 69 6f 6e 5f 63 72 65 61 74 65 28 0d 0a 20  ssion_create(.. 
3ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
3af0: 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 2e  QLiteConnection.
3b00: 47 65 74 4e 61 74 69 76 65 48 61 6e 64 6c 65 28  GetNativeHandle(
3b10: 63 6f 6e 6e 65 63 74 69 6f 6e 29 2c 0d 0a 20 20  connection),..  
3b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
3b30: 4c 69 74 65 53 74 72 69 6e 67 2e 47 65 74 55 74  LiteString.GetUt
3b40: 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e  f8BytesFromStrin
3b50: 67 28 64 61 74 61 62 61 73 65 4e 61 6d 65 29 2c  g(databaseName),
3b60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3b70: 20 20 72 65 66 20 73 65 73 73 69 6f 6e 29 3b 0d    ref session);.
3b80: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
3b90: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
3ba0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
3bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
3c00: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74  gion Private Met
3c10: 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 70 72  hods..        pr
3c20: 69 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b  ivate void Check
3c30: 48 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20  Handle()..      
3c40: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3c50: 20 69 66 20 28 73 65 73 73 69 6f 6e 20 3d 3d 20   if (session == 
3c60: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
3c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
3c80: 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f  row new InvalidO
3c90: 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f  perationExceptio
3ca0: 6e 28 22 73 65 73 73 69 6f 6e 20 69 73 20 6e 6f  n("session is no
3cb0: 74 20 6f 70 65 6e 22 29 3b 0d 0a 20 20 20 20 20  t open");..     
3cc0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3d10: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
3d20: 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76     #region Nativ
3d30: 65 20 43 61 6c 6c 62 61 63 6b 20 4d 65 74 68 6f  e Callback Metho
3d40: 64 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ds..        priv
3d50: 61 74 65 20 69 6e 74 20 78 46 69 6c 74 65 72 28  ate int xFilter(
3d60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
3d70: 74 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 2f 2a  tPtr context, /*
3d80: 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
3d90: 20 20 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d            byte[]
3da0: 20 74 62 6c 4e 61 6d 65 0d 0a 20 20 20 20 20 20   tblName..      
3db0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
3dc0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3dd0: 72 65 74 75 72 6e 20 74 61 62 6c 65 46 69 6c 74  return tableFilt
3de0: 65 72 43 61 6c 6c 62 61 63 6b 28 74 61 62 6c 65  erCallback(table
3df0: 46 69 6c 74 65 72 43 6f 6e 74 65 78 74 2c 0d 0a  FilterContext,..
3e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3e10: 53 51 4c 69 74 65 53 74 72 69 6e 67 2e 47 65 74  SQLiteString.Get
3e20: 53 74 72 69 6e 67 46 72 6f 6d 55 74 66 38 42 79  StringFromUtf8By
3e30: 74 65 73 28 74 62 6c 4e 61 6d 65 29 29 20 3f 20  tes(tblName)) ? 
3e40: 31 20 3a 20 30 3b 0d 0a 20 20 20 20 20 20 20 20  1 : 0;..        
3e50: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
3e60: 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 23  egion..        #
3e70: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
3e80: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
3e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
3ed0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
3ee0: 49 53 51 4c 69 74 65 53 65 73 73 69 6f 6e 20 4d  ISQLiteSession M
3ef0: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
3f00: 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 45 6e  public bool IsEn
3f10: 61 62 6c 65 64 28 29 0d 0a 20 20 20 20 20 20 20  abled()..       
3f20: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3f30: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
3f40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68  ..            Ch
3f50: 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a  eckHandle();....
3f60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3f70: 72 6e 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d  rn UnsafeNativeM
3f80: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73 65  ethods.sqlite3se
3f90: 73 73 69 6f 6e 5f 65 6e 61 62 6c 65 28 73 65 73  ssion_enable(ses
3fa0: 73 69 6f 6e 2c 20 2d 31 29 20 21 3d 20 30 3b 0d  sion, -1) != 0;.
3fb0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
3fc0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3fd0: 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
4010: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
4020: 76 6f 69 64 20 53 65 74 54 6f 45 6e 61 62 6c 65  void SetToEnable
4030: 64 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  d()..        {..
4040: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
4050: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20  kDisposed();..  
4060: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 48            CheckH
4070: 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  andle();....    
4080: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
4090: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
40a0: 74 65 33 73 65 73 73 69 6f 6e 5f 65 6e 61 62 6c  te3session_enabl
40b0: 65 28 73 65 73 73 69 6f 6e 2c 20 31 29 3b 0d 0a  e(session, 1);..
40c0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
40d0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
40e0: 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
4120: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
4130: 6f 69 64 20 53 65 74 54 6f 44 69 73 61 62 6c 65  oid SetToDisable
4140: 64 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  d()..        {..
4150: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
4160: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20  kDisposed();..  
4170: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 48            CheckH
4180: 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  andle();....    
4190: 20 20 20 20 20 20 20 20 55 6e 73 61 66 65 4e 61          UnsafeNa
41a0: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
41b0: 74 65 33 73 65 73 73 69 6f 6e 5f 65 6e 61 62 6c  te3session_enabl
41c0: 65 28 73 65 73 73 69 6f 6e 2c 20 30 29 3b 0d 0a  e(session, 0);..
41d0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
41e0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
41f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4200: 2f 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 0d 0a 0d 0a  ////////////....
4230: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
4240: 6f 6f 6c 20 49 73 49 6e 64 69 72 65 63 74 28 29  ool IsIndirect()
4250: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
4260: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
4270: 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20  sposed();..     
4280: 20 20 20 20 20 20 20 43 68 65 63 6b 48 61 6e 64         CheckHand
4290: 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  le();....       
42a0: 20 20 20 20 20 72 65 74 75 72 6e 20 55 6e 73 61       return Unsa
42b0: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
42c0: 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e 5f 69  sqlite3session_i
42d0: 6e 64 69 72 65 63 74 28 73 65 73 73 69 6f 6e 2c  ndirect(session,
42e0: 20 2d 31 29 20 21 3d 20 30 3b 0d 0a 20 20 20 20   -1) != 0;..    
42f0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4300: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
4310: 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
4350: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
4360: 53 65 74 54 6f 49 6e 64 69 72 65 63 74 28 29 0d  SetToIndirect().
4370: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
4380: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
4390: 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
43a0: 20 20 20 20 20 20 43 68 65 63 6b 48 61 6e 64 6c        CheckHandl
43b0: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
43c0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
43d0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73  Methods.sqlite3s
43e0: 65 73 73 69 6f 6e 5f 69 6e 64 69 72 65 63 74 28  ession_indirect(
43f0: 73 65 73 73 69 6f 6e 2c 20 31 29 3b 0d 0a 20 20  session, 1);..  
4400: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
4410: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4420: 2f 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
4460: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
4470: 64 20 53 65 74 54 6f 44 69 72 65 63 74 28 29 0d  d SetToDirect().
4480: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
4490: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
44a0: 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
44b0: 20 20 20 20 20 20 43 68 65 63 6b 48 61 6e 64 6c        CheckHandl
44c0: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
44d0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
44e0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73  Methods.sqlite3s
44f0: 65 73 73 69 6f 6e 5f 69 6e 64 69 72 65 63 74 28  ession_indirect(
4500: 73 65 73 73 69 6f 6e 2c 20 30 29 3b 0d 0a 20 20  session, 0);..  
4510: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
4520: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4530: 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20  //////////....  
4570: 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
4580: 6c 20 49 73 45 6d 70 74 79 28 29 0d 0a 20 20 20  l IsEmpty()..   
4590: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
45a0: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
45b0: 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
45c0: 20 20 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b    CheckHandle();
45d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
45e0: 72 65 74 75 72 6e 20 55 6e 73 61 66 65 4e 61 74  return UnsafeNat
45f0: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
4600: 65 33 73 65 73 73 69 6f 6e 5f 69 73 65 6d 70 74  e3session_isempt
4610: 79 28 73 65 73 73 69 6f 6e 29 20 21 3d 20 30 3b  y(session) != 0;
4620: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
4630: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
4640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
4680: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
4690: 20 76 6f 69 64 20 41 74 74 61 63 68 54 61 62 6c   void AttachTabl
46a0: 65 28 73 74 72 69 6e 67 20 6e 61 6d 65 29 0d 0a  e(string name)..
46b0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
46c0: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
46d0: 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  osed();..       
46e0: 20 20 20 20 20 43 68 65 63 6b 48 61 6e 64 6c 65       CheckHandle
46f0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
4700: 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
4710: 64 65 20 72 63 20 3d 20 55 6e 73 61 66 65 4e 61  de rc = UnsafeNa
4720: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
4730: 74 65 33 73 65 73 73 69 6f 6e 5f 61 74 74 61 63  te3session_attac
4740: 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h(..            
4750: 20 20 20 20 73 65 73 73 69 6f 6e 2c 20 53 51 4c      session, SQL
4760: 69 74 65 53 74 72 69 6e 67 2e 47 65 74 55 74 66  iteString.GetUtf
4770: 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e 67  8BytesFromString
4780: 28 6e 61 6d 65 29 29 3b 0d 0a 0d 0a 20 20 20 20  (name));....    
4790: 20 20 20 20 20 20 20 20 69 66 20 28 72 63 20 21          if (rc !
47a0: 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64  = SQLiteErrorCod
47b0: 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20 20 20  e.Ok)..         
47c0: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
47d0: 20 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e   SQLiteException
47e0: 28 72 63 2c 20 22 73 71 6c 69 74 65 33 73 65 73  (rc, "sqlite3ses
47f0: 73 69 6f 6e 5f 61 74 74 61 63 68 22 29 3b 0d 0a  sion_attach");..
4800: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
4810: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4860: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
4870: 6f 69 64 20 53 65 74 54 61 62 6c 65 46 69 6c 74  oid SetTableFilt
4880: 65 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er(..           
4890: 20 54 61 62 6c 65 46 69 6c 74 65 72 44 65 6c 65   TableFilterDele
48a0: 67 61 74 65 20 63 61 6c 6c 62 61 63 6b 2c 0d 0a  gate callback,..
48b0: 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65              obje
48c0: 63 74 20 63 6f 6e 74 65 78 74 0d 0a 20 20 20 20  ct context..    
48d0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
48e0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
48f0: 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
4900: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
4910: 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a  CheckHandle();..
4920: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
4930: 69 73 2e 74 61 62 6c 65 46 69 6c 74 65 72 43 61  is.tableFilterCa
4940: 6c 6c 62 61 63 6b 20 3d 20 63 61 6c 6c 62 61 63  llback = callbac
4950: 6b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k;..            
4960: 74 68 69 73 2e 74 61 62 6c 65 46 69 6c 74 65 72  this.tableFilter
4970: 43 6f 6e 74 65 78 74 20 3d 20 63 6f 6e 74 65 78  Context = contex
4980: 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  t;....          
4990: 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65    UnsafeNativeMe
49a0: 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73 65 73  thods.sqlite3ses
49b0: 73 69 6f 6e 5f 74 61 62 6c 65 5f 66 69 6c 74 65  sion_table_filte
49c0: 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
49d0: 20 20 20 20 73 65 73 73 69 6f 6e 2c 20 78 46 69      session, xFi
49e0: 6c 74 65 72 2c 20 49 6e 74 50 74 72 2e 5a 65 72  lter, IntPtr.Zer
49f0: 6f 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  o);..        }..
4a00: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
4a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a50: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62  /....        pub
4a60: 6c 69 63 20 76 6f 69 64 20 43 72 65 61 74 65 43  lic void CreateC
4a70: 68 61 6e 67 65 53 65 74 28 0d 0a 20 20 20 20 20  hangeSet(..     
4a80: 20 20 20 20 20 20 20 72 65 66 20 62 79 74 65 5b         ref byte[
4a90: 5d 20 72 61 77 44 61 74 61 0d 0a 20 20 20 20 20  ] rawData..     
4aa0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
4ab0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
4ac0: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
4ad0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43  ;..            C
4ae0: 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d  heckHandle();...
4af0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74  .            Int
4b00: 50 74 72 20 70 44 61 74 61 20 3d 20 49 6e 74 50  Ptr pData = IntP
4b10: 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20  tr.Zero;....    
4b20: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
4b30: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
4b40: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
4b50: 6e 44 61 74 61 20 3d 20 30 3b 0d 0a 0d 0a 20 20  nData = 0;....  
4b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 51                SQ
4b70: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72 63  LiteErrorCode rc
4b80: 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d   = UnsafeNativeM
4b90: 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73 65  ethods.sqlite3se
4ba0: 73 73 69 6f 6e 5f 63 68 61 6e 67 65 73 65 74 28  ssion_changeset(
4bb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4bc0: 20 20 20 20 20 20 73 65 73 73 69 6f 6e 2c 20 72        session, r
4bd0: 65 66 20 6e 44 61 74 61 2c 20 72 65 66 20 70 44  ef nData, ref pD
4be0: 61 74 61 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ata);....       
4bf0: 20 20 20 20 20 20 20 20 20 69 66 20 28 72 63 20           if (rc 
4c00: 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f  != SQLiteErrorCo
4c10: 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20 20  de.Ok)..        
4c20: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
4c30: 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65  w new SQLiteExce
4c40: 70 74 69 6f 6e 28 72 63 2c 20 22 73 71 6c 69 74  ption(rc, "sqlit
4c50: 65 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e 67 65  e3session_change
4c60: 73 65 74 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  set");....      
4c70: 20 20 20 20 20 20 20 20 20 20 72 61 77 44 61 74            rawDat
4c80: 61 20 3d 20 53 51 4c 69 74 65 42 79 74 65 73 2e  a = SQLiteBytes.
4c90: 46 72 6f 6d 49 6e 74 50 74 72 28 70 44 61 74 61  FromIntPtr(pData
4ca0: 2c 20 6e 44 61 74 61 29 3b 0d 0a 20 20 20 20 20  , nData);..     
4cb0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
4cc0: 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20        finally.. 
4cd0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
4ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
4cf0: 20 28 70 44 61 74 61 20 21 3d 20 49 6e 74 50 74   (pData != IntPt
4d00: 72 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20  r.Zero)..       
4d10: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
4d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d30: 53 51 4c 69 74 65 4d 65 6d 6f 72 79 2e 46 72 65  SQLiteMemory.Fre
4d40: 65 28 70 44 61 74 61 29 3b 0d 0a 20 20 20 20 20  e(pData);..     
4d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
4d60: 44 61 74 61 20 3d 20 49 6e 74 50 74 72 2e 5a 65  Data = IntPtr.Ze
4d70: 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro;..           
4d80: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
4d90: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
4da0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
4db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4df0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
4e00: 75 62 6c 69 63 20 76 6f 69 64 20 43 72 65 61 74  ublic void Creat
4e10: 65 43 68 61 6e 67 65 53 65 74 28 0d 0a 20 20 20  eChangeSet(..   
4e20: 20 20 20 20 20 20 20 20 20 53 74 72 65 61 6d 20           Stream 
4e30: 73 74 72 65 61 6d 2c 0d 0a 20 20 20 20 20 20 20  stream,..       
4e40: 20 20 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65       SQLiteConne
4e50: 63 74 69 6f 6e 46 6c 61 67 73 20 66 6c 61 67 73  ctionFlags flags
4e60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
4e70: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
4e80: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
4e90: 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
4ea0: 20 20 20 20 20 20 43 68 65 63 6b 48 61 6e 64 6c        CheckHandl
4eb0: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
4ec0: 20 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43      SQLiteErrorC
4ed0: 6f 64 65 20 72 63 20 3d 20 55 6e 73 61 66 65 4e  ode rc = UnsafeN
4ee0: 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c  ativeMethods.sql
4ef0: 69 74 65 33 73 65 73 73 69 6f 6e 5f 63 68 61 6e  ite3session_chan
4f00: 67 65 73 65 74 5f 73 74 72 6d 28 0d 0a 20 20 20  geset_strm(..   
4f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 73               ses
4f20: 73 69 6f 6e 2c 20 6e 65 77 20 53 51 4c 69 74 65  sion, new SQLite
4f30: 53 74 72 65 61 6d 41 64 61 70 74 65 72 28 73 74  StreamAdapter(st
4f40: 72 65 61 6d 2c 20 66 6c 61 67 73 29 2e 78 4f 75  ream, flags).xOu
4f50: 74 70 75 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  tput,..         
4f60: 20 20 20 20 20 20 20 49 6e 74 50 74 72 2e 5a 65         IntPtr.Ze
4f70: 72 6f 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ro);....        
4f80: 20 20 20 20 69 66 20 28 72 63 20 21 3d 20 53 51      if (rc != SQ
4f90: 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b  LiteErrorCode.Ok
4fa0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
4fb0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 53 51 4c     throw new SQL
4fc0: 69 74 65 45 78 63 65 70 74 69 6f 6e 28 72 63 2c  iteException(rc,
4fd0: 20 22 73 71 6c 69 74 65 33 73 65 73 73 69 6f 6e   "sqlite3session
4fe0: 5f 63 68 61 6e 67 65 73 65 74 5f 73 74 72 6d 22  _changeset_strm"
4ff0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d  );..        }...
5000: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
5010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5050: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c  ....        publ
5060: 69 63 20 76 6f 69 64 20 43 72 65 61 74 65 50 61  ic void CreatePa
5070: 74 63 68 53 65 74 28 0d 0a 20 20 20 20 20 20 20  tchSet(..       
5080: 20 20 20 20 20 72 65 66 20 62 79 74 65 5b 5d 20       ref byte[] 
5090: 72 61 77 44 61 74 61 0d 0a 20 20 20 20 20 20 20  rawData..       
50a0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
50b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 43  {..            C
50c0: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
50d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65  .            Che
50e0: 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20  ckHandle();.... 
50f0: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
5100: 72 20 70 44 61 74 61 20 3d 20 49 6e 74 50 74 72  r pData = IntPtr
5110: 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20  .Zero;....      
5120: 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
5130: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
5140: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6e 44            int nD
5150: 61 74 61 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  ata = 0;....    
5160: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
5170: 74 65 45 72 72 6f 72 43 6f 64 65 20 72 63 20 3d  teErrorCode rc =
5180: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
5190: 68 6f 64 73 2e 73 71 6c 69 74 65 33 73 65 73 73  hods.sqlite3sess
51a0: 69 6f 6e 5f 70 61 74 63 68 73 65 74 28 0d 0a 20  ion_patchset(.. 
51b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51c0: 20 20 20 73 65 73 73 69 6f 6e 2c 20 72 65 66 20     session, ref 
51d0: 6e 44 61 74 61 2c 20 72 65 66 20 70 44 61 74 61  nData, ref pData
51e0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
51f0: 20 20 20 20 20 20 69 66 20 28 72 63 20 21 3d 20        if (rc != 
5200: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 2e  SQLiteErrorCode.
5210: 4f 6b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Ok)..           
5220: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
5230: 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74 69  ew SQLiteExcepti
5240: 6f 6e 28 72 63 2c 20 22 73 71 6c 69 74 65 33 73  on(rc, "sqlite3s
5250: 65 73 73 69 6f 6e 5f 70 61 74 63 68 73 65 74 22  ession_patchset"
5260: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
5270: 20 20 20 20 20 20 72 61 77 44 61 74 61 20 3d 20        rawData = 
5280: 53 51 4c 69 74 65 42 79 74 65 73 2e 46 72 6f 6d  SQLiteBytes.From
5290: 49 6e 74 50 74 72 28 70 44 61 74 61 2c 20 6e 44  IntPtr(pData, nD
52a0: 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ata);..         
52b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
52c0: 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
52d0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
52e0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 44            if (pD
52f0: 61 74 61 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  ata != IntPtr.Ze
5300: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
5310: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5320: 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69              SQLi
5330: 74 65 4d 65 6d 6f 72 79 2e 46 72 65 65 28 70 44  teMemory.Free(pD
5340: 61 74 61 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ata);..         
5350: 20 20 20 20 20 20 20 20 20 20 20 70 44 61 74 61             pData
5360: 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
5370: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5380: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
5390: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
53a0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
53b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
53f0: 0a 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69  ...        publi
5400: 63 20 76 6f 69 64 20 43 72 65 61 74 65 50 61 74  c void CreatePat
5410: 63 68 53 65 74 28 0d 0a 20 20 20 20 20 20 20 20  chSet(..        
5420: 20 20 20 20 53 74 72 65 61 6d 20 73 74 72 65 61      Stream strea
5430: 6d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m,..            
5440: 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e  SQLiteConnection
5450: 46 6c 61 67 73 20 66 6c 61 67 73 0d 0a 20 20 20  Flags flags..   
5460: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
5470: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
5480: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
5490: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
54a0: 20 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d   CheckHandle();.
54b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 53  ...            S
54c0: 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20 72  QLiteErrorCode r
54d0: 63 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76 65  c = UnsafeNative
54e0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73  Methods.sqlite3s
54f0: 65 73 73 69 6f 6e 5f 70 61 74 63 68 73 65 74 5f  ession_patchset_
5500: 73 74 72 6d 28 0d 0a 20 20 20 20 20 20 20 20 20  strm(..         
5510: 20 20 20 20 20 20 20 73 65 73 73 69 6f 6e 2c 20         session, 
5520: 6e 65 77 20 53 51 4c 69 74 65 53 74 72 65 61 6d  new SQLiteStream
5530: 41 64 61 70 74 65 72 28 73 74 72 65 61 6d 2c 20  Adapter(stream, 
5540: 66 6c 61 67 73 29 2e 78 4f 75 74 70 75 74 2c 0d  flags).xOutput,.
5550: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5560: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
5570: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
5580: 20 28 72 63 20 21 3d 20 53 51 4c 69 74 65 45 72   (rc != SQLiteEr
5590: 72 6f 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20  rorCode.Ok)..   
55a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
55b0: 6f 77 20 6e 65 77 20 53 51 4c 69 74 65 45 78 63  ow new SQLiteExc
55c0: 65 70 74 69 6f 6e 28 72 63 2c 20 22 73 71 6c 69  eption(rc, "sqli
55d0: 74 65 33 73 65 73 73 69 6f 6e 5f 70 61 74 63 68  te3session_patch
55e0: 73 65 74 5f 73 74 72 6d 22 29 3b 0d 0a 20 20 20  set_strm");..   
55f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
5600: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
5650: 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
5660: 20 4c 6f 61 64 44 69 66 66 65 72 65 6e 63 65 73   LoadDifferences
5670: 46 72 6f 6d 54 61 62 6c 65 28 0d 0a 20 20 20 20  FromTable(..    
5680: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66          string f
5690: 72 6f 6d 44 61 74 61 62 61 73 65 4e 61 6d 65 2c  romDatabaseName,
56a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
56b0: 72 69 6e 67 20 74 61 62 6c 65 4e 61 6d 65 0d 0a  ring tableName..
56c0: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
56d0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
56e0: 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
56f0: 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  sed();..        
5700: 20 20 20 20 43 68 65 63 6b 48 61 6e 64 6c 65 28      CheckHandle(
5710: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
5720: 20 20 49 6e 74 50 74 72 20 70 45 72 72 6f 72 20    IntPtr pError 
5730: 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a  = IntPtr.Zero;..
5740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
5750: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
5760: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5770: 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64    SQLiteErrorCod
5780: 65 20 72 63 20 3d 20 55 6e 73 61 66 65 4e 61 74  e rc = UnsafeNat
5790: 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74  iveMethods.sqlit
57a0: 65 33 73 65 73 73 69 6f 6e 5f 64 69 66 66 28 0d  e3session_diff(.
57b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
57c0: 20 20 20 20 20 73 65 73 73 69 6f 6e 2c 20 53 51       session, SQ
57d0: 4c 69 74 65 53 74 72 69 6e 67 2e 47 65 74 55 74  LiteString.GetUt
57e0: 66 38 42 79 74 65 73 46 72 6f 6d 53 74 72 69 6e  f8BytesFromStrin
57f0: 67 28 66 72 6f 6d 44 61 74 61 62 61 73 65 4e 61  g(fromDatabaseNa
5800: 6d 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  me),..          
5810: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
5820: 53 74 72 69 6e 67 2e 47 65 74 55 74 66 38 42 79  String.GetUtf8By
5830: 74 65 73 46 72 6f 6d 53 74 72 69 6e 67 28 74 61  tesFromString(ta
5840: 62 6c 65 4e 61 6d 65 29 2c 20 72 65 66 20 70 45  bleName), ref pE
5850: 72 72 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  rror);....      
5860: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 63            if (rc
5870: 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   != SQLiteErrorC
5880: 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20  ode.Ok)..       
5890: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
58a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58b0: 73 74 72 69 6e 67 20 65 72 72 6f 72 20 3d 20 6e  string error = n
58c0: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
58d0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
58e0: 70 45 72 72 6f 72 20 21 3d 20 49 6e 74 50 74 72  pError != IntPtr
58f0: 2e 5a 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20  .Zero)..        
5900: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
5910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5920: 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 53         error = S
5930: 51 4c 69 74 65 53 74 72 69 6e 67 2e 53 74 72 69  QLiteString.Stri
5940: 6e 67 46 72 6f 6d 55 74 66 38 49 6e 74 50 74 72  ngFromUtf8IntPtr
5950: 28 70 45 72 72 6f 72 29 3b 0d 0a 0d 0a 20 20 20  (pError);....   
5960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5970: 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
5980: 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 65  .IsNullOrEmpty(e
5990: 72 72 6f 72 29 29 0d 0a 20 20 20 20 20 20 20 20  rror))..        
59a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
59c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
59d0: 72 72 6f 72 20 3d 20 48 65 6c 70 65 72 4d 65 74  rror = HelperMet
59e0: 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d 61  hods.StringForma
59f0: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
5a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a10: 20 20 20 20 43 75 6c 74 75 72 65 49 6e 66 6f 2e      CultureInfo.
5a20: 43 75 72 72 65 6e 74 43 75 6c 74 75 72 65 2c 20  CurrentCulture, 
5a30: 22 3a 20 7b 30 7d 22 2c 20 65 72 72 6f 72 29 3b  ": {0}", error);
5a40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5a50: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
5a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a70: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
5a80: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
5a90: 6e 65 77 20 53 51 4c 69 74 65 45 78 63 65 70 74  new SQLiteExcept
5aa0: 69 6f 6e 28 72 63 2c 20 48 65 6c 70 65 72 4d 65  ion(rc, HelperMe
5ab0: 74 68 6f 64 73 2e 53 74 72 69 6e 67 46 6f 72 6d  thods.StringForm
5ac0: 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
5ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 75 6c               Cul
5ae0: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
5af0: 43 75 6c 74 75 72 65 2c 20 22 7b 30 7d 7b 31 7d  Culture, "{0}{1}
5b00: 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
5b10: 20 20 20 20 20 20 20 20 20 20 20 20 22 73 71 6c              "sql
5b20: 69 74 65 33 73 65 73 73 69 6f 6e 5f 64 69 66 66  ite3session_diff
5b30: 22 2c 20 65 72 72 6f 72 29 29 3b 0d 0a 20 20 20  ", error));..   
5b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5b50: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
5b60: 20 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c             final
5b70: 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
5b80: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5b90: 20 20 20 69 66 20 28 70 45 72 72 6f 72 20 21 3d     if (pError !=
5ba0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20   IntPtr.Zero).. 
5bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
5bc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5bd0: 20 20 20 20 20 20 53 51 4c 69 74 65 4d 65 6d 6f        SQLiteMemo
5be0: 72 79 2e 46 72 65 65 28 70 45 72 72 6f 72 29 3b  ry.Free(pError);
5bf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5c00: 20 20 20 20 20 20 70 45 72 72 6f 72 20 3d 20 49        pError = I
5c10: 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20  ntPtr.Zero;..   
5c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
5c30: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
5c40: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
5c50: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
5c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20  ///////////.... 
5ca0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
5cb0: 69 64 20 41 70 70 6c 79 43 68 61 6e 67 65 53 65  id ApplyChangeSe
5cc0: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
5cd0: 62 79 74 65 5b 5d 20 72 61 77 44 61 74 61 2c 0d  byte[] rawData,.
5ce0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e  .            Con
5cf0: 66 6c 69 63 74 44 65 6c 65 67 61 74 65 20 63 6f  flictDelegate co
5d00: 6e 66 6c 69 63 74 43 61 6c 6c 62 61 63 6b 2c 0d  nflictCallback,.
5d10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a  .            obj
5d20: 65 63 74 20 63 6c 69 65 6e 74 44 61 74 61 0d 0a  ect clientData..
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
5d40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
5d50: 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
5d60: 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
5d70: 20 20 20 20 20 20 69 6e 74 20 6e 44 61 74 61 20        int nData 
5d80: 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  = 0;..          
5d90: 20 20 49 6e 74 50 74 72 20 70 44 61 74 61 20 3d    IntPtr pData =
5da0: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
5db0: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
5dc0: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
5dd0: 20 66 6c 61 67 73 20 3d 20 63 6f 6e 6e 65 63 74   flags = connect
5de0: 69 6f 6e 2e 46 6c 61 67 73 3b 0d 0a 0d 0a 20 20  ion.Flags;....  
5df0: 20 20 20 20 20 20 20 20 20 20 55 6e 73 61 66 65            Unsafe
5e00: 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e 78 53  NativeMethods.xS
5e10: 65 73 73 69 6f 6e 43 6f 6e 66 6c 69 63 74 20 78  essionConflict x
5e20: 43 6f 6e 66 6c 69 63 74 20 3d 20 6e 65 77 20 55  Conflict = new U
5e30: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
5e40: 64 73 2e 78 53 65 73 73 69 6f 6e 43 6f 6e 66 6c  ds.xSessionConfl
5e50: 69 63 74 28 64 65 6c 65 67 61 74 65 28 49 6e 74  ict(delegate(Int
5e60: 50 74 72 20 63 6f 6e 74 65 78 74 2c 20 53 51 4c  Ptr context, SQL
5e70: 69 74 65 43 68 61 6e 67 65 53 65 74 43 6f 6e 66  iteChangeSetConf
5e80: 6c 69 63 74 54 79 70 65 20 74 79 70 65 2c 20 49  lictType type, I
5e90: 6e 74 50 74 72 20 69 74 65 72 61 74 6f 72 29 0d  ntPtr iterator).
5ea0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
5eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ec0: 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74  ISQLiteChangeSet
5ed0: 4d 65 74 61 64 61 74 61 49 74 65 6d 20 69 74 65  MetadataItem ite
5ee0: 6d 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  m = null;....   
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
5f00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5f10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
5f20: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
5f30: 63 6f 6e 66 6c 69 63 74 43 61 6c 6c 62 61 63 6b  conflictCallback
5f40: 28 63 6c 69 65 6e 74 44 61 74 61 2c 20 74 79 70  (clientData, typ
5f50: 65 2c 20 69 74 65 6d 29 3b 0d 0a 20 20 20 20 20  e, item);..     
5f60: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
5f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
5f80: 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
5f90: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
5fa0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5fb0: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
5fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fd0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
5ff0: 20 28 28 66 6c 61 67 73 20 26 20 53 51 4c 69 74   ((flags & SQLit
6000: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
6010: 2e 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65  .LogCallbackExce
6020: 70 74 69 6f 6e 29 20 3d 3d 0d 0a 20 20 20 20 20  ption) ==..     
6030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6040: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
6050: 65 43 6f 6e 6e 65 63 74 69 6f 6e 46 6c 61 67 73  eConnectionFlags
6060: 2e 4c 6f 67 43 61 6c 6c 62 61 63 6b 45 78 63 65  .LogCallbackExce
6070: 70 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20  ption)..        
6080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6090: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
60a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
60b0: 51 4c 69 74 65 4c 6f 67 2e 4c 6f 67 4d 65 73 73  QLiteLog.LogMess
60c0: 61 67 65 28 53 51 4c 69 74 65 42 61 73 65 2e 43  age(SQLiteBase.C
60d0: 4f 52 5f 45 5f 45 58 43 45 50 54 49 4f 4e 2c 0d  OR_E_EXCEPTION,.
60e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
60f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6100: 20 48 65 6c 70 65 72 4d 65 74 68 6f 64 73 2e 53   HelperMethods.S
6110: 74 72 69 6e 67 46 6f 72 6d 61 74 28 43 75 6c 74  tringFormat(Cult
6120: 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74 43  ureInfo.CurrentC
6130: 75 6c 74 75 72 65 2c 0d 0a 20 20 20 20 20 20 20  ulture,..       
6140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6150: 20 20 20 20 20 20 20 20 20 22 43 61 75 67 68 74           "Caught
6160: 20 65 78 63 65 70 74 69 6f 6e 20 69 6e 20 5c 22   exception in \"
6170: 78 43 6f 6e 66 6c 69 63 74 5c 22 20 6d 65 74 68  xConflict\" meth
6180: 6f 64 3a 20 7b 30 7d 22 2c 0d 0a 20 20 20 20 20  od: {0}",..     
6190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61a0: 20 20 20 20 20 20 20 20 20 20 20 65 29 29 3b 20             e)); 
61b0: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
61c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61d0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
61e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
61f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6200: 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20     catch..      
6210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
6220: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6230: 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
6240: 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
6250: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
6260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6270: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
6280: 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69       return SQLi
6290: 74 65 43 68 61 6e 67 65 53 65 74 43 6f 6e 66 6c  teChangeSetConfl
62a0: 69 63 74 52 65 73 75 6c 74 2e 41 62 6f 72 74 3b  ictResult.Abort;
62b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 29  ..            })
62c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
62d0: 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65   SQLiteErrorCode
62e0: 20 72 63 20 3d 20 55 6e 73 61 66 65 4e 61 74 69   rc = UnsafeNati
62f0: 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65  veMethods.sqlite
6300: 33 63 68 61 6e 67 65 73 65 74 5f 61 70 70 6c 79  3changeset_apply
6310: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
6320: 20 20 20 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74     SQLiteConnect
6330: 69 6f 6e 2e 47 65 74 4e 61 74 69 76 65 48 61 6e  ion.GetNativeHan
6340: 64 6c 65 28 63 6f 6e 6e 65 63 74 69 6f 6e 29 2c  dle(connection),
6350: 20 6e 44 61 74 61 2c 20 70 44 61 74 61 2c 0d 0a   nData, pData,..
6360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6370: 6e 75 6c 6c 2c 20 78 43 6f 6e 66 6c 69 63 74 2c  null, xConflict,
6380: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 3b 0d 0a   IntPtr.Zero);..
6390: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
63a0: 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
63e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
63f0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
6400: 6f 69 64 20 41 70 70 6c 79 43 68 61 6e 67 65 53  oid ApplyChangeS
6410: 65 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  et(..           
6420: 20 53 74 72 65 61 6d 20 73 74 72 65 61 6d 2c 0d   Stream stream,.
6430: 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e  .            Con
6440: 66 6c 69 63 74 44 65 6c 65 67 61 74 65 20 63 6f  flictDelegate co
6450: 6e 66 6c 69 63 74 43 61 6c 6c 62 61 63 6b 2c 0d  nflictCallback,.
6460: 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 61 62  .            Tab
6470: 6c 65 46 69 6c 74 65 72 44 65 6c 65 67 61 74 65  leFilterDelegate
6480: 20 74 61 62 6c 65 46 69 6c 74 65 72 43 61 6c 6c   tableFilterCall
6490: 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
64a0: 20 20 20 6f 62 6a 65 63 74 20 63 6f 6e 74 65 78     object contex
64b0: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  t..            )
64c0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
64d0: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
64e0: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
64f0: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
6500: 65 77 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65  ew NotImplemente
6510: 64 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 20  dException();.. 
6520: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
6530: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
6540: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
6550: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6560: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6590: 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
65a0: 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d  on IDisposable M
65b0: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
65c0: 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
65d0: 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ose()..        {
65e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69  ..            Di
65f0: 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
6600: 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70            GC.Sup
6610: 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68  pressFinalize(th
6620: 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  is);..        }.
6630: 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
6640: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
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 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6690: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
66a0: 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f    #region IDispo
66b0: 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20  sable "Pattern" 
66c0: 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
66d0: 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69   private bool di
66e0: 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20  sposed;..       
66f0: 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68   private void Ch
6700: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a  eckDisposed() /*
6710: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
6720: 20 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f     {..#if THROW_
6730: 4f 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20 20  ON_DISPOSED..   
6740: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73           if (dis
6750: 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20  posed)..        
6760: 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65          throw ne
6770: 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64  w ObjectDisposed
6780: 45 78 63 65 70 74 69 6f 6e 28 74 79 70 65 6f 66  Exception(typeof
6790: 28 53 51 4c 69 74 65 53 65 73 73 69 6f 6e 29 2e  (SQLiteSession).
67a0: 4e 61 6d 65 29 3b 0d 0a 23 65 6e 64 69 66 0d 0a  Name);..#endif..
67b0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
67c0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
67d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
6810: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
6820: 2f 2a 20 70 72 6f 74 65 63 74 65 64 20 76 69 72  /* protected vir
6830: 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20 44 69 73  tual */ void Dis
6840: 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f 73  pose(bool dispos
6850: 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ing)..        {.
6860: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79  .            try
6870: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
6880: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6890: 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d   if (!disposed).
68a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
68b0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
68c0: 20 20 20 20 20 20 20 20 2f 2f 69 66 20 28 64 69          //if (di
68d0: 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20  sposing)..      
68e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
68f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
6900: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f         //    ///
6910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6930: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
6940: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 20         //    // 
6950: 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20  dispose managed 
6960: 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
6970: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
6980: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f 2f         //    ///
6990: 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
69c0: 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20 20         //}....  
69d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
69e0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
69f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a00: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
6a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
6a20: 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67   release unmanag
6a30: 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
6a40: 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
6a50: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 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: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
6a90: 20 20 20 20 20 20 20 20 69 66 20 28 73 65 73 73          if (sess
6aa0: 69 6f 6e 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65  ion != IntPtr.Ze
6ab0: 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro)..           
6ac0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
6ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ae0: 20 20 20 20 55 6e 73 61 66 65 4e 61 74 69 76 65      UnsafeNative
6af0: 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33 73  Methods.sqlite3s
6b00: 65 73 73 69 6f 6e 5f 64 65 6c 65 74 65 28 73 65  ession_delete(se
6b10: 73 73 69 6f 6e 29 3b 0d 0a 20 20 20 20 20 20 20  ssion);..       
6b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b30: 20 73 65 73 73 69 6f 6e 20 3d 20 49 6e 74 50 74   session = IntPt
6b40: 72 2e 5a 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20  r.Zero;..       
6b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
6b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b70: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
6b80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 69  ..            fi
6b90: 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
6ba0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
6bb0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
6bc0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
6bd0: 45 3a 20 45 76 65 72 79 74 68 69 6e 67 20 73 68  E: Everything sh
6be0: 6f 75 6c 64 20 62 65 20 66 75 6c 6c 79 20 64 69  ould be fully di
6bf0: 73 70 6f 73 65 64 20 61 74 20 74 68 69 73 20 70  sposed at this p
6c00: 6f 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20 20 20  oint...         
6c10: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
6c20: 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f             dispo
6c30: 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  sed = true;..   
6c40: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
6c50: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
6c60: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
6c70: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
6cc0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
6cd0: 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20  Destructor..    
6ce0: 20 20 20 20 7e 53 51 4c 69 74 65 53 65 73 73 69      ~SQLiteSessi
6cf0: 6f 6e 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  on()..        {.
6d00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73  .            Dis
6d10: 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20  pose(false);..  
6d20: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
6d30: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
6d40: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
6d50: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
6d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6da0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
6db0: 67 69 6f 6e 20 53 51 4c 69 74 65 4d 65 6d 6f 72  gion SQLiteMemor
6dc0: 79 43 68 61 6e 67 65 53 65 74 20 43 6c 61 73 73  yChangeSet Class
6dd0: 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 73 65 61  ..    public sea
6de0: 6c 65 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65  led class SQLite
6df0: 4d 65 6d 6f 72 79 43 68 61 6e 67 65 53 65 74 20  MemoryChangeSet 
6e00: 3a 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53  : ISQLiteChangeS
6e10: 65 74 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 0d  et, IDisposable.
6e20: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20  .    {..        
6e30: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
6e40: 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 70 72  Data..        pr
6e50: 69 76 61 74 65 20 53 51 4c 69 74 65 43 68 61 6e  ivate SQLiteChan
6e60: 67 65 53 65 74 49 74 65 72 61 74 6f 72 20 69 74  geSetIterator it
6e70: 65 72 61 74 6f 72 3b 0d 0a 20 20 20 20 20 20 20  erator;..       
6e80: 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 3f 20 69   private bool? i
6e90: 73 50 61 74 63 68 53 65 74 3b 0d 0a 20 20 20 20  sPatchSet;..    
6ea0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
6eb0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
6ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6f00: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
6f10: 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
6f20: 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
6f30: 20 20 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69     internal SQLi
6f40: 74 65 4d 65 6d 6f 72 79 43 68 61 6e 67 65 53 65  teMemoryChangeSe
6f50: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
6f60: 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 49  SQLiteChangeSetI
6f70: 74 65 72 61 74 6f 72 20 69 74 65 72 61 74 6f 72  terator iterator
6f80: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62  ,..            b
6f90: 6f 6f 6c 3f 20 69 73 50 61 74 63 68 53 65 74 0d  ool? isPatchSet.
6fa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a  .            )..
6fb0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6fc0: 20 20 20 20 20 20 20 74 68 69 73 2e 69 74 65 72         this.iter
6fd0: 61 74 6f 72 20 3d 20 69 74 65 72 61 74 6f 72 3b  ator = iterator;
6fe0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68  ..            th
6ff0: 69 73 2e 69 73 50 61 74 63 68 53 65 74 20 3d 20  is.isPatchSet = 
7000: 69 73 50 61 74 63 68 53 65 74 3b 0d 0a 20 20 20  isPatchSet;..   
7010: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
7020: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
7030: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
7040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7080: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
7090: 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65   ISQLiteChangeSe
70a0: 74 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  t Members..     
70b0: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 3f 20     public bool? 
70c0: 49 73 50 61 74 63 68 53 65 74 0d 0a 20 20 20 20  IsPatchSet..    
70d0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
70e0: 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69     get { CheckDi
70f0: 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e  sposed(); return
7100: 20 69 73 50 61 74 63 68 53 65 74 3b 20 7d 0d 0a   isPatchSet; }..
7110: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
7120: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
7130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7170: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
7180: 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 20  SQLiteChangeSet 
7190: 49 6e 76 65 72 74 28 29 0d 0a 20 20 20 20 20 20  Invert()..      
71a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
71b0: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
71c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
71d0: 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d   throw new NotIm
71e0: 70 6c 65 6d 65 6e 74 65 64 45 78 63 65 70 74 69  plementedExcepti
71f0: 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  on();..        }
7200: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
7210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7250: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
7260: 75 62 6c 69 63 20 49 53 51 4c 69 74 65 43 68 61  ublic ISQLiteCha
7270: 6e 67 65 53 65 74 20 43 6f 6d 62 69 6e 65 57 69  ngeSet CombineWi
7280: 74 68 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  th(..           
7290: 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65   ISQLiteChangeSe
72a0: 74 20 63 68 61 6e 67 65 53 65 74 0d 0a 20 20 20  t changeSet..   
72b0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
72c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
72d0: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
72e0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
72f0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74     throw new Not
7300: 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65 70  ImplementedExcep
7310: 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20  tion();..       
7320: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
7330: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
7340: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
7350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
7390: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69       #region IDi
73a0: 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73  sposable Members
73b0: 0d 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63  ..        public
73c0: 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d   void Dispose().
73d0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
73e0: 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
73f0: 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  true);..        
7400: 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46      GC.SuppressF
7410: 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a  inalize(this);..
7420: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
7430: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
7440: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
7450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7490: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
74a0: 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
74b0: 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72  "Pattern" Member
74c0: 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  s..        priva
74d0: 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64  te bool disposed
74e0: 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ;..        priva
74f0: 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73  te void CheckDis
7500: 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77  posed() /* throw
7510: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a   */..        {..
7520: 23 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53  #if THROW_ON_DIS
7530: 50 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20 20  POSED..         
7540: 20 20 20 69 66 20 28 64 69 73 70 6f 73 65 64 29     if (disposed)
7550: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
7560: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7570: 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63   throw new Objec
7580: 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69  tDisposedExcepti
7590: 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
75a0: 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28           typeof(
75b0: 53 51 4c 69 74 65 4d 65 6d 6f 72 79 43 68 61 6e  SQLiteMemoryChan
75c0: 67 65 53 65 74 29 2e 4e 61 6d 65 29 3b 0d 0a 20  geSet).Name);.. 
75d0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65             }..#e
75e0: 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ndif..        }.
75f0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
7600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7640: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
7650: 69 76 61 74 65 20 2f 2a 20 70 72 6f 74 65 63 74  ivate /* protect
7660: 65 64 20 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f  ed virtual */ vo
7670: 69 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20  id Dispose(bool 
7680: 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20  disposing)..    
7690: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
76a0: 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
76b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
76c0: 20 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70         if (!disp
76d0: 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20  osed)..         
76e0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
76f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
7700: 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20   (disposing)..  
7710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7720: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7730: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
7740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7760: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
7770: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 69             // di
7780: 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65  spose managed re
7790: 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
77a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
77b0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
77c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
77e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
77f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 74 65           if (ite
7800: 72 61 74 6f 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a  rator != null)..
7810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7820: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7840: 20 20 20 20 20 20 20 69 74 65 72 61 74 6f 72 2e         iterator.
7850: 44 69 73 70 6f 73 65 28 29 3b 0d 0a 20 20 20 20  Dispose();..    
7860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7870: 20 20 20 20 20 20 20 20 69 74 65 72 61 74 6f 72          iterator
7880: 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20   = null;..      
7890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78a0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
78b0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
78c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
78d0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
78e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78f0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20  ////////..      
7900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
7910: 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67   release unmanag
7920: 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
7930: 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
7940: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
7950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7980: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
7990: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
79a0: 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20  finally..       
79b0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
79c0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
79d0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
79e0: 4f 54 45 3a 20 45 76 65 72 79 74 68 69 6e 67 20  OTE: Everything 
79f0: 73 68 6f 75 6c 64 20 62 65 20 66 75 6c 6c 79 20  should be fully 
7a00: 64 69 73 70 6f 73 65 64 20 61 74 20 74 68 69 73  disposed at this
7a10: 20 70 6f 69 6e 74 2e 0d 0a 20 20 20 20 20 20 20   point...       
7a20: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
7a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73               dis
7a40: 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20  posed = true;.. 
7a50: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
7a60: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
7a70: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
7a80: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
7a90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7ad0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
7ae0: 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20  n Destructor..  
7af0: 20 20 20 20 20 20 7e 53 51 4c 69 74 65 4d 65 6d        ~SQLiteMem
7b00: 6f 72 79 43 68 61 6e 67 65 53 65 74 28 29 0d 0a  oryChangeSet()..
7b10: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7b20: 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 66         Dispose(f
7b30: 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alse);..        
7b40: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
7b50: 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20  egion..    }..  
7b60: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
7b70: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
7bc0: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 53  ...    #region S
7bd0: 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 45 6e  QLiteChangeSetEn
7be0: 75 6d 65 72 61 74 6f 72 20 43 6c 61 73 73 0d 0a  umerator Class..
7bf0: 20 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65      public seale
7c00: 64 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43 68  d class SQLiteCh
7c10: 61 6e 67 65 53 65 74 45 6e 75 6d 65 72 61 74 6f  angeSetEnumerato
7c20: 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a  r..            :
7c30: 20 49 45 6e 75 6d 65 72 61 74 6f 72 3c 49 53 51   IEnumerator<ISQ
7c40: 4c 69 74 65 43 68 61 6e 67 65 53 65 74 4d 65 74  LiteChangeSetMet
7c50: 61 64 61 74 61 49 74 65 6d 3e 0d 0a 20 20 20 20  adataItem>..    
7c60: 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  {..        #regi
7c70: 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
7c80: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
7c90: 20 69 6e 74 65 72 6e 61 6c 20 53 51 4c 69 74 65   internal SQLite
7ca0: 43 68 61 6e 67 65 53 65 74 45 6e 75 6d 65 72 61  ChangeSetEnumera
7cb0: 74 6f 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tor(..          
7cc0: 20 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53    ISQLiteChangeS
7cd0: 65 74 20 63 68 61 6e 67 65 53 65 74 0d 0a 20 20  et changeSet..  
7ce0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
7cf0: 20 20 20 20 20 7b 0d 0a 0d 0a 20 20 20 20 20 20       {....      
7d00: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
7d10: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
7d20: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
7d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7d70: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 45        #region IE
7d80: 6e 75 6d 65 72 61 74 6f 72 3c 49 53 51 4c 69 74  numerator<ISQLit
7d90: 65 43 68 61 6e 67 65 53 65 74 4d 65 74 61 64 61  eChangeSetMetada
7da0: 74 61 49 74 65 6d 3e 20 4d 65 6d 62 65 72 73 0d  taItem> Members.
7db0: 0a 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20  .        public 
7dc0: 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74  ISQLiteChangeSet
7dd0: 4d 65 74 61 64 61 74 61 49 74 65 6d 20 43 75 72  MetadataItem Cur
7de0: 72 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d  rent..        {.
7df0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
7e00: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
7e10: 28 29 3b 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f  (); throw new No
7e20: 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65  tImplementedExce
7e30: 70 74 69 6f 6e 28 29 3b 20 7d 0d 0a 20 20 20 20  ption(); }..    
7e40: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
7e50: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
7e60: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
7e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7eb0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
7ec0: 49 45 6e 75 6d 65 72 61 74 6f 72 20 4d 65 6d 62  IEnumerator Memb
7ed0: 65 72 73 0d 0a 20 20 20 20 20 20 20 20 6f 62 6a  ers..        obj
7ee0: 65 63 74 20 43 6f 6c 6c 65 63 74 69 6f 6e 73 2e  ect Collections.
7ef0: 49 45 6e 75 6d 65 72 61 74 6f 72 2e 43 75 72 72  IEnumerator.Curr
7f00: 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ent..        {..
7f10: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
7f20: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
7f30: 29 3b 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74  ); throw new Not
7f40: 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65 70  ImplementedExcep
7f50: 74 69 6f 6e 28 29 3b 20 7d 0d 0a 20 20 20 20 20  tion(); }..     
7f60: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
7f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fb0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
7fc0: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4d     public bool M
7fd0: 6f 76 65 4e 65 78 74 28 29 0d 0a 20 20 20 20 20  oveNext()..     
7fe0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7ff0: 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
8000: 29 3b 20 74 68 72 6f 77 20 6e 65 77 20 4e 6f 74  ); throw new Not
8010: 49 6d 70 6c 65 6d 65 6e 74 65 64 45 78 63 65 70  ImplementedExcep
8020: 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20  tion();..       
8030: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
8040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8080: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
8090: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 52 65 73   public void Res
80a0: 65 74 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  et()..        {.
80b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65  .            Che
80c0: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 74 68  ckDisposed(); th
80d0: 72 6f 77 20 6e 65 77 20 4e 6f 74 49 6d 70 6c 65  row new NotImple
80e0: 6d 65 6e 74 65 64 45 78 63 65 70 74 69 6f 6e 28  mentedException(
80f0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  );..        }.. 
8100: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
8110: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
8120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8160: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
8170: 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61  #region IDisposa
8180: 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20  ble Members..   
8190: 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
81a0: 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20   Dispose()..    
81b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
81c0: 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
81d0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 47  ;..            G
81e0: 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69  C.SuppressFinali
81f0: 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20  ze(this);..     
8200: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
8210: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
8220: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
8270: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
8280: 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74  Disposable "Patt
8290: 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20  ern" Members..  
82a0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
82b0: 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20  ol disposed;..  
82c0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f        private vo
82d0: 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  id CheckDisposed
82e0: 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  () /* throw */..
82f0: 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20 54          {..#if T
8300: 48 52 4f 57 5f 4f 4e 5f 44 49 53 50 4f 53 45 44  HROW_ON_DISPOSED
8310: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66  ..            if
8320: 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20   (disposed)..   
8330: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8340: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
8350: 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70  w new ObjectDisp
8360: 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a  osedException(..
8370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8380: 20 20 20 20 74 79 70 65 6f 66 28 53 51 4c 69 74      typeof(SQLit
8390: 65 43 68 61 6e 67 65 53 65 74 45 6e 75 6d 65 72  eChangeSetEnumer
83a0: 61 74 6f 72 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20  ator).Name);..  
83b0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 23 65 6e            }..#en
83c0: 64 69 66 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  dif..        }..
83d0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
83e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8420: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
8430: 76 61 74 65 20 2f 2a 20 70 72 6f 74 65 63 74 65  vate /* protecte
8440: 64 20 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f 69  d virtual */ voi
8450: 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64  d Dispose(bool d
8460: 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20  isposing)..     
8470: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8480: 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
8490: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
84a0: 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f        if (!dispo
84b0: 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  sed)..          
84c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
84d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
84e0: 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20  (disposing)..   
84f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8500: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8510: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
8520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8540: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8550: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 69 73            // dis
8560: 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73  pose managed res
8570: 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
8580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8590: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
85a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
85b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
85c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85d0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
85e0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
85f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8610: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
8620: 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73         // releas
8630: 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f  e unmanaged reso
8640: 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
8650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8660: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
8670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
8690: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
86a0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
86b0: 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79           finally
86c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
86d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
86e0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
86f0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 45 76       // NOTE: Ev
8700: 65 72 79 74 68 69 6e 67 20 73 68 6f 75 6c 64 20  erything should 
8710: 62 65 20 66 75 6c 6c 79 20 64 69 73 70 6f 73 65  be fully dispose
8720: 64 20 61 74 20 74 68 69 73 20 70 6f 69 6e 74 2e  d at this point.
8730: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8740: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
8750: 20 20 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d        disposed =
8760: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
8770: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
8780: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
8790: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
87a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
87f0: 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72     #region Destr
8800: 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 7e  uctor..        ~
8810: 53 51 4c 69 74 65 43 68 61 6e 67 65 53 65 74 45  SQLiteChangeSetE
8820: 6e 75 6d 65 72 61 74 6f 72 28 29 0d 0a 20 20 20  numerator()..   
8830: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8840: 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73      Dispose(fals
8850: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  e);..        }..
8860: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
8870: 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23  on..    }..    #
8880: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
8890: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
88a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
88e0: 20 20 20 20 23 72 65 67 69 6f 6e 20 53 51 4c 69      #region SQLi
88f0: 74 65 43 68 61 6e 67 65 53 65 74 4d 65 74 61 64  teChangeSetMetad
8900: 61 74 61 49 74 65 6d 20 43 6c 61 73 73 0d 0a 20  ataItem Class.. 
8910: 20 20 20 70 75 62 6c 69 63 20 73 65 61 6c 65 64     public sealed
8920: 20 63 6c 61 73 73 20 53 51 4c 69 74 65 43 68 61   class SQLiteCha
8930: 6e 67 65 53 65 74 4d 65 74 61 64 61 74 61 49 74  ngeSetMetadataIt
8940: 65 6d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  em..            
8950: 3a 20 49 53 51 4c 69 74 65 43 68 61 6e 67 65 53  : ISQLiteChangeS
8960: 65 74 4d 65 74 61 64 61 74 61 49 74 65 6d 2c 20  etMetadataItem, 
8970: 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 20  IDisposable..   
8980: 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67   {..        #reg
8990: 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61  ion Private Data
89a0: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
89b0: 65 20 49 6e 74 50 74 72 20 69 74 65 72 61 74 6f  e IntPtr iterato
89c0: 72 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  r;..        #end
89d0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
89e0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
89f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
8a30: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
8a40: 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72  vate Constructor
8a50: 73 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  s..        inter
8a60: 6e 61 6c 20 53 51 4c 69 74 65 43 68 61 6e 67 65  nal SQLiteChange
8a70: 53 65 74 4d 65 74 61 64 61 74 61 49 74 65 6d 28  SetMetadataItem(
8a80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 6e  ..            In
8a90: 74 50 74 72 20 69 74 65 72 61 74 6f 72 0d 0a 20  tPtr iterator.. 
8aa0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
8ab0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8ac0: 20 20 20 20 20 74 68 69 73 2e 69 74 65 72 61 74       this.iterat
8ad0: 6f 72 20 3d 20 69 74 65 72 61 74 6f 72 3b 0d 0a  or = iterator;..
8ae0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
8af0: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
8b00: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
8b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
8b60: 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68  ion Private Meth
8b70: 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ods..        pri
8b80: 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 48  vate void CheckH
8b90: 61 6e 64 6c 65 28 29 0d 0a 20 20 20 20 20 20 20  andle()..       
8ba0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8bb0: 69 66 20 28 69 74 65 72 61 74 6f 72 20 3d 3d 20  if (iterator == 
8bc0: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
8bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
8be0: 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f  row new InvalidO
8bf0: 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f  perationExceptio
8c00: 6e 28 22 69 74 65 72 61 74 6f 72 20 69 73 20 6e  n("iterator is n
8c10: 6f 74 20 6f 70 65 6e 22 29 3b 0d 0a 20 20 20 20  ot open");..    
8c20: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
8c30: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
8c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8c70: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
8c80: 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
8c90: 20 50 6f 70 75 6c 61 74 65 4f 70 65 72 61 74 69   PopulateOperati
8ca0: 6f 6e 4d 65 74 61 64 61 74 61 28 29 0d 0a 20 20  onMetadata()..  
8cb0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8cc0: 20 20 20 20 20 69 66 20 28 28 74 61 62 6c 65 4e       if ((tableN
8cd0: 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20  ame == null) || 
8ce0: 28 6e 75 6d 62 65 72 4f 66 43 6f 6c 75 6d 6e 73  (numberOfColumns
8cf0: 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 0d 0a 20 20   == null) ||..  
8d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f                (o
8d10: 70 65 72 61 74 69 6f 6e 43 6f 64 65 20 3d 3d 20  perationCode == 
8d20: 6e 75 6c 6c 29 20 7c 7c 20 28 69 6e 64 69 72 65  null) || (indire
8d30: 63 74 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20  ct == null))..  
8d40: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
8d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
8d60: 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20  ckHandle();.... 
8d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
8d80: 6e 74 50 74 72 20 70 54 62 6c 4e 61 6d 65 20 3d  ntPtr pTblName =
8d90: 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 20   IntPtr.Zero;.. 
8da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
8db0: 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 41  QLiteAuthorizerA
8dc0: 63 74 69 6f 6e 43 6f 64 65 20 6f 70 20 3d 20 53  ctionCode op = S
8dd0: 51 4c 69 74 65 41 75 74 68 6f 72 69 7a 65 72 41  QLiteAuthorizerA
8de0: 63 74 69 6f 6e 43 6f 64 65 2e 4e 6f 6e 65 3b 0d  ctionCode.None;.
8df0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8e00: 20 69 6e 74 20 62 49 6e 64 69 72 65 63 74 20 3d   int bIndirect =
8e10: 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0;..           
8e20: 20 20 20 20 20 69 6e 74 20 6e 43 6f 6c 75 6d 6e       int nColumn
8e30: 73 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20  s = 0;....      
8e40: 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74 65            SQLite
8e50: 45 72 72 6f 72 43 6f 64 65 20 72 63 20 3d 20 55  ErrorCode rc = U
8e60: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
8e70: 64 73 2e 73 71 6c 69 74 65 33 63 68 61 6e 67 65  ds.sqlite3change
8e80: 73 65 74 5f 6f 70 28 0d 0a 20 20 20 20 20 20 20  set_op(..       
8e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 74 65               ite
8ea0: 72 61 74 6f 72 2c 20 72 65 66 20 70 54 62 6c 4e  rator, ref pTblN
8eb0: 61 6d 65 2c 20 72 65 66 20 6e 43 6f 6c 75 6d 6e  ame, ref nColumn
8ec0: 73 2c 20 72 65 66 20 6f 70 2c 0d 0a 20 20 20 20  s, ref op,..    
8ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ee0: 72 65 66 20 62 49 6e 64 69 72 65 63 74 29 3b 0d  ref bIndirect);.
8ef0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8f00: 20 20 20 69 66 20 28 72 63 20 21 3d 20 53 51 4c     if (rc != SQL
8f10: 69 74 65 45 72 72 6f 72 43 6f 64 65 2e 4f 6b 29  iteErrorCode.Ok)
8f20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8f30: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
8f40: 53 51 4c 69 74 65 45 78 63 65 70 74 69 6f 6e 28  SQLiteException(
8f50: 72 63 2c 20 22 73 71 6c 69 74 65 33 63 68 61 6e  rc, "sqlite3chan
8f60: 67 65 73 65 74 5f 6f 70 22 29 3b 0d 0a 0d 0a 20  geset_op");.... 
8f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
8f80: 61 62 6c 65 4e 61 6d 65 20 3d 20 53 51 4c 69 74  ableName = SQLit
8f90: 65 53 74 72 69 6e 67 2e 53 74 72 69 6e 67 46 72  eString.StringFr
8fa0: 6f 6d 55 74 66 38 49 6e 74 50 74 72 28 70 54 62  omUtf8IntPtr(pTb
8fb0: 6c 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20  lName);..       
8fc0: 20 20 20 20 20 20 20 20 20 6e 75 6d 62 65 72 4f           numberO
8fd0: 66 43 6f 6c 75 6d 6e 73 20 3d 20 6e 43 6f 6c 75  fColumns = nColu
8fe0: 6d 6e 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  mns;..          
8ff0: 20 20 20 20 20 20 6f 70 65 72 61 74 69 6f 6e 43        operationC
9000: 6f 64 65 20 3d 20 6f 70 3b 0d 0a 20 20 20 20 20  ode = op;..     
9010: 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 69 72             indir
9020: 65 63 74 20 3d 20 28 62 49 6e 64 69 72 65 63 74  ect = (bIndirect
9030: 20 21 3d 20 30 29 3b 0d 0a 20 20 20 20 20 20 20   != 0);..       
9040: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9050: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  }....        ///
9060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90a0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
90b0: 70 72 69 76 61 74 65 20 76 6f 69 64 20 50 6f 70  private void Pop
90c0: 75 6c 61 74 65 50 72 69 6d 61 72 79 4b 65 79 43  ulatePrimaryKeyC
90d0: 6f 6c 75 6d 6e 73 28 29 0d 0a 20 20 20 20 20 20  olumns()..      
90e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
90f0: 20 69 66 20 28 70 72 69 6d 61 72 79 4b 65 79 43   if (primaryKeyC
9100: 6f 6c 75 6d 6e 73 20 3d 3d 20 6e 75 6c 6c 29 0d  olumns == null).
9110: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
9120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9130: 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a  CheckHandle();..
9140: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9150: 20 20 49 6e 74 50 74 72 20 70 50 72 69 6d 61 72    IntPtr pPrimar
9160: 79 4b 65 79 73 20 3d 20 49 6e 74 50 74 72 2e 5a  yKeys = IntPtr.Z
9170: 65 72 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ero;..          
9180: 20 20 20 20 20 20 69 6e 74 20 6e 43 6f 6c 75 6d        int nColum
9190: 6e 73 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20  ns = 0;....     
91a0: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
91b0: 65 45 72 72 6f 72 43 6f 64 65 20 72 63 20 3d 20  eErrorCode rc = 
91c0: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
91d0: 6f 64 73 2e 73 71 6c 69 74 65 33 63 68 61 6e 67  ods.sqlite3chang
91e0: 65 73 65 74 5f 70 6b 28 0d 0a 20 20 20 20 20 20  eset_pk(..      
91f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 74                it
9200: 65 72 61 74 6f 72 2c 20 72 65 66 20 70 50 72 69  erator, ref pPri
9210: 6d 61 72 79 4b 65 79 73 2c 20 72 65 66 20 6e 43  maryKeys, ref nC
9220: 6f 6c 75 6d 6e 73 29 3b 0d 0a 0d 0a 20 20 20 20  olumns);....    
9230: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9240: 72 63 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f  rc != SQLiteErro
9250: 72 43 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20  rCode.Ok)..     
9260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
9270: 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65 45  hrow new SQLiteE
9280: 78 63 65 70 74 69 6f 6e 28 72 63 2c 20 22 73 71  xception(rc, "sq
9290: 6c 69 74 65 33 63 68 61 6e 67 65 73 65 74 5f 70  lite3changeset_p
92a0: 6b 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  k");....        
92b0: 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 62          byte[] b
92c0: 79 74 65 73 20 3d 20 53 51 4c 69 74 65 42 79 74  ytes = SQLiteByt
92d0: 65 73 2e 46 72 6f 6d 49 6e 74 50 74 72 28 70 50  es.FromIntPtr(pP
92e0: 72 69 6d 61 72 79 4b 65 79 73 2c 20 6e 43 6f 6c  rimaryKeys, nCol
92f0: 75 6d 6e 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  umns);....      
9300: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 79            if (by
9310: 74 65 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  tes != null)..  
9320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
9330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9340: 20 20 20 20 20 70 72 69 6d 61 72 79 4b 65 79 43       primaryKeyC
9350: 6f 6c 75 6d 6e 73 20 3d 20 6e 65 77 20 62 6f 6f  olumns = new boo
9360: 6c 5b 6e 43 6f 6c 75 6d 6e 73 5d 3b 0d 0a 0d 0a  l[nColumns];....
9370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9380: 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64      for (int ind
9390: 65 78 20 3d 20 30 3b 20 69 6e 64 65 78 20 3c 20  ex = 0; index < 
93a0: 62 79 74 65 73 2e 4c 65 6e 67 74 68 3b 20 69 6e  bytes.Length; in
93b0: 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20  dex++)..        
93c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
93d0: 70 72 69 6d 61 72 79 4b 65 79 43 6f 6c 75 6d 6e  primaryKeyColumn
93e0: 73 5b 69 6e 64 65 78 5d 20 3d 20 28 62 79 74 65  s[index] = (byte
93f0: 73 5b 69 6e 64 65 78 5d 20 21 3d 20 30 29 3b 0d  s[index] != 0);.
9400: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9410: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
9420: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  }..        }....
9430: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
9440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9450: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
9480: 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
9490: 74 65 20 76 6f 69 64 20 50 6f 70 75 6c 61 74 65  te void Populate
94a0: 4e 75 6d 62 65 72 4f 66 46 6f 72 65 69 67 6e 4b  NumberOfForeignK
94b0: 65 79 43 6f 6e 66 6c 69 63 74 73 28 29 0d 0a 20  eyConflicts().. 
94c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
94d0: 20 20 20 20 20 20 69 66 20 28 6e 75 6d 62 65 72        if (number
94e0: 4f 66 46 6f 72 65 69 67 6e 4b 65 79 43 6f 6e 66  OfForeignKeyConf
94f0: 6c 69 63 74 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  licts == null)..
9500: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
9510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
9520: 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d 0a 0d  heckHandle();...
9530: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9540: 20 69 6e 74 20 63 6f 6e 66 6c 69 63 74 73 20 3d   int conflicts =
9550: 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   0;....         
9560: 20 20 20 20 20 20 20 53 51 4c 69 74 65 45 72 72         SQLiteErr
9570: 6f 72 43 6f 64 65 20 72 63 20 3d 0d 0a 20 20 20  orCode rc =..   
9580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9590: 20 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74   UnsafeNativeMet
95a0: 68 6f 64 73 2e 73 71 6c 69 74 65 33 63 68 61 6e  hods.sqlite3chan
95b0: 67 65 73 65 74 5f 66 6b 5f 63 6f 6e 66 6c 69 63  geset_fk_conflic
95c0: 74 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ts(..           
95d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 74 65               ite
95e0: 72 61 74 6f 72 2c 20 72 65 66 20 63 6f 6e 66 6c  rator, ref confl
95f0: 69 63 74 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  icts);....      
9600: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 63            if (rc
9610: 20 21 3d 20 53 51 4c 69 74 65 45 72 72 6f 72 43   != SQLiteErrorC
9620: 6f 64 65 2e 4f 6b 29 0d 0a 20 20 20 20 20 20 20  ode.Ok)..       
9630: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9650: 74 68 72 6f 77 20 6e 65 77 20 53 51 4c 69 74 65  throw new SQLite
9660: 45 78 63 65 70 74 69 6f 6e 28 72 63 2c 0d 0a 20  Exception(rc,.. 
9670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9680: 20 20 20 20 20 20 20 22 73 71 6c 69 74 65 33 63         "sqlite3c
9690: 68 61 6e 67 65 73 65 74 5f 66 6b 5f 63 6f 6e 66  hangeset_fk_conf
96a0: 6c 69 63 74 73 22 29 3b 0d 0a 20 20 20 20 20 20  licts");..      
96b0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
96c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
96d0: 75 6d 62 65 72 4f 66 46 6f 72 65 69 67 6e 4b 65  umberOfForeignKe
96e0: 79 43 6f 6e 66 6c 69 63 74 73 20 3d 20 63 6f 6e  yConflicts = con
96f0: 66 6c 69 63 74 73 3b 0d 0a 20 20 20 20 20 20 20  flicts;..       
9700: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
9710: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
9720: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
9730: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
9740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9770: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
9780: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 53 51 4c      #region ISQL
9790: 69 74 65 43 68 61 6e 67 65 53 65 74 4d 65 74 61  iteChangeSetMeta
97a0: 64 61 74 61 49 74 65 6d 20 4d 65 6d 62 65 72 73  dataItem Members
97b0: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
97c0: 65 20 73 74 72 69 6e 67 20 74 61 62 6c 65 4e 61  e string tableNa
97d0: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75 62  me;..        pub
97e0: 6c 69 63 20 73 74 72 69 6e 67 20 54 61 62 6c 65  lic string Table
97f0: 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d  Name..        {.
9800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74  .            get
9810: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
9820: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9830: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
9840: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
9850: 20 20 20 50 6f 70 75 6c 61 74 65 4f 70 65 72 61     PopulateOpera
9860: 74 69 6f 6e 4d 65 74 61 64 61 74 61 28 29 3b 0d  tionMetadata();.
9870: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9880: 20 20 20 72 65 74 75 72 6e 20 74 61 62 6c 65 4e     return tableN
9890: 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
98a0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
98b0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
98c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
98f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9900: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
9910: 76 61 74 65 20 69 6e 74 3f 20 6e 75 6d 62 65 72  vate int? number
9920: 4f 66 43 6f 6c 75 6d 6e 73 3b 0d 0a 20 20 20 20  OfColumns;..    
9930: 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20 4e      public int N
9940: 75 6d 62 65 72 4f 66 43 6f 6c 75 6d 6e 73 0d 0a  umberOfColumns..
9950: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9960: 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20         get..    
9970: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9980: 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
9990: 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20  Disposed();..   
99a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 50 6f 70               Pop
99b0: 75 6c 61 74 65 4f 70 65 72 61 74 69 6f 6e 4d 65  ulateOperationMe
99c0: 74 61 64 61 74 61 28 29 3b 0d 0a 0d 0a 20 20 20  tadata();....   
99d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
99e0: 75 72 6e 20 28 69 6e 74 29 6e 75 6d 62 65 72 4f  urn (int)numberO
99f0: 66 43 6f 6c 75 6d 6e 73 3b 0d 0a 20 20 20 20 20  fColumns;..     
9a00: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
9a10: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
9a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9a60: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
9a70: 20 20 70 72 69 76 61 74 65 20 53 51 4c 69 74 65    private SQLite
9a80: 41 75 74 68 6f 72 69 7a 65 72 41 63 74 69 6f 6e  AuthorizerAction
9a90: 43 6f 64 65 3f 20 6f 70 65 72 61 74 69 6f 6e 43  Code? operationC
9aa0: 6f 64 65 3b 0d 0a 20 20 20 20 20 20 20 20 70 75  ode;..        pu
9ab0: 62 6c 69 63 20 53 51 4c 69 74 65 41 75 74 68 6f  blic SQLiteAutho
9ac0: 72 69 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65 20  rizerActionCode 
9ad0: 4f 70 65 72 61 74 69 6f 6e 43 6f 64 65 0d 0a 20  OperationCode.. 
9ae0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9af0: 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
9b00: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9b10: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
9b20: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20  isposed();..    
9b30: 20 20 20 20 20 20 20 20 20 20 20 20 50 6f 70 75              Popu
9b40: 6c 61 74 65 4f 70 65 72 61 74 69 6f 6e 4d 65 74  lateOperationMet
9b50: 61 64 61 74 61 28 29 3b 0d 0a 0d 0a 20 20 20 20  adata();....    
9b60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
9b70: 72 6e 20 28 53 51 4c 69 74 65 41 75 74 68 6f 72  rn (SQLiteAuthor
9b80: 69 7a 65 72 41 63 74 69 6f 6e 43 6f 64 65 29 6f  izerActionCode)o
9b90: 70 65 72 61 74 69 6f 6e 43 6f 64 65 3b 0d 0a 20  perationCode;.. 
9ba0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
9bb0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
9bc0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
9c10: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
9c20: 6f 6c 3f 20 69 6e 64 69 72 65 63 74 3b 0d 0a 20  ol? indirect;.. 
9c30: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
9c40: 6f 6c 20 49 6e 64 69 72 65 63 74 0d 0a 20 20 20  ol Indirect..   
9c50: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9c60: 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
9c70: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9c80: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
9c90: 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
9ca0: 20 20 20 20 20 20 20 20 20 20 50 6f 70 75 6c 61            Popula
9cb0: 74 65 4f 70 65 72 61 74 69 6f 6e 4d 65 74 61 64  teOperationMetad
9cc0: 61 74 61 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ata();....      
9cd0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
9ce0: 20 28 62 6f 6f 6c 29 69 6e 64 69 72 65 63 74 3b   (bool)indirect;
9cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
9d00: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
9d10: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
9d60: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
9d70: 20 62 6f 6f 6c 5b 5d 20 70 72 69 6d 61 72 79 4b   bool[] primaryK
9d80: 65 79 43 6f 6c 75 6d 6e 73 3b 0d 0a 20 20 20 20  eyColumns;..    
9d90: 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 5b      public bool[
9da0: 5d 20 50 72 69 6d 61 72 79 4b 65 79 43 6f 6c 75  ] PrimaryKeyColu
9db0: 6d 6e 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  mns..        {..
9dc0: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d              get.
9dd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
9de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9df0: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
9e00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9e10: 20 20 50 6f 70 75 6c 61 74 65 50 72 69 6d 61 72    PopulatePrimar
9e20: 79 4b 65 79 43 6f 6c 75 6d 6e 73 28 29 3b 0d 0a  yKeyColumns();..
9e30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9e40: 20 20 72 65 74 75 72 6e 20 70 72 69 6d 61 72 79    return primary
9e50: 4b 65 79 43 6f 6c 75 6d 6e 73 3b 0d 0a 20 20 20  KeyColumns;..   
9e60: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
9e70: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
9e80: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
9e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ec0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
9ed0: 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74      public SQLit
9ee0: 65 56 61 6c 75 65 20 47 65 74 4f 6c 64 56 61 6c  eValue GetOldVal
9ef0: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
9f00: 20 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65 78   int columnIndex
9f10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
9f20: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
9f30: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
9f40: 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
9f50: 20 20 20 20 20 20 43 68 65 63 6b 48 61 6e 64 6c        CheckHandl
9f60: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
9f70: 20 20 20 20 49 6e 74 50 74 72 20 70 56 61 6c 75      IntPtr pValu
9f80: 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b  e = IntPtr.Zero;
9f90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
9fa0: 53 51 4c 69 74 65 45 72 72 6f 72 43 6f 64 65 20  SQLiteErrorCode 
9fb0: 72 63 20 3d 20 55 6e 73 61 66 65 4e 61 74 69 76  rc = UnsafeNativ
9fc0: 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69 74 65 33  eMethods.sqlite3
9fd0: 63 68 61 6e 67 65 73 65 74 5f 6f 6c 64 28 0d 0a  changeset_old(..
9fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ff0: 69 74 65 72 61 74 6f 72 2c 20 63 6f 6c 75 6d 6e  iterator, column
a000: 49 6e 64 65 78 2c 20 72 65 66 20 70 56 61 6c 75  Index, ref pValu
a010: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
a020: 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
a030: 56 61 6c 75 65 2e 46 72 6f 6d 49 6e 74 50 74 72  Value.FromIntPtr
a040: 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  (pValue);..     
a050: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
a060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
a0b0: 20 20 20 70 75 62 6c 69 63 20 53 51 4c 69 74 65     public SQLite
a0c0: 56 61 6c 75 65 20 47 65 74 4e 65 77 56 61 6c 75  Value GetNewValu
a0d0: 65 28 69 6e 74 20 63 6f 6c 75 6d 6e 49 6e 64 65  e(int columnInde
a0e0: 78 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  x)..        {.. 
a0f0: 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
a100: 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20  Disposed();..   
a110: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 48 61           CheckHa
a120: 6e 64 6c 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ndle();....     
a130: 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 70 56         IntPtr pV
a140: 61 6c 75 65 20 3d 20 49 6e 74 50 74 72 2e 5a 65  alue = IntPtr.Ze
a150: 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ro;....         
a160: 20 20 20 53 51 4c 69 74 65 45 72 72 6f 72 43 6f     SQLiteErrorCo
a170: 64 65 20 72 63 20 3d 20 55 6e 73 61 66 65 4e 61  de rc = UnsafeNa
a180: 74 69 76 65 4d 65 74 68 6f 64 73 2e 73 71 6c 69  tiveMethods.sqli
a190: 74 65 33 63 68 61 6e 67 65 73 65 74 5f 6e 65 77  te3changeset_new
a1a0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
a1b0: 20 20 20 69 74 65 72 61 74 6f 72 2c 20 63 6f 6c     iterator, col
a1c0: 75 6d 6e 49 6e 64 65 78 2c 20 72 65 66 20 70 56  umnIndex, ref pV
a1d0: 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
a1e0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 51 4c        return SQL
a1f0: 69 74 65 56 61 6c 75 65 2e 46 72 6f 6d 49 6e 74  iteValue.FromInt
a200: 50 74 72 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20  Ptr(pValue);..  
a210: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
a220: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
a270: 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 51 4c        public SQL
a280: 69 74 65 56 61 6c 75 65 20 47 65 74 43 6f 6e 66  iteValue GetConf
a290: 6c 69 63 74 56 61 6c 75 65 28 69 6e 74 20 63 6f  lictValue(int co
a2a0: 6c 75 6d 6e 49 6e 64 65 78 29 0d 0a 20 20 20 20  lumnIndex)..    
a2b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a2c0: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
a2d0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
a2e0: 20 43 68 65 63 6b 48 61 6e 64 6c 65 28 29 3b 0d   CheckHandle();.
a2f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49  ...            I
a300: 6e 74 50 74 72 20 70 56 61 6c 75 65 20 3d 20 49  ntPtr pValue = I
a310: 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d 0a 0d 0a 20  ntPtr.Zero;.... 
a320: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 69 74             SQLit
a330: 65 45 72 72 6f 72 43 6f 64 65 20 72 63 20 3d 20  eErrorCode rc = 
a340: 55 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68  UnsafeNativeMeth
a350: 6f 64 73 2e 73 71 6c 69 74 65 33 63 68 61 6e 67  ods.sqlite3chang
a360: 65 73 65 74 5f 63 6f 6e 66 6c 69 63 74 28 0d 0a  eset_conflict(..
a370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a380: 69 74 65 72 61 74 6f 72 2c 20 63 6f 6c 75 6d 6e  iterator, column
a390: 49 6e 64 65 78 2c 20 72 65 66 20 70 56 61 6c 75  Index, ref pValu
a3a0: 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
a3b0: 20 20 20 72 65 74 75 72 6e 20 53 51 4c 69 74 65     return SQLite
a3c0: 56 61 6c 75 65 2e 46 72 6f 6d 49 6e 74 50 74 72  Value.FromIntPtr
a3d0: 28 70 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  (pValue);..     
a3e0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
a3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a430: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
a440: 20 20 20 70 72 69 76 61 74 65 20 69 6e 74 3f 20     private int? 
a450: 6e 75 6d 62 65 72 4f 66 46 6f 72 65 69 67 6e 4b  numberOfForeignK
a460: 65 79 43 6f 6e 66 6c 69 63 74 73 3b 0d 0a 20 20  eyConflicts;..  
a470: 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74        public int
a480: 20 4e 75 6d 62 65 72 4f 66 46 6f 72 65 69 67 6e   NumberOfForeign
a490: 4b 65 79 43 6f 6e 66 6c 69 63 74 73 0d 0a 20 20  KeyConflicts..  
a4a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
a4b0: 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
a4c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
a4d0: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
a4e0: 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20  sposed();..     
a4f0: 20 20 20 20 20 20 20 20 20 20 20 50 6f 70 75 6c             Popul
a500: 61 74 65 4e 75 6d 62 65 72 4f 66 46 6f 72 65 69  ateNumberOfForei
a510: 67 6e 4b 65 79 43 6f 6e 66 6c 69 63 74 73 28 29  gnKeyConflicts()
a520: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a530: 20 20 20 20 20 72 65 74 75 72 6e 20 28 69 6e 74       return (int
a540: 29 6e 75 6d 62 65 72 4f 66 46 6f 72 65 69 67 6e  )numberOfForeign
a550: 4b 65 79 43 6f 6e 66 6c 69 63 74 73 3b 0d 0a 20  KeyConflicts;.. 
a560: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
a570: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
a580: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
a590: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
a5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
a5e0: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
a5f0: 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65  n IDisposable Me
a600: 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 70  mbers..        p
a610: 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
a620: 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d  se()..        {.
a630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73  .            Dis
a640: 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20  pose(true);..   
a650: 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70           GC.Supp
a660: 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69  ressFinalize(thi
a670: 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  s);..        }..
a680: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
a690: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
a6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a6e0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
a6f0: 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73   #region IDispos
a700: 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d  able "Pattern" M
a710: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
a720: 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73  private bool dis
a730: 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20  posed;..        
a740: 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68 65  private void Che
a750: 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a 20  ckDisposed() /* 
a760: 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
a770: 20 20 7b 0d 0a 23 69 66 20 54 48 52 4f 57 5f 4f    {..#if THROW_O
a780: 4e 5f 44 49 53 50 4f 53 45 44 0d 0a 20 20 20 20  N_DISPOSED..    
a790: 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73 70          if (disp
a7a0: 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20  osed)..         
a7b0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
a7c0: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
a7d0: 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78  ObjectDisposedEx
a7e0: 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  ception(..      
a7f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79                ty
a800: 70 65 6f 66 28 53 51 4c 69 74 65 43 68 61 6e 67  peof(SQLiteChang
a810: 65 53 65 74 4d 65 74 61 64 61 74 61 49 74 65 6d  eSetMetadataItem
a820: 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  ).Name);..      
a830: 20 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d        }..#endif.
a840: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20  .        }....  
a850: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
a860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
a8a0: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
a8b0: 20 2f 2a 20 70 72 6f 74 65 63 74 65 64 20 76 69   /* protected vi
a8c0: 72 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20 44 69  rtual */ void Di
a8d0: 73 70 6f 73 65 28 62 6f 6f 6c 20 64 69 73 70 6f  spose(bool dispo
a8e0: 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 7b  sing)..        {
a8f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72  ..            tr
a900: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
a910: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a920: 20 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29    if (!disposed)
a930: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a940: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a950: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73           if (dis
a960: 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
a970: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
a980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a990: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
a9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
a9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a9d0: 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65        // dispose
a9e0: 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63   managed resourc
a9f0: 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
aa00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa10: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
aa20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa30: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
aa40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa50: 20 20 20 20 69 66 20 28 69 74 65 72 61 74 6f 72      if (iterator
aa60: 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29   != IntPtr.Zero)
aa70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aa80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 74                it
aa90: 65 72 61 74 6f 72 20 3d 20 49 6e 74 50 74 72 2e  erator = IntPtr.
aaa0: 5a 65 72 6f 3b 20 2f 2a 20 4e 4f 54 20 4f 57 4e  Zero; /* NOT OWN
aab0: 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
aac0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
aad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aae0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
aaf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
ab10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab20: 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e  // release unman
ab30: 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
ab40: 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
ab50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
ab60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab80: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
ab90: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
aba0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
abb0: 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20 20 20    finally..     
abc0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
abd0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
abe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
abf0: 20 4e 4f 54 45 3a 20 45 76 65 72 79 74 68 69 6e   NOTE: Everythin
ac00: 67 20 73 68 6f 75 6c 64 20 62 65 20 66 75 6c 6c  g should be full
ac10: 79 20 64 69 73 70 6f 73 65 64 20 61 74 20 74 68  y disposed at th
ac20: 69 73 20 70 6f 69 6e 74 2e 0d 0a 20 20 20 20 20  is point...     
ac30: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
ac40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
ac50: 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  isposed = true;.
ac60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
ac70: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
ac80: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
ac90: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
aca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
acd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ace0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
acf0: 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a  ion Destructor..
ad00: 20 20 20 20 20 20 20 20 7e 53 51 4c 69 74 65 43          ~SQLiteC
ad10: 68 61 6e 67 65 53 65 74 4d 65 74 61 64 61 74 61  hangeSetMetadata
ad20: 49 74 65 6d 28 29 0d 0a 20 20 20 20 20 20 20 20  Item()..        
ad30: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 44  {..            D
ad40: 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a  ispose(false);..
ad50: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
ad60: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20     #endregion.. 
ad70: 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65     }..    #endre
ad80: 67 69 6f 6e 0d 0a 7d 0d 0a                       gion..}..